3.1 使用点对点信道的数据链路层
数据链路层的地位
数据链路层是 OSI 参考模型中的第二层协议,它位于物理层之上,网络层之下。数据链路层主要解决相邻节点之间可靠地传输数据的问题,为网络层提供可靠的数据传输服务。 :::info 在计算机网络体系中,数据链路层起着桥梁的作用,它负责将网络层传来的数据分割成数据帧,并对每个数据帧进行封装加上标识和检错等控制信息,接收端则根据这些控制信息重新组合成数据。 :::
简单的来说它保证了数据的可靠传输,并且是上层协议运作的基础
路由器为桥梁
交换机为桥梁
数据链路层的数据流动
数据链路层信道类型
主要有两种类型:
点对点通信是没有问题的,但是在广播通信里面由于信道是共享的,所以不同节点通信的时候会产生碰撞:
这问题在之后会进行解决,这里了解一下即可。
数据链路和帧
:::info 💡链路指的是一个节点到相邻节点的一段物理链路(有线或者无线)。 :::
链路中间没有其他任何的交换节点。
数据链路就是在链路的基础上,加上实现控制数据传输的协议的硬件和软件。
而在数据链路层传输的单位被叫做帧。
三个基本问题
数据链路层需要解决的问题有三个:
- 封装成帧:用于将接收到的比特流划分为若干个数据帧
- 透明传输:忽略控制信息中的部分值而不影响数据的正确传输
- 差错检测:检测数据传输过程中是否发生错误
封装成帧
:::info 💡封装成帧 (framing):在一段数据的前后分别添加首部和尾部,构成一个帧。
首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。 :::就好比送信件之间需要把信件包装起来一样,数据链路层不能直接发送数据,而是吧数据封装为数据帧。
这里的IP数据报就是上层传递过来的数据,也就是所谓的信件。
这里还有一个概念叫MTU
,意思是最大传输单元,规定了所能传送的帧的数据部分长度上限。首部和尾部就可以确定一个数据帧。
如何进行帧定界?
使用控制字符作为帧定界符号:
- 控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。
控制字符 EOT (End Of Transmission) 放在一帧的末尾,表示帧的结束。
透明传输
前面提到通过控制字符SOH和EOT进行帧定界,众所周知字符都是由二进制代码表示,一般来说这两个控制字符都是不常用的字符,但是也有可能数据帧的部分也可能出现这种特殊的控制字符。
在判别帧定界的时候就会出现如下问题:
如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”,导致错误。
这就是透明传输需要解决的问题 :::info 💡“在数据链路层透明传送数据”表示:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。 ::: 具体的解决方案有两种:字节填充
- 字符填充
可以理解为在每个数据帧中的控制符前面加上一个
**转义符**
,告诉系统这个控制符在数据帧中,是无效的。
差错检测
在数据传输过程,数据有可能收到噪声干扰等因素而出错:
针对出错定义了一个**误码率**
:在一段时间内,传输错误的比特占所传输比特总数的比率。
差错检测顾名思义就是在接收方检测收到的数据是否出错。经常采用检测的方法为循环冗余检验 CRC 。
CRC
CRC原理
在发送端,先把数据划分为组。假定每组 k 个比特。 CRC 运算在每组 M 后面再添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去。一共发送 **(k + n)**
位。
冗余码的计算
由图可以看出,冗余码的计算步骤如下:
- 原数据后面增加
n
位0 **k+n**
位的封装数据除以一个**n+1**
位的除数P
- 最后的余数
n位
CRC添加在原始数据的尾部(替换了原来的n位0)
在接收方:
- 把收到的数据继续除以
除数P
- 如果余数是
**0**
,接收方会接受这个数据帧 - 如果余数是
**1**
,接受方丢弃这个数据帧
这种通过添加冗余码而进行差错检测的方法叫做帧检验序列 FCS。
CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。 FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
CRC 冗余码的计算举例
注意:这里做的不是减法,而是异或 除数是n位的时候,如果算出来余数为
**n-1**
位,那么下一位商为1,如果小于**n-1**
,那么商为0。
多项式表达
可以通过多项式来表达循环冗余校验过程,例如:
当除数P=1101
的时候,那么可以用多项式:P(X) = X3 + X2 +1
。
P的各位表示的就是P(X)各项的系数:
P(X) = **1***X3 + **1***X2 + **0***X + **1***1
注意事项
CRC差错检测只能检测数据是否有错误,不能保证检测到所有的数据帧能被传输到接收端。
举个例子,比如我发送了十封信,CRC可以保证在接收端检测每一封信在传输过程中是否出现了错误,但是不能保证所有的信都可以安全送达。
所以传输数据帧还有可能出现的错误:
- 帧丢失:数据帧传输过程中丢失
- 帧重复:数据帧传输过程中重复了一份或者多份
- 帧失序:接受到帧的顺序出错
也就是说CRC这种方法,只能保证可靠传输,即数据链路层的发送端发送什么,在接收端就收到什么。
要做到可靠传输,还必须再加上帧编号、确认和重传等机制。
3.2 点对点协议 PPP
PPP是指“点对点协议”,它是一种为了在两个网络设备之间建立直接连接而设计的数据链路层协议。PPP协议可用于各种传输介质(例如串行线路、光纤、同轴电缆等),并且支持多种身份验证和加密协议。
PPP 协议的特点
PPP 协议应满足的需求
- 简单 ——首要要求。
- 封装成帧 —— 必须规定特殊的字符作为帧定界符
- 透明性 —— 必须保证数据传输的透明性
- 多种网络层协议 —— 能够在同一条物理链路上同时支持多种网络层协议
- 多种类型链路 —— 能够在多种类型的链路上运行
- 差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
- 检测连接状态 —— 能够及时自动检测出链路是否处于正常工作状态。
- 最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性
- 网络层地址协商 —— 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址
- 数据压缩协商 —— 必须提供一种方法来协商使用数据压缩算法。
其实重点只需要记住三个基本问题加上一个简单的要求即可。
PPP协议的组成
三个组成部分:
- 一个将上层数据( 如:IP 数据报)封装到串行链路的方法,即封装帧的方法。
- 一个链路控制协议 LCP (Link Control Protocol)。
- 一套网络控制协议 NCP (Network Control Protocol)。
PPP 协议的帧格式
基本格式
:::info PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。 :::各个字段的意义
| 字段 | 意义 | | —- | —- | | F | 连续两帧之间只需要用一个标志字段 | | A | 地址字段,只置为 0xFF。实际上不起作用 | | C | 控制字段,标识控制流程 | | 协议 | 标识上层协议的信息 | | FCS | 冗余码校验 |
PPP透明传输问题
PPP保证透明传输的方法有两种:
- 当 PPP 用在异步传输时,使用字节填充法。
- 当 PPP 用在同步传输链路时,采用零比特填充法。
异步传输 – 逐个字符的传送
同步传输 – 一连串的比特连续传送
所谓字节填充,指的是在每一个有可能出现的控制字符前加上一个转义字符,使其在传输过程中不具备控制能力。
零比特填充的原因如下,由于控制字段一般为十六进制的7E
,其特征就是包含连续的六个1
,所以我们在信息字段中,但凡碰到连续的五个1,都在后面添加一个**0**
,最后收到信息的时候,再还原回去,以此防止控制字段的出现影响帧定界。
PPP 协议的工作状态
如图所示:
PPP链路初始化的基本流程如下:
- 建立物理连接:设备之间通过串口线或光纤等介质建立物理上的连接。
- 链路启动:设备之间通过发送控制帧开始链路激活过程,进入初始化阶段。
- LCP协议初始化:链路控制协议(LCP)用于协商双方互相支持的协议选项,比如身份验证、最大传输单元(MTU)、压缩方式、加密方式等。设备之间会交换一系列LCP数据包进行协商。
- 身份认证:如果需要身份认证,则会交换PAP或CHAP协议数据包进行认证。
- NCP协议初始化:网络控制协议(NCP)用于协商双方使用的上层网络协议,如IP、IPX、AppleTalk等。设备之间会交换一系列NCP数据包进行协商。
- 可选协议协商:设备之间还可以协商其他自定义的可选协议,如IPCP、IPv6CP等。
简单来说就是:
- 先插网线
- 再通链路进行连接(LCP配置)
- 再上网(NCP配置)
3.3 使用广播信道的数据链路层
域网的数据链路层
在前文中讲到的PPP协议,是需要每两个主机之间搭建物理线路的,这就注定了主机和主机之间的距离不会很远,在同一区域的多个主机之间如果需要互相访问,每一对主机之间搭建物理线路又导致花销很大,所以出现了局域网。
局域网的特点
局域网最主要的特点:
- 网络为一个单位所拥有
- 地理范围和站点数目均有限。
局域网具有如下主要优点:
匹配电阻是将总线终端电阻与总线特性阻抗匹配的一种电阻,它可以在总线上限制反射并减小信号失真程度。此外,匹配电阻还可以降低电磁干扰所造成的影响,提高总线的抗干扰能力。
局域网的传输媒体
- 双绞线
- 光纤
- 基站
共享信道的问题
在上面主要的三种局域网结构中,我们可以看到不同的主机之间是共享一部分通信信道的,如果在这一段共享信道上,两个主机同时传输信息,有可能发生以下这种情况:
这种情况我们称之为:信号的碰撞。可以理解为两量送邮件的车撞车了,一旦撞车了,信号发送就失败了。
以太网
以太网(Ethernet)是一个局域网技术标准,最早由Xerox公司研发,后来被DEC、Intel、Xerox联合推广开来。它采用了CSMA/CD协议(即载波侦听多路访问/冲突检测),可以支持最大长度为1500字节的数据帧传输。以太网具有传输速度快、可靠性高等特点,成本也比较低廉。
以太网在局域网中得到广泛应用,它是实现局域网的一种网络技术标准。局域网是指在一个相对较小的区域内连接多个计算机和设备的数据通信网络,其范围通常不会超过1-2公里。而以太网则是其中最为常见的一种局域网技术标准。
以太网是局域网技术标准中的重要一员,其搭建和部署也是局域网实施的基础。除了以太网外,还有许多其他的局域网标准。
以太网有两个标准:
- DIX Ethernet V2:世界上第一个局域网产品(以太网)的规约。
- IEEE 802.3:第一个 IEEE 的以太网标准。
了解即可。
适配器
:::info
网络适配器是一种硬件设备,也称为网卡。它是计算机与网络之间的接口,并允许计算机通过连接到一定的物理网络上进行通信。
:::
网络适配器将数字信号转换为模拟信号,可将计算机中的数据包、帧或载荷发送到局域网或互联网上的其他设备。对于每个网络适配器,都有一个唯一的MAC地址**(Media Access Control Address)分配给该设备,用于在局域网或广域网中识别适配器。
网络适配器的作用是使计算机能够与网络上的其他设备进行通信**。通过提供一个物理链接到网络,网络适配器可将计算机中的数据从一个设备传输到另一个设备。适配器可以将数字信息转换为模拟信号,并根据指定的协议格式打包和传输数据。此外,它还执行其他功能如错误检测和纠正、流量管理等。
CSMA/CD 协议
问题背景
首先我们要知道,最早的以太网是总线型的:
这种类型的以太网优点:易于实现广播通信,简单,可靠。
达成通信的方式也很简单:将**接收站的硬件地址写入帧首部中的目的地址字段中。仅当数据帧中的目的地址与适配器硬件地址一致**时,才能接收这个数据帧。
缺点也很明显,就是会发送碰撞。
解决方案
面对这种碰撞导致的信息发送失败的情况,以太网采取了两种措施:
(1)无连接工作
这种工作方式要求:
- 不必先建立连接就可以直接发送数据
- 对发送的数据帧不进行编号,也不要求对方发回确认
简单来说就是发送方只负责发送,不负责确定是否送达。
以太网采取无连接工作方式的原因在于,在数据帧传输过程中,发送方并不需要与接收方建立持久的连接,而是一旦数据帧形成就可以直接发送给接收方。
具体来说,当一个节点要发生数据帧时,它首先会检测是否有其他节点正在发送数据,如果没有,它就直接发送数据。这种方式使得以太网能够支持高效的广播和多播通信,同时也减少了网络的管理和配置成本。
简单来说就是,发送端不管到底发送给谁,面对局域网内所有的主机,一律全部发送,如果是目标端,就接收这个消息,如果不是就丢弃。
(2)采用曼切斯特编码
以太网采用曼彻斯特编码是为了让传输数据跨越物理层更加稳定可靠。
:::info
此时物理层上传输码元的速度数数据率的两倍。
:::
具体原理不需要知道。
CSMA/CD 协议要点
前面在无连接工作中提到了一个很重要的点,即发送端发送之前会检测是否有其他节点正在发送数据。CSMA/CD协议就是解决这个问题。
CSMA/CD全称:载波监听多点接入 / 碰撞检测
- 多点接入:说明这是总线型网络。许多计算机以多点接入的方式连接在一根总线上。
- 载波监听:即“边发送边监听”。不管在想要发送数据之前,还是在发送数据之中,每个站都必须不停地检测信道。
- 碰撞检测:适配器边发送数据,边检测信道上的信号电压的变化情况。电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞(或冲突)。
在CSMA/CD协议下,一旦发送端检测到了碰撞,做如下事情:
- 适配器立即停止发送。
- 等待一段随机时间后再次发送。
CSMA/CD工作流程
如何进行碰撞检测
假设局域网内只有两个主机A和B,A如果想要给B发送信号,需要先“派一个侦察兵”去B,当这个“侦察兵”没有发生碰撞的时候,就说明此时发送数据不会发生碰撞。
单程端到端传播时延记为**τ**
。
那么A 需要单程传播时延的 2 倍的时间,才能检测到与 B 的发送产生了冲突。
以太网的端到端往返时延 2τ 称为争用期,或碰撞窗口。具体的争用期时间 = 51.2 μs。也就是说τ= 25.6 μs。
:::info
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
:::
对于 10 Mbit/s 以太网,在争用期内可发送 10 M 51.2 μs = 512 bit,即 *64 字节。
也就是说:
- 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
- 以太网规定了最短有效帧长为 64 字节。凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧,应当立即将其丢弃。
以太网最大端到端单程时延必须小于争用期的一半 (即 25.6 μs),相当于以太网的最大端到端长度约为 5 km。
重传机制
前面说过,如果检测到可能有碰撞,就需要等待一段时间之后进行重传。这里采用的重传机制是截断二进制指数退避。 :::info 发生碰撞的站停止发送数据后,要退避一个随机时间后再发送数据。 ::: 具体退避的规则r如下:
- 基本退避时间 = 2τ
- 从整数集合 [0, 1, … , (2k - 1)] 中随机地取出一个数,记为 r。
**重传推迟的时间 = r ⅹ 基本退避时间**
。 - 参数 k = Min[重传次数, 10]
- 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。
举个例子:
第 1 次冲突重传时:
k = 1,r 为 {0,1} 集合中的任何一个数。
第 2 次冲突重传时:
k = 2,r 为 {0,1,2,3} 集合中的任何一个数。
第 3 次冲突重传时:
k = 3,r 为 {0,1,2,3,4,5,6,7} 集合中的任何一个数。
为什么这么做?
因为若连续多次发生冲突,表明可能有较多的站参与争用信道。上述退避算法可使重传需要推迟的平均时间随重传次数而增大(称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。
干扰信号
在以太网中,干扰信号通常被称为“Jam Signal”,它的作用是在发生碰撞时告知其他节点当前冲突已经发生并终止当前传输。
当两个或多个设备同时尝试在同一段物理介质上传输数据时,会产生数据包碰撞。此时发送方设备会通过检测碰撞信号来判断是否发生了碰撞,并立即发送干扰信号来通知其他设备。其他接收方设备收到干扰信号后,不再继续进行当前的数据传输,而是等待重新发送时间并尝试重新送达数据。
一般情况下,干扰信号大小为32
或48
比特。
:::info
此外,以太网还规定了帧间最小间隔为 9.6 μs。
:::
也就是每一帧发送的时间间隔是9.6 μs。对应10Mbit/S的网络就是间隔96个比特时间。
完整流程图如下:
使用集线器的星形拓扑
什么是集线器
星形拓扑的以太网一般都采用双绞线,集线器是用于物理层网络的设备,也被称为“中继器”。它通常用于将多个局域网或广域网的端口连接起来形成一个单一的网络部分。集线器可以通过放大电信号和消除噪声来加强信号并扩展网络距离。
:::info
集线器有多个数据端口,每个端口都可以连接一个计算机、服务器或其他网络设备。当其中一个设备发送数据时,集线器将数据从该端口复制到所有其他端口,以确保所有连接的设备都能接收到相同的信息。
:::
也就是说集线器采取的工作方式是广播。10BASE-T
的解释:
- 10:速率为 10 Mbit/s
- BASE:表示基带
-
集线器的特点
使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。
- 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线。
- 很像一个多接口的转发器,工作在物理层。
- 采用了专门芯片,进行自适应串音回波抵消,减少了近端串音。
以太网的信道利用率
基本概念
前面提到,多个站在以太网上同时工作就可能会发生碰撞。
一旦发生了碰撞,信道资源实际上是被浪费了。因此,当扣除碰撞所造成的信道损失后,以太网总的信道利用率并不能达到 100%。假设:单程端到端传播时延 = τ ,则争用期长度 = 2τ。检测到碰撞后不发送干扰信号。 设:帧长 = L (bit),数据发送速率 = C (bit/s),则帧的发送时间 T0 = L/C (s)。
那么以太网实际的占用情况为:
整个占用期的时间实际为:发送时延T0 + 传播时延 τ
那么以太网信道的利用率就为:
其中n
表示争用期的个数。那么由于n
的大小实际是不固定的,需要根据实际情况才能确定。
所以能改变的就是τ
和T0
的大小,简单来说就是缩短传播时延和增加T0。
在以太网中定义了参数 a = 以太网单程端到端时延 τ 与帧的发送时间 T0 之比:
- a → 0,表示一发生碰撞就立即可以检测出来, 并立即停止发送,因而信道利用率很高。
- a 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。
对于以太网参数 a 的要求:
- 为提高利用率,以太网的参数 a 的值应当尽可能小些。
- 当数据率一定时,以太网的连线的长度受到限制,否则 τ 的数值会太大。
以太网的帧长不能太短,否则 T0 的值会太小,使 a 值太大。
信道利用率的最大值
也就是没有争用期的时候:
只有当参数 a 远小于 1 才能得到尽可能高的极限信道利用率。
- 据统计,当以太网的利用率达到 30% 时就已经处于重载的情况。
以太网的 MAC 层
硬件地址
:::info 硬件地址又称为物理地址,或 MAC 地址。
IEEE 802 标准为局域网规定了一种 48 位的全球地址(简称为地址)是指局域网上的每一台计算机中固化在适配器的 ROM 中的地址。 :::每一台计算机的MAC地址都是全球独一无二的
这48位MAC地址必须满足以下条件:
- IEEE 注册管理机构 RA 负责向厂家分配前 3 个字节 (即高 24 位),称为组织唯一标识符 OUI (Organizationally Unique Identifier)。
- 厂家自行指派后 3 个字节 (即低 24 位),称为扩展标识符 (extended identifier)。
- 必须保证生产出的适配器没有重复地址。
- 地址被固化在适配器的 ROM 中。
固化表示一旦生成之后无法修改。
单站地址,组地址,广播地址
IEEE 规定地址字段的第 1 字节的最低位为 I/G (Individual / Group) 位。
- 单站地址:I/G 位 = 0。
- 组地址:I/G 位 = 1。组地址用来进行多播。
广播地址:所有 48 位都为 1(全 1)。只能作为目的地址使用。
全球管理与本地管理
IEEE 把地址字段第 1 字节的最低第 2 位规定为 G/L (Global / Local) 位。
全球管理:G/L 位 = 0。厂商向 IEEE 购买的 OUI 都属于全球管理。
- 本地管理:G/L 位 = 1。 这时用户可任意分配网络上的地址。
MAC帧的格式
常用的以太网 MAC 帧格式有 2 种标准:DIX Ethernet V2 标准和IEEE 的 802.3 标准
最常用的 MAC 帧是以太网 V2 的格式。
重点记住这里IP数据报的范围:**46-1500**
。为什么最低是
46
?因为以太网规定最短有效帧的长度是**64**
,64-6-6-2-4=46。
其中类型字段用来标志上一层使用的是什么协议,以便在接收端把收到的 MAC 帧的数据上交给上一层的这个协议。
由硬件在帧的前面插入 8 字节。第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC 帧的比特同步。第二个字段 1 个字节是帧开始定界符,表示后面的信息就是 MAC 帧。
无效的mac帧
接收端收到的帧如果满足以下条件,就被判定为无效帧:
- 数据字段的长度与长度字段的值不一致
- 帧的长度不是整数个字节
- 用收到的帧检验序列 FCS 查出有差错
- 数据字段的长度不在 46 ~ 1500 字节之间
- 有效的 MAC 帧长度为 64 ~ 1518 字节之间
对于无效帧,以太网只丢弃不重传。
3.4 扩展的以太网
在数据链路层扩展以太网
碰撞域
如图所示,多个小的以太网可以通过集线器扩展成一个更大的以太网。
这是一种物理层面扩展以太网的方法,不重要我就没有写,知道即可。
在碰撞发生期间,在共享介质的范围内有许多其他设备也可以监听这个通信。每个设备感知到的这一区域就是其碰撞域(又叫冲突域),即该设备所在的物理网络拓扑中与该设备直接相连的其他所有设备组成的范围。
采用集线器扩展以太网的优缺点如下:
优点:使原来属于不同碰撞域(冲突域)的计算机能够跨碰撞域通信。扩大了以太网覆盖的地理范围。
缺点:碰撞域增大了,总的吞吐量未提高。如果使用不同的以太网技术(如数据率不同),那么就不能用集线器将它们互连起来。
:::info
一般情况下,碰撞域越小越好。
:::
网桥和交换机
上面说道,采用集线器的弊端就是让碰撞域增大了,解决方式就是用网桥或者交换机代替集线器连接不同的以太网。
网桥:主要用于将两个或多个物理网络(或单一物理网络的分割)连成一个逻辑网络
交换机:除了具备网桥的基本功能外,还支持带宽抢占、虚拟局域网(VLAN)、QoS(质量服务)等高级特性
更通俗的理解是交换机可以理解为多端口的网桥
与集线器不同,网桥和交换机会根据MAC地址对以太网帧进行识别并转发到目标端口,从而形成多个独立的碰撞域。这样做的好处是可以限制广播帧的范围,防止冲突和拥塞,同时减少了冲突域的大小,有效提高了网络的性能和可靠性。
以太网交换机的性能远远超过普通的集线器,而且价格并不贵。
:::info 以太网交换机让每个用户独享带宽,增加了总容量。 :::
简记就是:集线器的用户共享平分集线器带宽,交换机的用户分别独享交换机带宽。
以太网交换机的交换方式
(1)存储转发
把整个数据帧先缓存,再进行处理。
(2)直通方式
接收数据帧的同时立即按数据帧的目的 MAC 地址决定该帧的转发接口。
缺点:不检查差错就直接将帧转发出去,有可能转发无效帧。
这两种方式很重要,关乎都后面自学习功能。
以太网交换机的自学习功能
首先我们要知道交换机如何转发数据帧到相应的主机,这是因为交换机内部有一个交换表,初始状态下这张表是空的,交换机本身也不知道每个主机对应交换机的端口,通过不断的广播数据的过程学习从而不断丰富交换表的内容,最后提高整体转发数据帧的效率,下面举个例子:
假设此时有四台主机ABCD,此时A需要向B发送数据帧。
可以从表中看出,交换机一开始不知道主机的MAC地址以及对应插入的接口位置。
此时我们A 先向 B 发送一帧。该帧从接口 1 进入到交换机。
通过识别这个数据帧,交换可以知道主机A
从接口1
进入交换机,于是更新交换表:
此时交换机不知道目的地址主机B对应哪个接口,所以此时对于A发出的数据进行广播。此时主机CBD都收到了来自主机A的数据帧。
由于与该帧的目的地址不相符,C 和 D 将丢弃该帧。
此时如果B需要给A发送一个数据帧,该帧从接口 3 进入到交换机。
交换机收到帧后,先查找交换表。发现交换表中的 MAC 地址有 A,表明要发送给 A 的帧应从接口 1 转发出去。于是就把这个帧传直接送到接口 1 转发给 A。
这里就没有广播这一个步骤了。于此同时更新交换表:
交换表为什么要设置有效时间?
这是考虑到可能有时要在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间。过期的项目就自动被删除。
这种自学习方法使得以太网交换机能够即插即用,不必人工进行配置。
交换机自学习和转发帧的步骤归纳
2 台以太网交换机互连
如果有以下两台交换机:
假设:A 向 B 发送了一帧,C 向 E 发送了一帧,E 向 A 发送了一帧。
根据上面的分析我们可以知道发送完三个数据帧之后的交换表应该如下:
这里说明一下为什么S1
中E的接口是5,是因为对于局域网S1
来说,E实际就是通过接口5
进来的,所以对应的接口号就是5
。对于S2
中的AC也是同理。
S2中主机E广播消息的时候,处理自己的
接口1
,剩下5个接口都进行广播。
但如果两个交换机S2的接口6互连的话,会存在一个回路问题:
从A出发:
- 由于
S1
交换机的交换表为空,所以对S1
中的接口2、3、4、**5、6**
都进行广播 S1
更新交换表:**(A地址,1接口,24h)**
- 其中
2、3、4
都丢弃该数据帧 - 对于
S2
:接口5
来了一条数据帧,由于S2
的交换表同样没有E的接口信息,于是再次广播给接口1、2、3、4、**6**
- 此时S2中
**接口5**
的数据帧通过S2中**接口6**
传回到S1的**接口6**
- 由于此时S1仍然没有E的接口信息,S1的
**接口6**
传出来的数据帧又会被广播到**接口5**
- 从此陷入死循环
消除回路:使用生成树协议(SPT)
生成树协议 STP (Spanning Tree Protocol) 要点:不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。
了解即可
虚拟局域网
以太网主要存在的问题
(1)广播风暴
广播风暴是指当一个设备向网络中广播一个帧时,其他所有设备都会收到该广播帧并将其向外广播,因此导致了大量重复的帧在网络中传输,占据了多数带宽资源。此时网络吞吐量急剧下降,甚至可能导致网络崩溃,造成严重影响。
(2)安全问题
以太网中所有的节点序列号—— MAC 地址是公开的可能会被轻易地伪造被攻击者利用。同时,由于MAC地址不存在身份验证和加密技术,数据将面临窃听、篡改等威胁。
(3)管理困难
传统以太网拓扑结构层次较低,缺乏良好的管理机制和安全保护功能,容易受到攻击或出现错误,不利于网络维护。例如设备故障、链路故障、路由选择等问题都需人工干预,而这种”手动式管理”容易出现失误,增加了网络管理的复杂度。
虚拟局域网 VLAN
虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN。
:::info
虚拟局域网其实只是局域网给用户提供的一种服务,并不是一种新型局域网。
:::
上图中同一水平面的属于一个局域网,VlAN像是对三个真实局域网的纵向切割。
在发送数据的时候,不同局域网的主机,只接受相同VLAN中主机发送的数据帧:
虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息 (即“广播风暴”) 而引起性能恶化。
虚拟局域网优点
- 改善了性能
- 简化了管理
- 降低了成本
-
划分虚拟局域网的方法
基于交换机端口:在第 1 层划分虚拟局域网的方法,缺点是不允许用户移动。
- 基于计算机网卡的 MAC 地址:在第 2 层划分虚拟局域网的方法,缺点是需要输入和管理大量的 MAC 地址。如果用户的 MAC 地址改变了,则需要管理员重新配置VLAN。
- 基于协议类型:根据以太网帧的第三个字段“类型”确定该类型的协议属于哪一个虚拟局域网。属于在第 2 层划分虚拟局域网的方法。
- 基于 IP 子网地址:根据以太网帧的第三个字段“类型”和 IP 分组首部中的源 IP 地址字段确定该 IP 分组属于哪一个虚拟局域网。属于在第 3 层划分虚拟局域网的方法。
-
虚拟局域网使用的以太网帧格式
如图所示,相比较于MAC的帧格式,只是多一个4字节
的802.1Q标记(实际就是用户标记是哪个VLAN的)。
在VLAN中传递数据帧的时候: 发送的时候,会添加802.1Q标记
- 接收的时候,会拆解802.1Q标记