基础网络通信过程二

一、基本拓扑

在这里插入图片描述

场景二:PCI —>ping—> PC3

1. PCI与PC3通信,PC1组装ICMP包,如下:

条目内容
目的MAC未知
源MACaa:aa:aa:aa:aa:aa
源IP192.168.3.2
目的IP192.168.4.2

2. 通过查询ARP表发现没有目的IP对应的下一跳MAC,因此组装ARP报文请求目的IP的MAC。

(1)先将要发送的IPV4报文缓存在arp缓存表中,如果arp表项缓存满了则直接丢包。
(2)通过对比目的IP和源IP发现位于不同网段,所以直接请求网关的ARP请求包,如下:

条目内容
目的MACff:ff:ff:ff:ff:ff
源 MACaa:aa:aa:aa:aa:aa
Type0x0806
Sender MACaa:aa:aa:aa:aa:aa
Sender IP192.168.3.2
Target MACff:ff:ff:ff:ff:ff
Target IP192.168.3.1

(3)arp请求包经过交换机,交换机更新自己的fdb表,如下,然后将arp请求包广播。

MAC接口
aa:aa:aa:aa:aa:aaeth1

(4)arp请求是二层广播包,其他非请求IP的接口收到不做响应,路由器eth1口收到后首先更新自己的ARP表,然后进行arp应答, 此时路由器的ARP表如下:

IPMAC
192.168.3.1bb:bb:bb:bb:bb:bb
192.168.4.1cc:cc:cc:cc:cc:cc
192.168.3.2aa:aa:aa:aa:aa:aa

(5)arp应答报文经过交换机,交换机更新自己的fdb表,如下,然后通过查询fdb表,查到将arp应答从eth1口发出。

MAC接口
aa:aa:aa:aa:aa:aaeth1
bb:bb:bb:bb:bb:bbeth3

(6)PC1收到arp应答后,新增自己的arp表项,并把缓存的报文通过查询arp表项填充目的MAC后发送出去。此时arp表项如下:

IPMAC
192.168.3.1bb:bb:bb:bb:bb:bb

(7)此时PC1通过查询本机arp表项。将报文发送到路由器eth1口。

条目内容
目的MACbb:bb:bb:bb:bb:bb
源MACaa:aa:aa:aa:aa:aa
源IP192.168.3.2
目的IP192.168.4.2

(8)路由器eth1口收包后,以目的IP “192.168.4.2” 查询路由表,存在直连路由,出口是eth2口,所以报文转到eth2口发送,通过查询arp表发现没有“192.168.4.2”的表项,所以从eth2口发送arp请求。之后流程与同网段arp过程一致。最终路由器arp表如下:

IPMAC
192.168.3.1bb:bb:bb:bb:bb:bb
192.168.4.1cc:cc:cc:cc:cc:cc
192.168.3.2aa:aa:aa:aa:aa:aa
192.168.4.2ee:ee:ee:ee:ee:ee

3. 此时PC1与PC3可正常通信

(1)PC1 ping PC3
(2)PC1判断目的IP与自己不是同一网段,将报文发往网关,查询本机arp表,获取网关 “192.168.3.1” 的MAC为 "bb:bb:bb:bb:bb:bb"作为下一跳MAC
(3)PC1组包发送
(4)交换机收到包,更新fdb表项老化时间,通过使用报文的目的MAC查询fdb表项,从eth3口转发报文。
(5)路由器收到包,根据目的IP查路由,确认从eth2口发送;查询本机arp表,获取目的IP “192.168.4.2” 的下一跳MAC为 “ee:ee:ee:ee:ee:ee”, 组包发送
(7)PC3收到回包,更新本地ARP表老化时间,然后查询本地arp表获取下一跳MAC地址,组包应答。
(8)路由器收到包,根据目的IP查路由,确认从eth1口发送;查询本机arp表,获取目的IP “192.168.3.2” 的下一跳MAC为 “aa:aa:aa:aa:aa:aa”, 组包发送
(9)交换机收到包,更新fdb表项老化时间,通过使用报文的目的MAC查询fdb表项,从eth1口转发报文。
(10)PC1收到回包,ping通


版权声明:本文为weixin_42106049原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。