目录
一、ARP协议
ARP是TCP/IP模型中的三层(网络层)通信协议
ARP协议即地址解析协议,可以通过IP地址找到MAC地址;
ARP协议的作用:第1次发消息给陌生设备时,借助ARP协议,能通过陌生设备的IP地址,找到陌生设备MAC地址。
二、ARP协议通信过程
应用情景一:同一广播域内通信
电脑1和电脑2从未发过消息,彼此是陌生设备。在电脑1上ping电脑2的ip地址,电脑1怎么就通过ip地址找到电脑2呢?
(1)第一步:ARP协议通信
电脑1想发送消息给电脑2
消息包含:电脑1mac地址、电脑1ip地址、电脑2ip地址、电脑2临时MAC地址(因为不知道电脑2mac地址,所以全部用F填充,FFFFFFFFFFFFFFFFF)
1.交换机接受消息
泛洪
2.电脑2接收到广播消息
第1步:记录“电脑1mac地址、电脑1ip地址”到ARP表中。ARP表如下,cmd中输入arp -a也能看到
第2步:记录自己mac地址到回复消息里
先核对消息中“电脑2ip地址”是否是自己的ip地址(internet)。如果是,就去查ARP表,找到自己的mac地址(物理),然后记录到回复消息里。
3.电脑2回复
回复消息包含:电脑2mac地址、电脑2ip地址、电脑1ip地址、电脑1mac地址
4.交换机转发回复给电脑1
单播,通过mac地址找到电脑2
5.电脑1记录
记录电脑2mac地址和电脑2ip地址,到本地的arp表里。记录内容如下:
(2)第二步:二层网络设备通信
第一步只是ICMP检测。那后面电脑1和电脑2再通信,交换机真正转发有正文的消息时,又怎么知道该发给哪个设备呢?
应用情景二:跨广播域内通信
和应用情景一是一样的原理,只不过中间多了个三层通信设备路由器。路由器转发后,也是再利用交换机泛洪
三、ARP协议对ICMP协议的影响
对使用ICMP协议与一个陌生设备通信时有影响。比如ping www.xxxhub.com,之前我从未访问过这个网站。ping了会通信4次,前面1、2次可能回复“无法连接目标主机”,第2或3次才正常回复。
为啥呢?
因为一开始不知道www.xxxhub.com的mac地址,会先进行ARP协议通信,解析到mac地址;
而前面1、2次ICMP通信时,可能ARP通信还没完成,本机还不知道www.xxxhub.com的mac地址,所以找不到目标主机;
第2或3次ICMP通信时,ARP协议通信已经完成了,就ok了。