一文读懂二层转发和三层转发原理

admin 2023年4月12日13:41:57评论151 views字数 8245阅读27分29秒阅读模式
一文读懂二层转发和三层转发原理

01

二层转发原理

基于源MAC地址学习,基于目的MAC转发,查不到则泛洪。


02

三层转发原理
最长掩码匹配原则查找路由表,查到路由则转发,查不到则丢弃。


03

实际案例讲解


一文读懂二层转发和三层转发原理

3.1 组网拓扑及配置信息

一文读懂二层转发和三层转发原理

图1 二三层转发拓扑

如图1所示,假定终端PC机、LSW交换机、R路由器在初始状态转发表项均为空,基础配置信息如表1-表3所示,二层转发、三层转发到底是怎么个流程呢?

表1 终端配置信息

一文读懂二层转发和三层转发原理

表2 交换机配置信息

一文读懂二层转发和三层转发原理

表3 路由器配置信息

一文读懂二层转发和三层转发原理

一文读懂二层转发和三层转发原理

3.2 PC1Ping PC2会发生什么?

(1)PC1开始封装数据包,应用层封装ICMP请求,ICMP头Type为8、Code为0;三层封装源IP地址为192.168.10.10/24,目的IP地址为192.168.10.20/24;二层封装源MAC地址为10:10:10:10:10:10,目的MAC地址为PC2的MAC地址,但很可惜它并不知道PC2的MAC地址。

2PC1的IP地址为192.168.10.10/24,PC2的IP地址为192.168.10.20/24,通过IP地址与掩码相与之后可以确定二者的网段均为192.168.10.0/24网段,进行二层转发。

3PC1开始封装ARP报文来获取PC2的MAC地址,应用层封装ARP请求,ARP信息中Sender MAC address为10:10:10:10:10:10、Sender IP address为192.168.10.10、Target MAC address为00:00:00:00:00:00、Target IP address为192.168.10.20;二层封装源MAC地址为10:10:10:10:10:10,目的MAC地址为FF:FF:FF:FF:FF:FF,不携带VLAN Tag从网卡发出。

4交换机LSW的Access口GE 0/0/1收到该ARP请求报文,先打上PVID为100的VLAN Tag,再基于源MAC+VLAN ID查找MAC表、没有匹配的则新增一条记录<MAC地址-10:10:10:10:10:10、VLAN ID-100、出接口-GE 0/0/1>;然后基于目的MAC+VLAN ID查找MAC表、没有匹配的则剥掉Tag并在VLAN100内除去入接口的其他接口上进行泛洪。

5路由器R1的GE 0/0/1口收到该ARP请求,拆封二层头发现目的MAC为FF:FF:FF:FF:FF:FF,继续拆封ARP请求头,发现请求的Target IP address不是自己的接口IP则直接丢弃。

6PC2收到该ARP请求,拆封二层头发现目的MAC为FF:FF:FF:FF:FF:FF,继续拆封ARP请求头,发现请求的Target IP address是自己的IP则需要回复ARP响应报文。具体地应用层封装ARP响应,ARP信息中Sender MAC address为20:20:20:20:20:20、Sender IP address为192.168.10.20、Target MAC address为10:10:10:10:10:10、Target IP address为192.168.10.10;二层封装源MAC为20:20:20:20:20:20,目的MAC为10:10:10:10:10:10,不携带VLAN Tag从网卡发出。

7交换机LSW的Access口GE 0/0/2收到该ARP响应报文,先打上PVID为100的VLAN Tag,再基于源MAC+VLAN ID查找MAC表、没有匹配的则新增一条记录< MAC地址-20:20:20:20:20:20、VLAN ID-100、出接口-GE 0/0/2>;然后基于目的MAC+VLAN ID查找MAC表、匹配上步骤(4)学习到的记录,剥掉Tag从GE 0/0/1口发出。

8PC1收到该ARP响应,拆封二层头发现目的MAC为10:10:10:10:10:10是自己的MAC地址,则继续拆封ARP头,发现响应的Target IP address也是自己的IP,从而获取到PC2的IP地址和MAC地址对应关系,回到步骤(1)继续封装ICMP请求报文,不携带VLAN Tag从网卡发出。

9交换机LSW的Access口GE 0/0/1收到该ICMP请求报文,先打上PVID为100的VLAN Tag,再基于源MAC+VLAN ID查找MAC表、有匹配的则新更新原有记录<如:老化时间>;然后基于目的MAC+VLAN ID查找MAC表、匹配上步骤(7)学习到的记录,剥掉Tag从GE 0/0/2口发出。

