<>ARP解析过程

同网段通信

1.将源IP和目标IP与掩码相与,判断是否在同一个网段
2.主机先查看自己的ARP表,如果有对应的ARP条目,则会利用表中MAC地址,直接对IP数据包进行封装,并将数据包转发给目标主机
若没有查找的相应的ARP表项,那么就会进行以下步骤

2.1主机A发送ARP Request广播报文,源MAC为自身的MAC,目的MAC为全F的广播MAC。Target IP为目的IP,Target
MAC为全0的MAC。

2.2主机B收到ARP Request 报文,发现Target IP是自己接口的IP,会发送一个ARP Reply 报文,并通过ARP
Request报文中的sender IP和sender MAC来更新自己的ARP表项。

2.3主机A收到ARP Reply 报文发现Target IP是自己的接口IP并且自身ARP缓存表中存在相应的ARP请求信息,并通过ARP
Reply报文中的sender IP和sender MAC来更新自己的ARP表,同时将数据包进行二层封装后发送出去。

跨网段通信

1。PC1先将目标IP与自身掩码相与,发现该网段与自身网段不同,且自身ARP缓存表中无网关缓存条目,此时就会发送一个ARP
Request广播报文,请求网关的MAC地址,并且在本地ARP缓存中生成一条MAC全为0的临时条目。

2.路由器收到ARP Request的广播报文,发现Target IP是自己的接口IP,回应一个ARP
Reply的单播报文,通过Request报文中sender IP和sender MAC来更新自己的ARP表,然后开始发送icmp的请求报文。

3.收到ARP Reply报文,发现Target IP是自己的接口IP,并且自己的ARP缓存表中有相应的ARP请求信息,通过ARP
Reply报文中的信息来对自己的ARP缓存表进行更新,建立连接之后会开始发ICMP报文。

4.路由器收到了ICMP请求报文之后解封装该报文,根据目的IP查找本地路由表,结果发现是直连路由,但是本地ARP缓存中并没有PC2的MAC地址,此时有需要发送ARP
Request 请求,在本地生成一条全0的TargetMAC的临时条目。

5.pc2收到arp request报文后,发现target ip是自己 接口的ip,发送一个arp reply单播报文,并且根据arp
request中的sender ip和sender mac来更新自己的arp表

6.路由器收到arp reply报文,发现target ip是自己的 ip,通过arp request报文中的sender ip和sender mac
来更新自己的arp表,开始发送去往pc2的icmp请求报文

7.pc2收到报文后,解封装该报文,发现目的ip是自 己,接受该报文,发送icmp的回应报文,源ip与自己的
掩码相与,发现与自己是不同网段,所以要把该报文发给 网关,通过自己的arp表中的条目来封装二层头部,并发 送该报文

8.路由器收到icmp回应报文,解封装该报文,发现目 的ip不是自己,查路由表发现是直连网段,并且arp表中
有pc1的条目,根据arp表来封装icmp报文并从直连接口 发送出去

9.pc1收到icmp的回应报文,解封装该报文,发现目的 ip是自己,并接收该报文

一次路由,多次交换,源目ip不变,源目MAC逐跳变, ARP帮助路由打通下一跳

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信