计算机网络学习:二三层转发

转载自:
https://blog.csdn.net/dwj_daiwenjie/article/details/103953494
https://blog.csdn.net/Once_day/article/details/125941219
大佬写的很详细,学习一下

二层转发和三层转发

① 源主机在发起通信之前,会将自己的IP与目的主机的IP进行比较,如果两者位于同一网段(用网络掩码计算后具有相同的网络号),那么源主机发送arp请求广播报,请求目的主机的mac地址,在收到目的主机的ARP应答后获得对方的物理层(MAC)地址,然后用对方MAC作为报文的目的MAC进行报文发送。位于同一VLAN(网段)中的主机互访时属于这种情况,这时用于互连的交换机作二层交换转发;

② 当源主机判断目的主机与自己位于不同网段时,它会通过网关(Gateway)来递交报文,即发送ARP请求来获取网关IP地址对应的MAC,在得到网关的ARP应答后,用网关MAC作为报文的目的MAC进行报文发送
在这里插入图片描述
对位于同一子网,即同一网段(不需要经过路由,所以是二层转发);

而对于位于不同子网,即不同的网段(必须经过路由器,所以该数据报文先经过三层路由转发)

那三层转发和二层转发有什么区别呢?
1.数据转发依靠的关键字不同,二层转发主要依靠MAC地址,而三层转发主要依靠IP地址。
2.数据交换的范围不同,二层交换指在同一网段内的通信,三层交换指跨网段的通信。
3.在三层转发的过程中,还要进行二层的封装。也就是说,在三层转发过程中二层帧头中的(源、目的)MAC地址是要改变的。但是IP数据报中的源IP和目的IP地址是不会改变的

三层转发例子

PC1准备向PC2发送数据包
在这里插入图片描述

(1) PC1检查报文的目的IP地址,发现和自己不在同一网段,则需要进行三层转发,通过网关转发报文信息;
在这里插入图片描述

(2) PC1检查自己的ARP表,发现网关的MAC地址不在自己的ARP表里;

在这里插入图片描述

PC1向Router发起arp请求(目的是获取网关的mac地址)

(3) PC1——>Router(网关)发出ARP请求报文;

在这里插入图片描述

(4) Router将PC1的MAC地址学习到自己的ARP表,
(5) Router(网关)——>PC1发出ARP应答报文;

在这里插入图片描述

(6) PC1学习到Router(网关)的mac地址,发出报文,此时源ip、目的ip不变,目的mac为Router(网关)的mac

(7) PC1——> Router(网关)发出报文。

在这里插入图片描述

(8) Router(网关)收到报文,发现是三层报文(原因是报文的目的mac是路由器自己的mac了,而二层转发根本就不需要经过路由器)
(9) Router(网关)检查自己的路由表(FIB),发现目的ip在自己的直连网段

在这里插入图片描述

(10)Router检查自己的arp表,如果发现有与目的ip对应的mac地址则直接封装报文(目的ip、源ip不变,目的mac为查arp表所得mac)发送给PC2

(11) 如果查ARP表没有得到与目的ip对应MAC,则重复(3)发arp请求
在这里插入图片描述

(12) PC2收到ARP广播报文,发现目的IP是自己的IP,于是给Router发送ARP应答报文。报文中会附上自己的mac地址。

(13) Router收到应答报文后,目的mac改为PC2的mac,然后向PC2发送数据帧。

(14) PC2向Router发送报文

在这里插入图片描述

(15) Router收到报文后,向PC1转发报文

三层交换机的三层转发

路由器由于自身成本高、转发性能低、端口数量少等特点无法很好的满足网络发展的需求。

路由器主要是通过IP转发(三层转发)来实现不同网络间的互连,后面,随着技术的发展,交换机转发高性能的特点融入到了三层转发中,就出现了三层交换机,一种实现了高速三层转发的设备。

比如:
PC A 和PC B连接在同一台三层交换机上
在这里插入图片描述

  1. PC A 检查出PC B 的IP地址2.1.1.2 与自己不在一个网段,所以向网关1.1.1.1发送ARP分组,请求1.1.1.1地址的MAC。

  2. L3交换机接收到PC A的ARP分组,根据1.1.1.0/24 , action=cpu(cfg svi2 ip),直接交给CPU处理,(也会更新MAC地址表)。软件处理发现请求IP是自己的三层接口IP,因此发送ARP应答并将自己的三层接口MAC(MAC S)包含在其中。随后会把PC A的IP地址与MAC地址对应关系记录到自己的ARP表项中去。

  3. PC A得到网关L3_SW的ARP应答后,组装ICMP报文并发送。ICMP(目的MAC=MAC S,源MAC=MAC A,源IP=1.1.1.2,目的IP=2.1.1.2)

  4. L3_SW收到报文,根据报文的源MAC+VID(VLAN ID),更新MAC地址表。根据报文的目的MAC+VID查找MAC地址表,发现匹配了自己三层接口MAC的表项。这里说明一下,三层交换机为VLAN配置三层接口IP后,会在交换芯片的MAC地址表中添加三层接口MAC+VID的表项,并且为表项的三层转发标志置位。当报文的目的MAC匹配这样的表项以后,说明需要作三层转发,于是继续查找交换芯片的三层表项。

  5. 交换芯片根据报文的目的IP去查找其三层表项,由于之前未建立任何表项,因此查找失败,于是将报文送到CPU去进行软件处理;

  6. CPU根据报文的目的IP去查找其软件路由表,发现匹配了一个直连网段(PC B对应的网段),于是继续查找其软件ARP表,仍然查找失败。然后L3_SW会在目的网段对应的VLAN 3的所有端口发送请求地址2.1.1.2对应MAC的ARP请求。直连网段是人工配置的,但MAC地址却需要通过ARP自动更新。

  7. PC B收到L3_SW发送的ARP请求后,检查发现被请求IP是自己的IP,因此发送ARP应答并将自己的MAC(MAC B)包含在其中。同时,将L3_SW的IP与MAC的对应关系记录到自己的ARP表中去。

  8. L3_SW收到PC B的ARP应答后,将其IP和MAC对应关系(2.1.1.2<==>MAC B)记录到自己的ARP表中去,并将PC A的ICMP请求报文发送给PC B,报文的目的MAC修改为PC B的MAC(MAC B),源MAC修改为自己的MAC(MAC S)。同时,在交换芯片的三层表项中根据刚得到的三层转发信息添加表项(内容包括IP、MAC、出口VLAN、出端口),这样后续的PC A发往PC B的报文就可以通过该硬件三层表项直接转发了。

  9. PC B收到L3_SW转发过来的ICMP请求报文以后,回应ICMP应答给PC A。ICMP应答报文的转发过程与前面类似,只是由于L3_SW在之前已经得到PC A的IP和MAC对应关系了,也同时在交换芯片中添加了相关三层表项,因此这个报文直接由交换芯片硬件转发给PC
    A。

  10. 这样,后续的往返报文都经过查MAC表=>查三层转发表的过程由交换芯片直接进行硬件转发了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值