10PC2收到该ICMP请求报文,拆封二层头发现目的MAC为20:20:20:20:20:20是自己的MAC地址,则继续拆封三层头发现目的IP为192.168.10.20是自己的IP地址,则继续拆封应用层发现为ICMP请求报文则需要回复ICMP响应报文。应用层封装ICMP响应,ICMP头Type为0、Code为0;三层封装源IP地址为192.168.10.20/24,目的IP地址为192.168.10.10/24;二层封装源MAC地址为20:20:20:20:20:20,目的MAC地址为10:10:10:10:10:10,不携带VLAN Tag从网卡发出。

11交换机LSW的Access口GE 0/0/2收到该ICMP响应报文,先打上PVID为100的VLAN Tag,再基于源MAC+VLAN ID查找MAC表、有匹配的则新更新原有记录<如:老化时间>;然后基于目的MAC+VLAN ID查找MAC表、匹配上步骤(4)学习到的记录,剥掉Tag从GE 0/0/1口发出。

12PC1收到该ICMP响应报文,拆封二层头发现目的MAC为10:10:10:10:10:10是自己的MAC地址,则继续拆封三层头发现目的IP为192.168.10.10是自己的IP地址,则继续拆封应用层发现为ICMP响应报文无需回复,至此PC1 ping通 PC2。

一文读懂二层转发和三层转发原理

3.3 PC1 Ping PC4会发生什么?

(1)PC1开始封装数据包,应用层封装ICMP请求,ICMP头Type为8、Code为0;三层封装源IP地址为192.168.10.10/24,目的IP地址为192.168.40.40/24;二层封装源MAC地址为10:10:10:10:10:10,目的MAC地址为PC4的MAC地址,但很可惜它并不知道PC4的MAC地址。

(2)PC1的IP地址为192.168.10.10/24,PC4的IP地址为192.168.40.40/24,通过IP地址与掩码相与之后可以确定二者的网段分别为192.168.10.0/24网段和192.168.40.0/24网段,进行三层转发则需要获取网关的MAC地址信息。

(3)PC1开始封装ARP报文来获取网关192.168.10.1的MAC地址,应用层封装ARP请求,ARP信息中Sender MAC address为10:10:10:10:10:10、Sender IP address为192.168.10.10、Target MAC address为00:00:00:00:00:00、Target IP address为192.168.10.1;二层封装源MAC地址为10:10:10:10:10:10,目的MAC地址为FF:FF:FF:FF:FF:FF,不携带VLAN Tag从网卡发出。

(4)交换机LSW的Access口GE 0/0/1收到该ARP请求报文,先打上PVID为100的VLAN Tag,再基于源MAC+VLAN ID查找MAC表、没有匹配的则新增一条记录<MAC地址-10:10:10:10:10:10、VLAN ID-100、出接口-GE 0/0/1>;然后基于目的MAC+VLAN ID查找MAC表、没有匹配的则剥掉Tag并在VLAN100内除去入接口的其他接口上进行泛洪。

(5)PC2收到该ARP请求,拆封二层头发现目的MAC为FF:FF:FF:FF:FF:FF,继续拆封ARP请求头,发现请求的Target IP address不是自己的IP则直接丢弃。

(6)路由器R1的GE 0/0/1口收到该ARP请求,拆封二层头发现目的MAC为FF:FF:FF:FF:FF:FF,继续拆封ARP请求头,发现请求的Target IP address是自己的接口IP则需要回复ARP响应报文。具体地应用层封装ARP响应,ARP信息中Sender MAC address为00:24:01:10:00:01、Sender IP address为192.168.10.1、Target MAC address为10:10:10:10:10:10、Target IP address为192.168.10.10;二层封装源MAC为00:24:01:10:00:01,目的MAC为10:10:10:10:10:10,不携带VLAN Tag从GE 0/0/1发出。

(7)交换机LSW的Access口GE 0/0/4收到该ARP响应报文,先打上PVID为100的VLAN Tag,再基于源MAC+VLAN ID查找MAC表、没有匹配的则新增一条记录< MAC地址-00:24:01:10:00:01、VLAN ID-100、出接口-GE 0/0/4>;然后基于目的MAC+VLAN ID查找MAC表、匹配上步骤(4)学习到的记录,剥掉Tag从GE 0/0/1口发出。

(8)PC1收到该ARP响应,拆封二层头发现目的MAC为10:10:10:10:10:10是自己的MAC地址,则继续拆封ARP头,发现响应的Target IP address也是自己的IP,从而获取到网关的IP地址和MAC地址对应关系,回到步骤(1)继续封装ICMP请求报文,不携带VLAN Tag从网卡发出。

(9)交换机LSW的Access口GE 0/0/1收到该ICMP请求报文,先打上PVID为100的VLAN Tag,再基于源MAC+VLAN ID查找MAC表、有匹配的则新更新原有记录<如:老化时间>;然后基于目的MAC+VLAN ID查找MAC表、匹配上步骤(7)学习到的记录,剥掉Tag从GE 0/0/4口发出。

