您的位置:首页 > 健康 > 美食 > h5在线_自创网站怎么赚钱_软文推广网_在线优化网站

h5在线_自创网站怎么赚钱_软文推广网_在线优化网站

2025/1/2 22:54:09 来源:https://blog.csdn.net/qq_35481167/article/details/144446103  浏览:    关键词:h5在线_自创网站怎么赚钱_软文推广网_在线优化网站
h5在线_自创网站怎么赚钱_软文推广网_在线优化网站

1. 二层转发概述

数据链路层,位于OSI模型中的第二层,所以称之为二层。本文我们讨论的转发过程,就是在数据链路层上的转发过程,即二层转发。

1.1 MAC地址

为了唯一的表示一台网络设备,网络设备都有自己的MAC地址。IEEE 802.3标准中,MAC地址被定义为48位(6字节)的地址。MAC地址的前24位称为组织唯一标识符(OUI),由IEEE分配给厂商,剩下的24位是网络接口标识符,表示厂商生产的网络设备的序列号。在前面的文章中,我们已经讲述过MAC地址,此处不再赘述。

1.2 帧

数据链路层上转发的数据叫帧,帧中包含了源设备的MAC地址(源MAC,SMAC)和目的设备的MAC地址(目的MAC,DMAC)。根据数据帧中DMAC的差异,分为单播帧、多播帧和广播帧,这里我们只分析单播帧和广播帧。在前面的文章中,我们已经讲述过帧,此处不再赘述。

了解完这些基础概念后,我们来分析二层转发过程。

更多文章也可以参看:

https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzk1NzU5MTE1OA==&action=getalbum&album_id=3768926401970290692#wechat_redirect

2. 基于MAC的二层转发

假设设备A~C在同一个局域网,他们三者的MAC地址已经列出来了,那么A和B之间的数据转发过程如何呢?下面,我们在设备C的内部详细分析一下。

7c83b38c5d1445e192c353e178247503.png

2.1 已知单播的二层转发

如果设备A已经知道设备B的MAC地址,那么发出的数据帧中的DMAC填的就是设备B的MAC地址,源MAC地址填的是自己的地址,那么具体的转发流程如下所示。

f6833c1ad61a43729e48aa4e18834fb7.png

(1)源MAC学习。设备C从PORT 1收到设备A发送的数据帧,根据数据帧的SMAC学习到一条MAC地址表的条目,上图中紫色虚线所指的条目。(同理,如果从PORT 2收到设备B发送的数据帧,也会学习到相应的MAC地址表条目。)

(2)目的MAC转发。设备C根据数据帧的DMAC去MAC地址表中查找,找到对应的出端口是PORT 2,上图中绿色虚线框中的条目。那么就会将该数据帧从PORT 2转发出去,这样就完成了转发过程。

2.2 ARP协议

在上文中,我们描述的是设备A已知设备B的MAC地址的场景下的转发过程,那么我们怎么能知道设备B的MAC地址呢?这时候就需要请出我们的ARP协议了。

ARP报文的格式如下:

fcdf5e5db30644518aae6fc0a2d84113.png

报文中的各个字段的含义如下:

字段

长度

含义
DMAC6字节目的MAC地址
SMAC6字节源MAC地址
Type2字节

Type:指链路直接封装的上层协议类型,对于ARP请求或应答来说,该字段的值为0x0806。

802.1Q Tag4字节

802.1Q Tag

Hardware Type

16比特

表示硬件地址的类型。对于以太网,该类型的值为“1”。

Protocol Type

16比特

表示发送方要映射的协议地址类型。对于IP地址,该值为0x0800。

Hardware Length

8比特

表示硬件地址的长度,单位是字节。对于ARP请求或应答来说,该值为6。

Protocol Length

8比特

表示协议地址的长度,单位是字节。对于ARP请求或应答来说,该值为4。

OP

16比特

操作类型:

  1 ARP请求

  2 ARP应答

  3 RARP请求

  4 RARP应答

Ethernet Address of Sender

48比特

发送方以太网地址。这个字段和ARP报文首部的源以太网地址字段是重复信息。

IP Address of Sender

32比特

发送方的IP地址。

Ethernet Address of Destination

48比特

接收方的以太网地址。发送ARP请求时,该处填充值为0x00.00.00.00.00.00

IP Address of Destination

32比特

接收方的IP地址。

FCS4字节

帧校验序列FCS(Frame Check Sequence)是为接收者提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。 FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC(Cyclical Redundancy Check)。

如下图,A~J在同一个局域网,这时候A要和B通信,但是A不知道B的MAC地址,那么该怎么办呢?

3048c37af2cb4e41add039116bc4e02b.png

这时,A可以发送ARP请求广播报文到整个广播域去扩散,等待B的应答,具体过程如下。(ARP报文中包含了发送方和接收方的MAC地址和IP地址,ARP请求报文中,接收方的MAC地址填全0。)

e8372347b14043d988d79041704ecf11.png

(1)A发送ARP请求广播报文到C和D,图中的橙色箭头。这时,C和D会进行源MAC学习,图中橙色的MAC地址表条目。(这里只列出了D,C与之类似。)

