三层交换数据转发的过程

发布于:2022-10-13 ⋅ 阅读:(528) ⋅ 点赞:(0)

  1. PC1 封装一个 ICMP包

ARP  请求包 被 SW2的E0/0/1接收,此时,交换机解封装数据链路层 ,给ARP数据包 打一个 vid=10的tag , 学习 源MAC地址,添加到 vlan10的MAC地址表中, 查看目标MAC地址,为全FFFF,交换机查询vlan数据库,找到vlan10数据库中的成员接口,会将这个数据包从 所有vlan10的成员接口转发

此时  这个ARP数据包 会从 G0/0/1发出

ARP请求包被 SW1的G0/0/1接收, 解封装数据链路层,学习源MAC地址, 会将源MAC和 G0/0/1接口的对应关系 添加到 vlan10的 MAC地址表中。

再查看目标MAC地址为全FFFF,这个ARP包会被该vlan下的所有接口接收 ----》 最终会被 vlanif 10接收,

vlanif 10 接收到ARP,解封装数据链路层,获得MAC地址 和 ARP数据部分的 sender-IP(源IP) ----> 会将这个对应关系添加到自己的 ARP缓存表

 target-ip----> 从该字段可以看出,这个ARP是在请求  192.168.10.254 的MAC地址,也就是 vlanif10的MAC地址。

此时 vlanif 10对该 ARP请求作出回应。该报文如下:

该ARP回复包被 SW2的G0/0/1接收, 解封装数据链路层,查看源MAC地址,和G0/0/1生成对应关系,添加到 vlan 10的MAC地址表中。(交换机学习源MAC)

交换机学习源MAC地址之后,查看目的MAC地址为 759E----> 对应的出接口是 E0/0/1

所以,交换机会将这个ARP回复包 从E0/0/1发出,被PC1 接收。

PC1接收到 ARP回复包,解封装数据链路层,先查看目标MAC地址,是自己的,然后继续解封装到ARP部分, 根据源MAC和 sender ip,获得 网关的MAC地址,填入自己的ARP缓存表。

此时,PC1获得了网关的MAC地址, 再次封装 ICMP数据包,并发送出去,被SW2的E0/0/1接收。

SW2收到该数据帧, 解封装数据链路层,打tag(vid=10) 学习源MAC地址,将 75-9E和 E0/0/1的对应关系 添加到 vlan10的MAC地址表,再查看目的MAC地址,是7F-29,根据自己的 vlan10的MAC地址表,找到对应的出口

G0/0/1----> 从G0/0/1发出。

ICMP的数据包被 SW1的 G0/0/1接收

  1. 解封装数据链路层,学习源MAC地址 (75-9E 和G0/0/1----> 添加到 vlan10的MAC地址表 )
  2. 查看目的MAC地址,目标MAC地址是vlanif10的,vlanif10 接收该数据包,继续解封装网络层
  3. 这个数据包就被 vlanif10接收,更新ARP缓存表(ARP缓存表的老化时间默认是 20分钟)
  4. 再查看目标IP地址,目标IP地址,不是自己的,所以,vlanif 10 知道,这个数据包实要自己帮忙转发的-----》 查看路由表,根据目标网段,找到对应的逃出接口

所以,此时,vlanif10,要把这个数据包,交给 vlanif 20

此时,vlanif20要转发这个数据, 在转发前,要将这个数据进行封装。

此时,ARP缓存表中,并不存在关于 20.1的MAC地址,于是触发ARP请求。

查看目标MAC地址为全FFFF,SW1将这个ARP请求 从 vlan20数据库中所有的 成员接口发出(从G0/0/1发出)

被SW2接收到,该ARP请求包,解封装数据链路层,学习源MAC地址 ,将 7f29--G 0/0/1形成对应关系 添加到 vlan20的MAC地址表

再查看目标MAC地址为 全FF,SW1将这个ARP请求 从 vlan20数据库中所有的 成员接口发出(从E0/0/2发出)

ARP请求包被PC2 收到

PC2接收到该数据包,接封装数据链路层,查看目标MAC地址是全FF,继续接封装 ARP部分, 学习源MAC地址和Sender-IP的对应关系,添加到自己的 ARP缓存表

再查看 target-ip字段,是自己的

于是PC2 ,对对这个ARP请求作出回应.

SW2接收到 ARP回复包, 首先要 接封装 数据链路层, 打 vlan 20的 tag, 学习源MAC地址, 642e-E0/0/2生成对应关系,添加到 vlan20的MAC地址中.

SW2查看目标MAC地址(7f29),查询 vlan20的MAC地址表,找到出口为 G0/01

于是,这个ARP回复包 会从 G0/0/1发出 ,被SW1的G0/0/1接收:

SW1接收到 ARP回复包,接封装数据链路层, 学习源MAC地址 642E--G0/0/1生成对应关系,添加到 vlan20的MAC地址表中

再查看目标MAC地址是vlanif20的,此时 会将 ARP回复包给到 vlanif20, vlanif20,将 源MAC地址和 Sender-IP的对应关系,添加到自己的ARP缓存表

此时,vlanif20获得了 PC2的MAC地址了 ,能够将ICMP的数据包 完整封装.

SW1查看vlan 20的MAC地址表根据 目标MAC地址 642e,将这个数据包从G0/0/1发出.

SW2接收到 该ICMP请求包, 接封装数据链路层, 学习源MAC地址 7f29--G 0/0/1 ----> 添加到vlan20的MAC地址表(MAC地址更新)

SW2再查看这个ICMP的 目标MAC地址,是 642E,查询 vlan20的MAC地址表,找到对应的出口为 E0/0/2,于是,这个ICMP包,从E0/0/2 剥离掉tag,发出.

此时 这个ICMP的数据包,就被PC2接收,PC2接收到该数据帧,

  1. 接封装数据链路层,查看目标MAC地址,是自己的,然后继续接封装网络层,查看目标IP地址,也是自己的,再继续接封装,查看ICMP的数据,这是一个ICMP的请求包,于是,会根据这个请求包作出回复.

关于查表

PC在发送数据的时候,查 ARP缓存表

PC在接收到ARP报文的时候,会更新ARP缓存表

二层交换机,在接收数据帧的时候,会更新 MAC地址表

二层交换机,在发送数据帧的时候,会查询MAC地址表

三层交换机,在接收数据帧的时候,会更新 MAC地址表

三层交换机,在接收数据帧的时候,会更新 ARP缓存表

三层交换机,在发送数据包的时候,会查询ARP缓存表

三层交换机, 在发送数据包的时候,会查询路由表

三层交换机,在发送数据包的时候,会查询MAC地址表

对于 PC1 的第一个包出现 time out的解释: PC1最先将 icmp的请求发出去之后,对于SW1,vlanif20并没有获得PC2的MAC地址,此时 vlanif20先发送了一个ARP请求,获得ARP回复之后,才能继续转发ICMP的请求包,但是此时,对于PC1来讲,等待的时间过长,会认为网络不可达,出现 request timeout的 回显.

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到