目录
一、ARP协议
二、ARP协议通信过程
应用情景一:同一广播域内通信
(1)第一步:ARP协议通信
1.交换机接受消息
2.电脑2接收到广播消息
3.电脑2回复
4.交换机转发回复给电脑1
5.电脑1记录
(2)第二步:二层网络设备通信
应用情景二:跨广播域内通信
三、ARP协议对ICMP协议的影响
一、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表里。记录内容如下:
internet地址 | 物理地址 | 类型 |
电脑2ip地址 | 电脑2mac地址 | 动态/静态 |
(2)第二步:二层网络设备通信
第一步只是ICMP检测。那后面电脑1和电脑2再通信,交换机真正转发有正文的消息时,又怎么知道该发给哪个设备呢?
电脑1发消息给设备电脑2:
- 电脑1先发消息给交换机 ###消息包含“发件者-电脑1”和“收件者-电脑2”的mac地址
- 交换机记录电脑1,关联"电脑1的mac地址"和其连接到交换机的接口1 ###mac地址组成:24位“生产厂家标识码”+24位“设备自定义标识码”。每1位都是十六进制,十六进制数字是0~9、a、b、c、d、e、f
- 交换机泛洪,发广播消息 ###因为交换机不知道电脑2是哪个设备,只有这样了
- 电脑2收到并回复,其他设备收到不回复
电脑2回复消息给电脑1:
- 电脑2先发消息给交换机 ###消息包含“发件者-电脑2”和“收件者-电脑1”的mac地址
- 交换机记录电脑2,关联"电脑2的mac地址"和其连接到交换机的接口2
- 交换机查看记录信息,找到电脑1关联的接口1,转发消息给电脑1
交换机现在记录了电脑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了。