(10)路由器R1的GE 0/0/1收到该ICMP请求报文,拆封二层头发现目的MAC为00:24:01:10:00:01是自己的MAC地址,则继续拆封三层头发现目的IP为192.168.40.40不是自己的IP地址,则不需要响应只需转发。使用目的IP查找全局路由表,有匹配的缺省路由从GE 0/0/2转出,则重新封装三层头源IP地址为192.168.10.10/24,目的IP地址为192.168.40.40/24;源MAC为GE 0/0/2的MAC地址00:24:01:10:00:02,目的MAC为下一跳192.168.12.2对应的MAC地址,但很可惜它并不知道下一跳的MAC地址。

(11)路由器R1的GE 0/0/2的IP地址为192.168.12.1/24,下一跳的IP地址为192.168.12.2/24,通过IP地址与掩码相与之后可以确定二者的网段均为192.168.12.0/24网段,进行二层转发。

(12)路由器R1开始封装ARP报文来获取下一跳192.168.12.2的MAC地址,应用层封装ARP请求,ARP信息中Sender MAC address为00:24:01:10:00:02、Sender IP address为192.168.12.1、Target MAC address为00:00:00:00:00:00、Target IP address为192.168.12.2;二层封装源MAC地址为00:24:01:10:00:02,目的MAC地址为FF:FF:FF:FF:FF:FF,不携带VLAN Tag从GE 0/0/2口发出。

(13)路由器R2的GE 0/0/2口收到该ARP请求,拆封二层头发现目的MAC为FF:FF:FF:FF:FF:FF,继续拆封ARP请求头,发现请求的Target IP address是自己的接口IP则需要回复ARP响应报文。具体地应用层封装ARP响应,ARP信息中Sender MAC address为00:24:02:40:00:02、Sender IP address为192.168.12.2、Target MAC address为00:24:01:10:00:02、Target IP address为192.168.12.1;二层封装源MAC为00:24:02:40:00:02,目的MAC为00:24:01:10:00:02,不携带VLAN Tag从GE 0/0/2发出。

(14)路由器R1收到该ARP响应,拆封二层头发现目的MAC为00:24:01:10:00:02是自己的MAC地址,则继续拆封ARP头,发现响应的Target IP address也是自己的IP,从而获取到下一跳的IP地址和MAC地址对应关系,回到步骤(10)继续封装IP报文,不携带VLAN Tag从GE 0/0/2发出。

(15)路由器R2的GE 0/0/2收到该ICMP请求报文,拆封二层头发现目的MAC为00:24:02:40:00:02是自己的MAC地址,则继续拆封三层头发现目的IP为192.168.40.40不是自己的IP地址,则不需要响应只需转发。使用目的IP查找全局路由表,有匹配的直连路由从GE 0/0/1转出,则重新封装三层头源IP地址为192.168.10.10/24,目的IP地址为192.168.40.40/24;源MAC为GE 0/0/1的MAC地址00:24:02:40:00:01,目的MAC为直连192.168.12.2对应的MAC地址,但很可惜它并不知道下一跳的MAC地址。

(16)路由器R2的GE 0/0/1的IP地址为192.168.40.1/24,直连IP地址为192.168.40.40/24,通过IP地址与掩码相与之后可以确定二者的网段均为192.168.40.0/24网段,进行二层转发。

(17)路由器R2开始封装ARP报文来获取直连192.168.40.40的MAC地址,应用层封装ARP请求,ARP信息中Sender MAC address为00:24:02:40:00:01、Sender IP address为192.168.40.1、Target MAC address为00:00:00:00:00:00、Target IP address为192.168.40.40;二层封装源MAC地址为00:24:02:40:00:01,目的MAC地址为FF:FF:FF:FF:FF:FF,不携带VLAN Tag从GE 0/0/1口发出。

(18)PC4收到该ARP请求,拆封二层头发现目的MAC为FF:FF:FF:FF:FF:FF,继续拆封ARP请求头,发现请求的Target IP address是自己的接口IP则需要回复ARP响应报文。具体地应用层封装ARP响应,ARP信息中Sender MAC address为40:40:40:40:40:40、Sender IP address为192.168.40.40、Target MAC address为00:24:02:40:00:01、Target IP address为192.168.40.1;二层封装源MAC为40:40:40:40:40:40,目的MAC为00:24:02:40:00:01,不携带VLAN Tag从网卡发出。

(19)路由器R2收到该ARP响应,拆封二层头发现目的MAC为00:24:02:40:00:01是自己的MAC地址,则继续拆封ARP头,发现响应的Target IP address也是自己的IP,从而获取到直连的IP地址和MAC地址对应关系,回到步骤(15)继续封装IP报文,不携带VLAN Tag从GE 0/0/1发出。