(2)D收到ARP请求广播报文,检查目的IP不是自己,将ARP请求广播报文泛洪到E和H,图中的橙色箭头。这时,E和H会进行源MAC学习,图中橙色的MAC地址表条目。(这里只列出了H,E与之类似。)

(3)E收到ARP请求广播报文,检查目的IP不是自己,将ARP请求广播报文泛洪到F;H收到ARP请求广播报文,检查目的IP不是自己,将ARP请求广播报文泛洪到B、G和I,图中的橙色箭头。这时,F、B、G和I会进行源MAC学习,图中橙色的MAC地址表条目。(这里只列出了B,F、G和I与之类似。)

(4)B收到ARP请求广播报文,检查目的IP是自己,查询MAC地址表,将ARP应答报文发送到H,图中的绿色箭头。同样的,这时,B会进行源MAC学习,图中橙色的MAC地址表条目

(5)H收到ARP应答报文,检查目的IP不是自己,查询MAC地址表,将ARP应答报文发送到D,图中的绿色箭头。同样的,这时,H会进行源MAC学习,图中绿色的MAC地址表条目

(6)D收到ARP应答报文,检查目的IP不是自己,查询MAC地址表,将ARP应答报文发送到A,图中的绿色箭头。同样的,这时,D会进行源MAC学习,图中绿色的MAC地址表条目

(7)A收到ARP应答报文,检查目的IP是自己,这样A就知道了B的MAC地址。同样的,这时,A会进行源MAC学习,图中绿色的MAC地址表条目

2.3 未知单播的二层转发

如果设备C上收到的报文是未知单播,又是怎样的转发过程呢?

79278484d5dd4fce9307cebab0719ce9.png

(1)源MAC学习。设备C从PORT 1收到设备A发送的数据帧,根据数据帧的SMAC学习到一条MAC地址表的条目,上图中紫色虚线所指的条目。(同理,如果从PORT 2收到设备B发送的数据帧,也会学习到相应的MAC地址表条目。)

(2)泛洪转发。设备C根据数据帧的DMAC去MAC地址表中查找,发现并没有找到对应的MAC地址表条目。那么就会将该数据帧从除源端口外的其他所有端口转发出去,即泛洪转发。

2.4 广播的二层转发

如果设备C上收到的报文是广播帧,又是怎样的转发过程呢?

e614786ea51a4e88a7cf996e7de9e485.png

(1)源MAC学习。设备C从PORT 1收到设备A发送的数据帧,根据数据帧的SMAC学习到一条MAC地址表的条目,上图中紫色虚线所指的条目。(同理,如果从PORT 2收到设备B发送的数据帧,也会学习到相应的MAC地址表条目。)

(2)泛洪转发。设备C发现数据帧的DMAC是全F,说明是广播帧,那么就会将该数据帧从除源端口外的其他所有端口转发出去。

3. 基于VLAN的二层转发

根据前面的文章,我们知道,早期的局域网存在广播帧泛滥,信息安全等问题。而VLAN技术可以将物理局域网划分为一个一个的逻辑子网(每个逻辑子网是一个广播域),一定程度上解决了这些问题。下文,我们还是以上文的拓扑为基础(设备A~C在同一个VLAN广播域),基于VLAN内的不同类型的端口,来讲述VLAN的二层转发。

7c83b38c5d1445e192c353e178247503.png

3.1 Access口的二层转发

设备C的PORT 1和PORT 2均配置成Access口,PVID配置成10。

e6212c575779491cafdde3e9953b33de.png

(1)如果设备C收到的是Untagged帧,需要先插入一层802.1Q Tag,Tag中的VID值是10。如果设备C收到的Tagged帧中VID值是10,则可以接收且不需要插入802.1Q Tag。

(2)源MAC学习。设备C根据数据帧的SMAC学习到一条MAC地址表的条目,上图中紫色虚线所指的条目,MAC地址表也保存了VLAN信息。(同理,如果从PORT 2收到设备B发送的数据帧,也会学习到相应的MAC地址表条目。)

(3)目的MAC转发。设备C根据数据帧的DMAC+VLAN去MAC地址表中查找,找到对应的出端口是PORT 2,上图中绿色虚线框中的条目,那么就会将该数据帧从PORT 2转发。

(4)设备C在出口将数据帧的802.1Q Tag剥除掉,这样就完成了转发过程。

3.2 Trunk口的二层转发

设备C的PORT 1和PORT 2均配置成Trunk口,PVID配置成10,Allowed VLAN配置成20。

3.2.1 Trunk口PVID的二层转发

Trunk口PVID的二层转发与Access口PVID的二层转发一致,此处不再赘述,只简单以图片说明。

04917d201bb146998261b97029b3a6ea.png

3.2.2 Trunk口Allowed VLAN的二层转发

设备C的PORT 1和PORT 2均配置成Trunk口,Allowed VLAN配置成20。

5834d543519a400facaa7926870995a4.png

(1)如果设备C收到的Tagged帧中VID值是20,则可以接收且不需要插入802.1Q Tag。

