二层转发原理

1 二层转发基础
这里的二层指的是计算机网络七层模型中的二层,从第一层到第7层分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层 。还有一种说法是4层(或者是5层)网络模型,分别是数据链路层、网络层、运输层和应用层,如果按照5层的说法还要加上物理层 。这里的二层指的是数据链路层 。

二层转发原理

文章插图
 
1.1 以太网基础
以太网冲突检测
CSMA/CD:载波侦听与冲突检测,主机在发送数据包时,先检测线路是否被其他主机占用,确保发送数据包时线路是空闲的;发现冲突就停止发送,延迟一个随机时间之后再继续发送 。
mac地址
MAC地址也就是物理地址,大小为48位,6个字节,前24位是厂商代码,后24位为序号,比如H3C厂商代码为00-0f-e2 。
  • 单播地址:第一个字节最低位为0,如 00-0f-e2-00-00-06
  • 多播地址:第一个字节最低位为1,如 01-0f-e2-00-00-06
  • 广播地址:48位全为1,如ff-ff-ff-ff-ff-ff
以太帧格式
二层转发原理

文章插图
 
前两个字段分别是目的地址和源地址字段 。第3个字段是2字节的类型字段,用来标识上一层是什么协议(0x800:IP协议,0x0806:ARP协议等) 。第4个字段是数据字段,长度在46-1500字节之间 。最后一个字段是CRC检验字段,存放4字节的帧检测序列FCS 。校验范围是目的地址、源地址、类型、数据字段 。
MAC帧长度最小为64字节,数据字段最小为46字节,如果不够,则自动加0填充 。
MAC帧格式中,其首部并没有帧长度字段,那么MAC层怎么知道接收到的以太网帧中取出多少字节数据交付上一层协议呢?我们知道,以太网帧使用的曼切斯特编码,这种编码的一个重要特点就是:在曼切斯特编码的每一个码元(不管码元是1还是0)的正中间有一次电压转换(从高到低或从低到高) 。当发送方把一个以太网帧发送完毕后,就不再发送其他码元了,一次,发送发网络适配器接口上电压也就不再变化,这样接收方就很容易找到以太网的结束位置 。
802.3帧格式
二层转发原理

文章插图
 
以太帧和802.3帧如何区别
802.3定义的有效长度值与以太网的有效类型无一相同,这样就可以区分了 。
MAC最小长度为什么是64字节
以太网采用CSMA/DA冲突检测算法,一个主机发送一个数据包后最多经过一个征用时间就会知道该数据包是否收到了碰撞,以太网以51.2us作为征用时间,对于10M以太网,在征用时间时间内可以发送512 bit数据,也就是64字节 。这64字节出去以太帧首部以及检验和字段的长度共16字节,也就剩下46字节,也就是以太帧数据域的最小长度了 。
冲突域和广播域
  • 冲突网络(冲突域):连接在同一个到导线上的所有工作站点集合,一个节点发出的报文其余节点都能收到,从而产生冲突 。
  • 广播网络(广播域):限制以太网广播报文的范围,一个站点发送一个广播报文其余站点都可以收到 。
【二层转发原理】一般来说,广播网络定义了第三层网络,如IP子网等,VLAN简单来说就是一个广播域 。
HUB设备
HUB设备也就是咱们常说的集线器,HUB对所有连接的LAN制作信号的中继,也就是当信号衰减时,再重新修正信号重新发送 。连接在集线器上的所有设备构成了一个冲突域和广播域,这样在主机数目比较多时就会产生冲突泛滥和广播严重问题 。
二层转发原理

文章插图
 
2 二层转发原理
二层转发流程
  1. 提取数据报的源MAC地址,查询MAC转发表(也就是L2FDB),如果找到就直接发送到对应端口 。
  2. 对于表中不包含的地址,通过广播发送,也就是发送到所有端口 。
  3. 使用地址自动学习(根据源MAC地址学习)和老化机制(定时机制)来维护MAC转发表的信息,二层转发一般不会更改数据包内容 。

二层转发原理

文章插图
 
引入VLAN
虽然交换机解决了冲突域的问题,但是还是存在广播域问题,这里就应用到了VLAN,也就是在二层交换机上引入VLAN机制 。
二层转发原理

文章插图
 
VLAN机制可以使处在相同VLAN下的主机任意通信(二层交换),不同VLAN主机通信完全隔离,如需通信需通过三层交换,阻断广播包,减小广播域,提供了网络安全性 。VLAN简单来说就是一个广播域,可以跨越多个物理设备构成一个VLAN,这样网络构建和维护更加方便 。


推荐阅读