设2个用户第一次连接,互相不知道双方的MAC地址,且路由器也是新的

image.png

1:现在Host A想要发送数据给Host B,但是只知道对方的IP地址,于是发出arp广播包。四要素分别为:

  1. 源IP 192.168.1.1/24

  2. 目标IP 192.168.2.2/24

  3. 源MAC 00-11-12-21-11-11

  4. 目标MAC ff-ff-ff-ff-ff-ff

2 :RA收到后将HostA的MAC地址与对应的接口记录到R1路由表中,后用单播回复Host A,四要素 为

  1. 源IP 192.168.1.1/24

  2. 目标IP 192.168.1.2/24

  3. 源MAC 00-11-12-21-22-22

  4. 目标MAC 00-11-12-21-11-11

3:  HostA收到后将网关的MAC地址与接口号记录到arp缓存表中,重新向HostB发送数据帧,四要素为:

  1. 源IP 192.168.1.2/24

  2. 目标IP 192.168.2.2/24

  3. 源MAC 00-11-12-21-11-11

  4. 目标MAC 00-11-12-21-22-22

4: RA的E0端口接收到数据帧 确认MAC 是给自己的 进行解封 ,并在IP层查询路由表 发现 数据包的目标网段是从E1端口转发的,于是将数据包转到E1端口,并在E1发送arp广播,四要素为:

  1. 源IP 10.1.1.1/24

  2. 目标IP 192.168.2.2/24

  3. 源MAC 00-11-12-21-33-33

  4. 目标MAC ff-ff-ff-ff-ff-ff

5.RB的E1端口收到广播给RA单播回应arp包,四要素为:

  1. 源IP 10.10.1.2/24

  2. 目标IP 10.1.1.1/24

  3. 源MAC 00-11-12-21-44-44

  4. 目标MAC 00-11-12-21-33-33

6.RA 收到后确认mac地址,确定是发给自己的,于是解封,将RB的MAC地址与接口号记录在路由表中,重新封装发送给HOSTB,四要素为:

  1. 源IP 192.168.1.1/24

  2. 目标IP 192.168.2.2/24

  3. 源MAC 00-11-12-21-33-33

  4. 目标MAC 00-11-12-21-44-44

7.RB收到后确认MAC地址为自己后,解封,转给E0端口,E0端口查找路由表,没有找到目标IP对应的MAc地址,将数据包丢弃,并发出arp广播:

  1. 源IP 192.168.2.1/24

  2. 目标IP 192.168.2.2/24

  3. 源MAC 00-11-12-21-44-55

  4. 目标MAC ff-ff-ff-ff-ff-ff

8. HostB 收到广播,记录RB的MAC 地址,并单播回应RB :

  1. 源IP 192.168.2.2/24

  2. 目标IP 192.168.2.1/24

  3. 源MAC 00-11-12-21-55-55

  4. 目标MAC 00-11-12-21-44-44

9. RB收到arp包,重新封装数据包为数据帧发给HostB :

  1. 源IP 192.168.1.1/24

  2. 目标IP 192.168.2.2/24

  3. 源MAC 00-11-12-21-44-44

  4. 目标MAC 00-11-12-21-55-55

10. HostB 收到数据帧确认MAC 后解封接收数据包。同时向原地址发送应答数据包,此过程与上面相似(因为HOSTB也不知道HOST1 的MAC地址)。

    但是由于前面传输过程中各个设备已经记录了连接的MAC地址与对应的端口号,因此减少ARP广播的程序。