(2)源MAC学习。设备C根据数据帧的SMAC学习到一条MAC地址表的条目,上图中紫色虚线所指的条目,MAC地址表也保存了VLAN信息。(同理,如果从PORT 2收到设备B发送的数据帧,也会学习到相应的MAC地址表条目。)

(3)目的MAC转发。设备C根据数据帧的DMAC+VLAN去MAC地址表中查找,找到对应的出端口是PORT 2,上图中绿色虚线框中的条目,那么就会将该数据帧从PORT 2转发。

(4)设备C在出口不需要剥除数据帧中的802.1Q Tag即可转发,这样就完成了转发过程。

3.3 Hybrid口的二层转发

设备C的PORT 1和PORT 2均配置成Hybrid口,PVID配置成10,Untagged VLAN配置成20,Tagged VLAN配置成30。

3.3.1 Hybrid口PVID的二层转发

Hybrid口PVID的二层转发与Access口PVID的二层转发一致,此处不再赘述,只简单以图片说明。

13b20aba06a644cdb0e0c7af248def8d.png

3.3.2 Hybrid口Untagged VLAN的二层转发

设备C的PORT 1和PORT 2均配置成Hybrid口,Untagged VLAN配置成20。

bf7feb0e806a49848b38c1f4ecb6dcc2.png

(1)如果设备C收到的Tagged帧中VID值是20,则可以接收且不需要插入802.1Q Tag。

(2)源MAC学习。设备C根据数据帧的SMAC学习到一条MAC地址表的条目,上图中紫色虚线所指的条目,MAC地址表也保存了VLAN信息。(同理,如果从PORT 2收到设备B发送的数据帧,也会学习到相应的MAC地址表条目。)

(3)目的MAC转发。设备C根据数据帧的DMAC+VLAN去MAC地址表中查找,找到对应的出端口是PORT 2,上图中绿色虚线框中的条目,那么就会将该数据帧从PORT 2转发。

(4)设备C在出口将数据帧的802.1Q Tag剥除掉,这样就完成了转发过程。

3.3.3 Hybrid口Tagged VLAN的二层转发

Hybrid口Tagged VLAN的二层转发与Trunk口Allowed VLAN的二层转发一致,此处不再赘述,只简单以图片说明。

4c9b0b184b6a4a27a0308ec56ffd6978.png

3.4 VLAN的泛洪转发

VLAN的泛洪转发和MAC的泛洪转发差异不大,未知单播和广播都会泛洪,主要区别是只在VLAN域内泛洪。如下图中的PORT 4,因为不在VLAN 10内,所以不会泛洪到这个端口。整体实现原理差异不大,此处不再赘述,只简单以图片说明。

ee7281563bbe45eaa090c8d45d82c600.png

4. VLAN的二层转发方式(扩展介绍)

4.1 独立式VLAN学习

通过上文,我们可以看出,设备在查MAC地址表转发的时候,索引是MAC+VLAN,这样的转发方式称为独立式VLAN学习(Independent VLAN Learning,IVL)。这种方式的VLAN学习,VLAN之间不会互相影响,目前实际应用中的二层交换机大多也都采用这种方式。

4.2 共享式VLAN学习

此外,我们也可以将MAC作为索引,去查表转发,这样的转发方式称为共享式VLAN学习(Shared VLAN Learning,SVL)。具体的转发过程如下所示。

设备C的PORT 1和PORT 2均配置成Trunk口,PVID配置成10。

2aa531a2adfb4c8a8e95a733a548d5b5.png

(1)如果设备C收到的是Untagged帧,需要先插入一层802.1Q Tag,Tag中的VID值是10。如果设备C收到的Tagged帧中VID值是10,则可以接收且不需要插入802.1Q Tag。

(2)源MAC学习。设备C根据数据帧的SMAC学习到一条MAC地址表的条目,上图中紫色虚线所指的条目,MAC地址表也保存了VLAN信息。(同理,如果从PORT 2收到设备B发送的数据帧,也会学习到相应的MAC地址表条目。)

(3)目的MAC转发设备C根据数据帧的DMAC去MAC地址表中查找,找到之后,检查该条目的VLAN是10,满足要求。所以对应的出端口是PORT 2,上图中绿色虚线框中的条目,那么就会将该数据帧从PORT 2转发。

(4)设备C在出口将数据帧的802.1Q Tag剥除掉,这样就完成了转发过程。

看起来,这样的转发方式似乎也没有什么问题,真的是这样的吗?我们继续分析。

设备C的PORT 1和PORT 2均配置成Trunk口,Allowed VLAN配置成20,30。

e561a390583440e59bc7a1dae48feb8a.png

如果此时,设备C从PORT 1同时收到Tagged 20和Tagged 30的数据帧,那么此时MAC地址表就会不停地变化,即00-0C-88-00-00-0A这一条MAC地址表条目的VLAN在20和30之间不断地变化。同理,00-0C-88-00-00-0B这一条目也是类似的。

如果在某一时刻下,00-0C-88-00-00-0B这一MAC地址表条目的VLAN变成了30,那么此时就只有Tagged 30的报文能够从PORT 2转发出去,而Tagged 20的就会被丢弃掉。所以,在实际的应用中,SVL方式的二层交换机已经比较少见了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com