(20)PC4收到该ICMP请求报文,拆封二层头发现目的MAC为40:40:40:40:40:40是自己的MAC地址,则继续拆封三层头发现目的IP为192.168.40.40是自己的IP地址,则继续拆封应用层发现为ICMP请求报文则需要回复ICMP响应报文。应用层封装ICMP响应,ICMP头Type为0、Code为0;三层封装源IP地址为192.168.40.40/24,目的IP地址为192.168.10.10/24;二层封装源MAC地址为40:40:40:40:40:40,目的MAC地址为00:24:02:40:00:01,不携带VLAN Tag从网卡发出。

(21)路由器R2的GE 0/0/1收到该ICMP响应报文,拆封二层头发现目的MAC为00:24:02:40:00:01是自己的MAC地址,则继续拆封三层头发现目的IP为192.168.10.10不是自己的IP地址,则不需要响应只需转发。使用目的IP查找全局路由表,有匹配的缺省路由从GE 0/0/2转出,则重新封装三层头源IP地址为192.168.40.40/24,目的IP地址为192.168.10.10/24;源MAC为GE 0/0/2的MAC地址00:24:02:40:00:02,目的MAC为下一跳192.168.12.1对应的MAC地址即00:24:01:10:00:02,不携带VLAN Tag从GE 0/0/2口发出。

(22)路由器R1的GE 0/0/2收到该ICMP响应报文,拆封二层头发现目的MAC为00:24:01:10:00:02是自己的MAC地址,则继续拆封三层头发现目的IP为192.168.10.10不是自己的IP地址,则不需要响应只需转发。使用目的IP查找全局路由表,有匹配的直连路由从GE 0/0/1转出,则重新封装三层头源IP地址为192.168.40.40/24,目的IP地址为192.168.10.10/24;源MAC为GE 0/0/1的MAC地址00:24:01:10:00:01,目的MAC为直连192.168.10.10对应的MAC地址即10:10:10:10:10:10,不携带VLAN Tag从GE 0/0/1口发出。

(23)交换机LSW的Access口GE 0/0/4收到该ICMP响应报文,先打上PVID为100的VLAN Tag,再基于源MAC+VLAN ID查找MAC表、有匹配的则新更新原有记录<如:老化时间>;然后基于目的MAC+VLAN ID查找MAC表、匹配上步骤(4)学习到的记录,剥掉Tag从GE 0/0/1口发出。

(24)PC1收到该ICMP响应报文,拆封二层头发现目的MAC为10:10:10:10:10:10是自己的MAC地址,则继续拆封三层头发现目的IP为192.168.10.10是自己的IP地址,则继续拆封应用层发现为ICMP响应报文无需回复,至此PC1 ping通 PC4。


04

结语

当报文需要进行二层转发时,不需要查找三层路由表信息,也不会对报文内容进行修改;当报文需要进行三层转发时,需要将目的MAC地址、目的IP地址字段进行识别,然后根据目的IP地址查找三层路由表信息,最后再对应ARP表信息进行转发。由此可以看出,二层转发的速度和效率必然明显高于三层转发。

互动环节:3.1小节步骤(10)中PC2获取PC1的MAC地址是否还需要重新发送ARP请求?欢迎广大读者朋友在留言区互动交流。

一文读懂二层转发和三层转发原理
威努特简介
一文读懂二层转发和三层转发原理

北京威努特技术有限公司(简称:威努特)是国内工控安全行业领军者,是中国国有资本风险投资基金旗下企业。凭借卓越的技术创新能力成为全球六家荣获国际自动化协会ISASecure 认证企业之一和首批国家级专精特新“小巨人”企业。

威努特依托率先独创的工业网络“白环境”核心技术理念,以自主研发的全系列工控安全产品为基础,为电力、轨道交通、石油石化、市政、烟草、智能制造、军工等国家重要行业用户提供全生命周期纵深防御解决方案和专业化的安全服务,迄今已为国内及“一带一路”沿线国家的4000多家行业客户实现了业务安全合规运行。

作为中国工控安全国家队,威努特积极推动产业集群建设构建生态圈发展,牵头和参与工控安全领域国家、行业标准制定和重大活动网络安全保障工作,始终以保护我国关键信息基础设施网络空间安全为己任,致力成为建设网络强国的中坚力量!

一文读懂二层转发和三层转发原理

一文读懂二层转发和三层转发原理
一文读懂二层转发和三层转发原理
一文读懂二层转发和三层转发原理
一文读懂二层转发和三层转发原理

渠道合作咨询   田先生 15611262709

稿件合作   微信:shushu12121

原文始发于微信公众号(威努特工控安全):一文读懂二层转发和三层转发原理

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月12日13:41:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一文读懂二层转发和三层转发原理https://cn-sec.com/archives/1668045.html

发表评论

匿名网友 填写信息