计算机网络知识整理-数据链路层知识汇总(计算机网络入门参考指南)

第3章 数据链路层

3.1 关于数据链路层我们要学习什么

数据链路层,属于计算机网络五层体系结构中的第二层,属于计算机网络的低层。我们需要理解并掌握的内容如下:

  • 数据链路层的点对点信道和广播信道,以及这两种信道所使用的协议(PPP协议、CSMA/CD协议)
  • 点对点信道的数据链路层的基本问题:封装成帧、透明传输以及差错检测。
  • 广播信道的数据链路层的基本问题:识别主机以及处理数据碰撞。
  • 以太网MAC地址相关知识。
  • 适配器、转发器、集线器、网桥、以太网交换机的作用以及适用场合。

重点理解PPP协议以及CSMA/CD协议,以及链路层的几大基本问题的解决方案即可。

3.2 数据链路层概述

在开始学习数据链路层之前,我们需要先明确一些专属名词的概念。

  • 链路:链路是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
  • 节点:在此我们将任何运行数据链路层协议的设备成为节点(即主机、路由器、交换机和WiFi接入点等)。
  • :数据链路层传输的数据单元。在数据链路层中,各个传输节点将数据报封装在链路层帧中,并将该帧传送到链路中。

3.2.1 数据链路层分类

数据链路层根据使用的信道可以划分为两类:点对点通信和广播通信

3.2.1.1点对点信道

点对点信道:使用一对一的点对点的通信方式。

使用点对点信道的数据链路层面临着三个问题:

  • 封装成帧:将网络层交付到数据链路层的数据单元,添加数据链路层首尾控制信息后,以帧为数据传输单元继续传输数据,这个过程就叫封装成帧。(详细介绍见3.3小节)
  • 透明传输:在数据链路层中,我们所说的透明传输的意思是指,数据链路层对于要传输的数据而言是透明的(不存在的),即无论什么比特组合的数据都可以放在帧中完整无差错的通过数据链路层。(详细介绍见3.4小节)
  • 差错检测:在数据的传输过程中,可能由于外界的影响,导致比特0变成了比特1,从而出现了比特差错,数据链路层为了检测数据传输过程中是否出现了上述问题,采用了循环冗余检验(CRC)技术进行差错检测。(详细介绍见3.5小节)
3.2.1.2 广播信道

广播信道:种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

使用广播信道的数据链路层,除了面临着使用点对点信道的数据链路层所面临的三个问题之外,还面临着以下两个问题:

  • 识别主机:在广播信道中,多个主机共用同一个信道进行数据传输,因此,每个主机都可能收到不是发送给自己的数据,这个时候,常常会将“目的主机的MAC地址”附带在数据帧中进行传输,以便于信道中的各个主机识别该数据是否是传输给自己的。如果收到不是传送给自己的数据,一般会直接丢弃掉该数据帧。
  • 处理数据碰撞:在广播信道中,由于多个主机共用同一个信道传输数据,因此,就会出现同一时间多个主机发送数据的情况,这时就会导致数据碰撞,导致各个主机无法收到正确的数据帧。对于这种情况,有许多种处理的方法,常见的就是CSMA/CD控制协议。

3.2.2 数据链路层在何处实现

下图展示了一个典型的主机体系结构,数据链路层的主题部分是在网络适配器(网络接口卡,即网卡)中实现的,位于网络适配器核心的是链路层控制器,该控制器通常是一个实现了许多链路层服务(成帧、链路接入、差错检测等)的专用芯片。因此,链路层控制器的许多功能是用硬件实现的。

尽管数据链路层的大部分功能都是在硬件中实现的,但是部分数据链路层的功能是在运行于CPU上的软件实现的,例如组装链路层寻址信息、激活控制器硬件、将数据报向上交付给网络层等功能。因此数据链路层是软件和硬件的结合体

在这里插入图片描述

3.3 封装成帧

3.3.1 基本概念

封装成帧是数据链路层提供的最基本的服务,在数据链路层的发送端,会将接收到的网络层交付的数据报,添加首部和尾部,组成一个帧,将该帧交付给物理层,这个过程就叫做封装成帧,同时,在接收端,接收到物理层交付的比特流后根据数据帧的首部和尾部,来定界一个个的帧,将数据提取出来,随后将数据向上交付给网络层。

在这个过程中,帧头和帧尾的重要作用就是用于帧定界(确定帧的界限)以及添加必要的控制信息。因为物理层传输的比特流,是一个数据流,是无法进行数据的定界的。

在这里插入图片描述

添加帧头和帧尾的作用:

  • 添加数据链路层的必要控制信息
  • 帧定界

最大传送单元(MTU):链路层协议规定的所能传送的帧的数据部分长度上限。

3.3.2 帧定界

当数据链路层要传输的数据是由可打印(可由键盘输入的)的ASCII码组成的文本时,帧定界可以是用特殊的帧定界符。(ASCII码是7位编码,一共可以组成128个不同的ASCII码,其中可以打印出来的有95个,而不可打印的控制字符有33个,因此,可以使用这33个不可打印的控制字符作为帧定界符进行帧定界。)

下图展示了帧定界的概念,控制字符SOH放在帧的最前面,表示帧的开始,EOT放在帧的最后面,表示帧的结束。

在这里插入图片描述

注意:SOH和EOT的都是控制字符的名称,它们的十六进制编码都是01和04,并不是S,O,H或者E,O,T这三个字符。

帧定界的作用:判断收到的帧是否是完整的,如果不是完整的则丢弃。

3.4 透明传输

数据链路层对于要传输的数据而言是透明的(不存在的),即无论什么比特组合的数据都可以放在帧中完整无差错的通过数据链路层。

基于前面介绍的帧定界,我们可以发现,如果传输的数据是非ASCII码组成的文本时,就可能发生数据中的某个字节的二进制代码恰好和SOH或者EOT一样,这时数据链路层的帧定界就会出现差错,只接收部分帧,然后把另外一部分帧丢弃。这种情况下的数据链路层的传输就妨碍了数据的正确传输,此时数据链路层对于数据就是“可见”的了,违背了“透明传输”的原则。

为了解决数据链路层中可能出现的这种情况,我们常常会采用字节填充法或者比特填充法,对于数据进行特殊的处理,对在数据中出现的定界符进行转义,防止链路层的误读,导致不透明性。

  • 字节填充法

    在字节填充法中,帧定界符是SOH和EOT。

    在发送端的SOH和EOT前插入一个转义字符ESC(十六进制编码时1B,二进制是00011011),在接收端的数据链路层中,在交付数据给网络层之前会删除这个插入的转义字符。如果转义字符也出现在数据中,那么就在这个转义字符前面再插入一个转义字符,在接收端如果遇到两个相邻的转义字符,就会删掉前面一个转义字符。这种处理方法被称为字符填充法

在这里插入图片描述

  • 比特填充法

    在比特填充法中,帧定界符是01111110。

    在发送端,发送帧前扫描帧的数据部分,若出现连续的5个1,将在后续增加1个0。在接收端的数据链路层中,扫描帧的数据部分,如果出现连续的5个1,则将后续的0换成1。

3.5 差错检测

3.5.1 基本概念

  • 比特差错:数据在信道的传输过程中,可能会因各种外接因素的影响,导致比特由0变为1,或者由1变为0,这种现象叫做比特差错

  • 码误率:在一段时间内,传输错误的比特占传输的总比特数的比率叫做码误率。

    在现实生活中,通信链路并非是理想的,必须采用各种差错检测措施。

目前在数据链路层广泛使用了循环冗余检验CRC的检错技术。

3.5.2 CRC检错技术

CRC检错技术也被称为多项式编码,因为该编码能够将发送的比特串看作为系数为0和1的一个多项式,对比特串的操作被解释为多项式算术。

CRC检错技术的步骤总结如下:

  1. 发送数据前,发送方和接收方约定一个生成多项式G。
  2. 发送方将要发送的数据按照k比特为一组进行分组,基于要发送的数据和生成多项式G计算出n位的冗余码,将该冗余码添加到要传输的数据的后面一起发送给接收方。
  3. 接收方通过生成多项式G来计算收到的数据是否出现错误。

冗余码的计算规则:

  • 用二进制的模 2 运算进行 2的n次方 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
  • 得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 G,得出商是 Q 而余数是 R,余数 R 比除数 G 少 1 位,即 R 是 n 位。
  • 将余数 R 作为冗余码拼接在数据 M 后面发送出去。

举例说明CRC的原理:

  • 假定k = 6,要发送的数据M = 101001,冗余码的位数为n = 3,双方约定的生成多项式G = 1101。
  • 被除数可以得出为101001000,进行模2运算得出商Q = 110101,余数R = 001,发送方把R作为冗余码拼接在M后面发送给接收方,即发送方发送的数据为101001001,共(k + n)位。

在这里插入图片描述

  • 在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。
  • 循环冗余检验 CRC 和帧检验序列 FCS 并不等同。
    • CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
    • FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

注意:

如果数据链路层仅仅使用CRC差错检测技术,则只能做到对帧的无差错接受,即:“凡是接收端数据链路层接收的帧,我们都能以非常接近1的概率认为这些帧在传输过程中没有产生差错”,接收端接收到错误的帧后就会丢弃,虽然这些帧曾被接收到过,但是最终被丢弃了,还没有被接受。以上所述可以近似地表述为”凡是接收端在数据链路层接受的帧都是无差错的“。

但是在这里,我们所讲的无差错,是指无比特差错,并非只可靠传输,如果想在数据链路层实现可靠传输,光是使用CRC差错检测技术,是无法完成的,必须加上帧编号、确认和重传机制

3.6 可靠传输

注意:由于现有的实际有线网络的数据链路层中很少采用可靠传输,因此博主打算将该部分知识点放入传输层进行整理。

3.7 PPP协议

3.7.1 简介

在通信线路质量较差的年代,在数据链路层一般使用了可靠传输协议,即HDLC(高级数据链路控制协议)。但是在如今通信线路质量普遍较好的情况下,在数据链路层一般不采用可靠传输协议了。对于点对点链路,目前广泛的使用了相对较简单的点对点协议PPP协议。

PPP协议是IETF在1992年制定的,经过1993年和1994年的修订,现在的PPP协议在1994年就已经成为了互联网的正式标准。

用户使用拨号电话线接入互联网时, 用户计算机和 ISP 进行通信时所使用的数据链路层协议就是 PPP 协议。

在这里插入图片描述

3.7.2 PPP协议应满足的需求

  • 简单:IETF在设计互联网体系结构的时候,把最复杂的功能部分放在TCP协议中,而 IP协议相对比较简单,它不提供可靠的数据包服务,因此在这种情况下,数据链路层的PPP协议没有必要提供比IP协议更多的功能,因此简单即是PPP协议的首要需求。
  • 封装成帧:PPP协议必须规定特殊的字符作为帧定界符。
  • 透明性:必须保证数据传输的透明性。
  • 支持多种网络协议:能够在同一条物理链路上同时支持多种网络层协议。
  • 支持多种链路类型:能够在多种类型的链路上运行。
  • 差错检测:能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
  • 检测连接状态:能够及时自动检测出链路是否处于正常工作状态。
  • 最大传送单元:必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性。
  • 网络地址协商: 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
  • 数据压缩协商:必须提供一种方法来协商使用数据压缩算法。

PPP协议不需要保证可靠传输,不提供帧序号和确认机制。

原因如下:

  • 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
  • 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
  • 帧检验序列 FCS 字段可保证无差错接受。

3.7.3 PPP协议的组成

PPP协议由三个部分组成

  • 一个将IP数据报封装到串行链路的方法。PPP既支持异步链路,也支持面向比特的同步链路。
  • 一个用来建立、配置和测试数据链路连接的链路控制协议LCP
  • 一套网络控制协议NCP,其中每一个协议支持不同的网络层协议,如IP、OSI的网络层,DECnet,以及AppleTalk等。

3.7.4 PPP协议的帧格式

在这里插入图片描述

  • PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。
  • 标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。
  • 地址字段 A 规定为 0xFF。地址字段实际上并不起作用。
  • 控制字段 C 规定为 0x03。
  • PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。

PPP 有一个 2 个字节的协议字段。

  • 若为 0x0021,则信息字段就是 IP 数据报。
  • 若为 0x8021,则信息字段是网络控制数据。
  • 若为 0xC021,则信息字段是 PPP 链路控制数据。
  • 若为 0xC023,则信息字段是鉴别数据。

3.7.5 PPP协议的透明传输问题

  • 当 PPP 用在同步传输链路时,协议规定采用硬件来完成比特填充(和 HDLC 的做法一样)。
  • 当 PPP 用在异步传输时,就使用一种特殊的字符填充法。
3.7.5.1 字节填充

当使用PPP协议进行异步传输时,它会把转移字符定义为0x7E,并且使用字节填充,字节填充的规则如下:

  • 将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列 (0x7D, 0x5E)。
  • 若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列 (0x7D, 0x5D)。
  • 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变,例如,出现0x03就要把它转换为2字节序列(0x7D,0x23)。

在接收方对收到的数据进行相反的转换即可正确还原出发送方发送的数据信息

3.7.5.2 零比特填充

当使用PPP协议进行同步传输时,采用零比特填充实现透明传输。

  • 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
  • 接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。

在这里插入图片描述

3.7.6 PPP协议的工作状态

用户使用PPP协议拨号上网至最终结束拨号上网整个过程中PPP协议发挥了如下作用:

  • 刚开始,线路处于静止状态,此时不存在物理层连接。

  • 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接,此时线路变成链路建立状态。

  • PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧),以便于建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数,商定成功后,就会进入身份验证,当双方的身份验证通过后,就会进入网络层协议状态。

  • 处于网络层协议状态时,需要进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机,此时链路处于链路打开状态,此时就可以进行数据传输了。

  • 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接,最终链路回到静止状态。

    可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

    上述过程可以用下图进行描述。
    在这里插入图片描述

3.8 使用广播信道的数据链路层

使用广播信道的数据链路层,可以实现一对多的通信,局域网中的数据链路层就是使用了广播信道,因此博主以局域网为例,介绍使用广播信道的数据链路层。

3.8.1 局域网

首先,学习了前面第一章的同学,应该对于局域网有了一定的认知,接下来我会稍微详细的讲解局域网的特点、拓扑结构以及使用的传输介质等相关知识。

3.8.1.1 局域网的特点与优点

局域网的特点:网络为一个单位所拥有的,且地理范围和站点数目均有限。

局域网的优点:

  • 具有广播功能,可以从一个站点方便的访问全网。
  • 便于系统的扩展和逐渐演变,各个设备的位置可以灵活地调整和改变。
  • 提高了系统的可靠性、可用性和生存性。
3.8.1.2 局域网的拓扑结构

局域网常用的拓扑结构主要有四大类:星形结构、环形结构、总线形结构、星形和总线形结合的复合结构。

3.8.1.3 局域网的传输介质以及介质访问控制

局域网可以使用双绞线、铜缆以及光纤等多种传输介质,最主流的便是双绞线。

局域网的介质访问控制方法主要是CSMA/CD、令牌总线和令牌环,其中前两种主要用于总线形局域网,令牌环主要用于环形局域网。

3.8.1.4 局域网的两个标准
  • DIX Ethernet V2 :世界上第一个局域网产品(以太网)的规约。
  • IEEE 802.3 :第一个 IEEE 的以太网标准。

DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。

严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网 。

IEEE802标准定义的局域网参考模型只对应于OSI参考模型的数据链路层和物理层,并将数据链路层拆分为了两个子层:逻辑链路控制 LLC子层以及媒体接入控制 MAC子层

  • MAC子层:与接入到传输媒体有关的内容都放在 MAC子层,向上屏蔽对物理层访问的各种差异,提供对物理层的统一访问接口,主要功能包括:组帧和拆卸帧、比特传输差错检测、透明传输。
  • LLC子层:LLC子层向网络层提供无确认无连接、面向连接、带确认无连接、高速确认4种不同的连接服务类型。不管采用何种协议的局域网,对 LLC 子层来说都是透明的。

在这里插入图片描述

由于 TCP/IP 体系经常使用的局域网是 DIX Ethernet V2 (以太网)而不是 802.3 标准中的几种局域网,因此现在 802 委员会制定的逻辑链路控制子层 LLC(即 802.2 标准)的作用已经不大了。很多厂商生产的适配器上就仅装有 MAC 协议而没有 LLC 协议。

3.8.2 媒体共享技术(介质访问控制)

使用广播信道的数据链路层,会遇到上文提过的两个额外的问题:识别主机处理碰撞。因此在数据链路层需要采取介质访问控制,来保证同一条广播信道上的两对结点之间的通信不会互相产生干扰,并且能够正确的识别并接收信号。

3.8.2.1 介质访问控制的分类

介质访问控制分为两大类:静态划分信道以及动态媒体接入控制。

  • 静态划分信道:此方法就是在2.5小节中介绍过的四种信道复用方法。该类方法付出的代价过大,并不适用于局域网中。
  • 动态媒体接入控制:这类方法的特点是信道并非在用户通信时固定分配给用户,而是动态的分配给用户,此时又分为两种:随机接入与受控接入。
3.8.2.2 随机接入介质访问控制

在随机接入介质访问控制中,不采用集中控制的方式去解决发送信息的次序问题,所有用户都可以根据自己的需要,随机地发送信息,占用信道的全部速率。然而在总线形的网络中,当有两个或多个用户同时发送信息时,就会产生帧冲突,导致所有有冲突用户的发送结果都是失败的。因此必须要有一个协议来解决这种帧的冲突问题,常用的协议由ALOHA协议、CSMA协议、CSMA/CD协议以及CSMA/CA协议等。

这些协议的核心思想就是:胜利者通过争用获取信道的使用权。因此随机接入介质访问控制的协议又被称为争用型协议

3.8.2.2.1 ALOHA协议

ALOHA协议是由夏威夷大学早期研发的随机接入系统,ALOHA协议分为两种:纯ALOHA协议时隙ALOHA协议

  • 纯ALOHA协议

    实现原理:当网络中的任何一个站点需要发送数据时,可以不进行任何检测就发送数据,如果一段时间内未收到确认,那么该站点就认为传输过程中出现了冲突,发送站点就会等待一段时间后再次发送数据,直至发送成功。

在这里插入图片描述

缺点:由上图可以看出,在网络用户很多的情况下,纯ALOHA协议产生碰撞的概率很高,为了克服这个缺点,在纯ALOHA协议的基础上,就改进发展出了时隙ALOHA协议。

  • 时隙ALOHA协议

    实现原理:时隙ALOHA协议将共享信道上的所有站点在时间上同步起来,并且将时间划分为一段段等长的时隙,规定只能在每一个时隙的开始才能发送帧。这种方法可以减少用户发送数据的随机性,从而减少数据碰撞的几率,提高信道的利用率。

    示例图如下

在这里插入图片描述

在上图中,时隙长度为T,每个帧到达站点后,一般需要在缓存中等待一段小于T的时间,才能被发送。当一个时隙内有多个帧到达时,在下一个时隙必然会发生碰撞,碰撞之后的冲突重发机制与纯ALOHA是类似的。

缺点:时隙ALOHA协议虽然是在纯ALOHA协议的基础上做了改进,减少了数据碰撞的几率,但是用户发送数据时,依然是随心所欲的,即使其他站点在发送数据,也依旧照发不误,因此产生数据碰撞的几率依旧很大。

3.8.2.2.2 CSMA协议

上一小节,介绍了ALOHA协议的缺点(发送数据随心所欲,即使有其他站点在发送数据,依旧照发不误),因此,如果每个站点在发送之前侦听一下信道,发送信道空闲之后再发送数据,就会大大的减少数据碰撞的几率。基于这一思想,产生了载波侦听多路访问(Carrier Sense Multiple Access,CSMA)协议。CSMA协议在ALOHA协议的基础上进一步进行了改进,两者的最主要区别在于,CSMA协议比ALOHA协议多了载波侦听装置。

根据侦听方式和侦听到信道忙碌后的处理方式的不同,CSMA协议分为三种:1-坚持CSMA非坚持CSMA以及p-坚持CSMA

  • 1-坚持CSMA(1-persistent CSMA)

    实现原理:当一个结点要发送数据时,首先要侦听信道,如果信道空闲,则立即发送数据。如果信道中有其他站点发送数据,则不发送数据(等待),并且继续侦听信道直至信道空闲后立即发送数据。如果产生了数据碰撞,则随机等待一段时间后再侦听信道。

    可能有读者就会疑惑,为什么使用1-坚持CSMA协议还会产生数据碰撞?

    其原因是,数据在链路上的传播速度是有限的,当两个站点相聚较远,在T1时刻,A站点侦听信道发现信道空闲,B站点侦听信道发现信道也空闲,那么A站点与B站点都会立即发送数据,从而导致数据碰撞。或者在T1时刻,A站点正在发送数据,而B站点也要发送数据,但是由于A站点发送的数据还未传播至B站点,因此此时B站点侦听信道发现信道时空闲的,B站点就会立即发送数据,也会产生数据碰撞。

    缺点:受传播延迟的影响较大。

  • 非坚持CSMA(Non-persistent CSMA)

    实现原理:当一个结点要发送数据时,首先要侦听信道,如果信道空闲,则立即发送数据。如果信道中有其他站点发送数据,则不发送数据并且放弃侦听,等待一个随机时间后再重复上述过程。

    该协议在侦听到信道空闲后就放弃侦听,降低了多个结点等待信道空闲后立即发送数据导致冲突的概率。

    缺点:增大数据在网络中的平均延迟。

  • p-坚持CSMA(P-persistent CSMA)

    实现原理:当一个结点要发送数据时,首先要侦听信道,如果信道中有其他站点发送数据,则持续侦听,直至信道空闲。如果信道空闲,则以概率p发送数据,以概率1-p推迟到下一个时隙。如果在下一个时隙信道依旧空闲,那么仍然以概率p发送数据,以概率1-p推迟到下一个时隙。这个过程一直持续到数据发送成功,或者因为其他结点发送了数据而侦听到信道忙为止。如果是后者,则等待下一个时隙再重新开始侦听信道。

    该协议属于1-坚持CSMA协议以及非坚持CSMA协议的折中方案。坚持侦听,是为了克服非坚持CSMA协议中由于随机等待而导致的延迟增大的问题,以p概率发送数据是为了克服1-坚持CSMA协议中由于多个结点检测到信道空闲后立即发送数据导致数据冲突的问题。

三种CSMA协议的比较总结如下

信道状态1-坚持CSMA非坚持CSMAp-坚持CSMA
空闲立即发送数据立即发送数据以概率p发送数据,以概率1-p推迟到下一个时隙
忙碌持续侦听放弃侦听,等待一个随机时间后再侦听持续侦听
3.8.2.2.3 CSMA/CD协议

以太网解决数据碰撞所广泛使用的协议就是载波侦听多路访问/碰撞检测(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)协议,该协议是在CSMA协议的基础上进行了进一步改进,该协议适用于总线形网络以及半双工网络环境。

CSMA/CD协议的工作流程可以概括为十六个字:“先听后发,边听边发,冲突停发,随机重发”。

  1. 站点从网络层获得分组,封装成以太网帧,放入缓存,准备发送。
  2. 站点侦听信道,如果发现信道空闲,则立即发送该帧,如果发现信道繁忙,则持续侦听直至信道空闲,然后立即发送该帧。
  3. 在发送帧的过程中,站点持续侦听信道,如果一直未检测到数据碰撞,则顺利的把该帧发送完毕。如果检测到产生了数据碰撞,则中止帧的发送,并且发送一个拥塞信号,通知该信道上的其他站点,发生了数据碰撞。
  4. 中止发送后,执行指数退避算法,等待一段随机时间后返回到步骤2。

CSMA/CD协议虽然在CSMA协议上进行了改进,但是依旧避免数据碰撞(原因在上文中也陈述过,即电磁波在信道中的传输速度是有限的)。下图是传播时延对于载波侦听的影响的示意图。

在这里插入图片描述

上图中站点A和站点B相距1KM,用同轴电缆相连,电磁波在1KM电缆的传播时延约为5微秒,因此,A向B发送的数据,在5微秒后才能传送到B。假设图中的单程传播时延为x,在t=0时,A发送数据。在t=x-y时,A发送的数据还未到达B,此时B检测到信道空闲而立即发送数据。在t=x-y/2时,A发送的数据和B发送的数据发生碰撞,但此时A和B都不知道发生了碰撞。在t=x时,B检测到碰撞,停止发送数据,在t=2x-y时,A也检测到碰撞,停止发送数据。

  • CSMA/CD协议的以太网只能使用半双工通信

    由以上示例也可以看出,使用CSMA/CD协议的信道是无法做到同时发送和接收的,因此采用CSMA/CD协议的以太网只能进行半双工通信

  • 争用期

    由上图也可以看出,站点A在发送数据后,最多两倍的总线端到端的传播时延后就能知道是否发生了碰撞,因此,以太网端到端往返时间也被称为争用期(冲突窗口或者碰撞窗口),如果在争用期内依旧没发生碰撞,则代表此次发送数据不会发生碰撞。

  • 最小帧长

    为了确保发送站在发送数据的同时能够检测到是否发生了碰撞,需要在发送完帧之前就能收到自己发送出的数据是否发生了碰撞。因此帧的传输时延至少要两倍于信号在总线中的传播时延,因此使用CSMA/CD协议的总线网中的所有数据帧都必须大于最小帧长。在总线上任何站点收到小于最小帧长的数据帧时,都会被当作无效帧丢弃。

    最小帧长 = 总线传播时延 * 数据传输速率 * 2
    

    那么如果某个数据帧确实小于最小帧长,该怎么办呢?

    如果当数据帧小于最小帧长时,在数据链路层的MAC子层中就需要在数据字段的后面加入一个证书字节的填充字段,保证数据帧不小于最小帧长。

  • 二进制指数退避算法

    如果两个站点发送的数据产生了冲突后,立即重新发送数据,那么就会导致无休止的冲突。因此CSMA/CD协议采用了截断二进制指数退避算法来计算冲突后重发的等待时间。

    算法步骤:

    1. 确定基本的退避时间,一般是取争用期。
    2. 定义参数k,它等于重传次数,但k不超过10,即k=min[重传次数,10],当重传次数不超过10时,k等于重传次数,当重传次数大于10时,k仍旧等于10。
    3. 从离散的整数集合[0,1,…,(2^k - 1)]中随机取一个数r,重传所需要退避的时间就是争用期*r。
    4. 当重传次数达到16次仍然不能成功时,表明网络过于拥挤,此帧永远无法正确发出,此时数据链路层的站点会丢弃该帧,并且向网络层报告该情况。

    使用二进制指数退避算法,可以使得重传的等待时间随着重传次数的增大而增大,从而减少发送数据碰撞的概率,提高信道的利用率。

3.8.2.2.4 CSMA/CA协议

有线局域网目前广泛使用的是CSMA/CD协议,然而在无线局域网中,无法使用CSMA/CD协议。原因如下:

  1. “碰撞检测”要求一个站点在发送本站数据的同时,还必须不间断地检测信道,但接收到的信号强度往往会远远小于发送信号的强度,在无线局域网的设备中要实现这种功能就花费过大。。

  2. 在无线通信中,存在’屏蔽站’问题以及’暴露站’问题。

    • 屏蔽站问题

在这里插入图片描述

 当站点A和C同时想和站点B进行通信时,由于A和C相隔较远,彼此都无法接收到对方发送的信号,因此当它们检测到信道空闲时,都会向站点B发送数据,于是就会产生碰撞。

 这种未能检测出信道上其他站点信号的问题被称为**屏蔽站问题**。
  • 暴露站问题

在这里插入图片描述

 当站点B向站点A发送数据,站点C向站点D发送数据,但是此时,站点C能够接收到站点B发送的数据,因此它误以为当前信道是忙碌的,因此站点C就不会向站点D发送数据,这种问题就被称为**暴露站问题**。

由于上述一些问题,导致在无线局域网中无法使用碰撞检测,在无线局域网中的站点一旦开始发送数据,就必须完整的发送完该帧,这就导致了如果在无线局域网中产生数据碰撞,就需要重发整个帧,会造成信道资源的严重浪费。因此在无线局域网中应该尽可能的避免碰撞的发生。同时,CSMA/CA协议引入了预约信道的概念,发送站可以通过RTSCTS控制帧进行信道的预约。

在无线局域网中,在CSMA/CD协议的基础上进行了改进,将碰撞检测改为了碰撞避免(Collision Avoidance,CA),产生了CSMA/CA协议。注意,碰撞避免并不是代表使用了CSMA/CA协议就能完全避免碰撞,而是指该协议可以尽量降低碰撞发生的概率。同时,在无线局域网中,除了要使用CSMA/CA协议之外,还需要使用停止等待协议(无线信道的通信质量远不如有限信道)即在无线局域网中,站点每发送完一个帧后,都需要等待接收方的确认帧,接收到确认帧后,发送方才能继续发送下一帧。

在CAMS/CA协议中有如下几个重点:

  • SIFS(帧间间隔)

    为了尽量避免碰撞,在无线局域网中规定,站点每次发送完一帧后,都需要等待一段很短的时间才能发送下一帧,这个时间间隔就是帧间间隔。SIFS的时间长短取决于站点发送的帧的类型,常用的有三种SIFS。

    • SIFS(短IFS):最短的IFS,用于分隔属于同一个对话的帧,一般使用该SIFS的帧类型有ACK帧、CTS帧、分片后的数据帧以及所有回答AP探询的帧等。
    • PIFS(点协调IFS):中等长度的IFS,在PCF操作中使用。
    • DIFS(分布式协调IFS):最长的IFS,用于异步帧竞争访问的时延。
  • RTSCTS

    正如上文中所描述的,RTS与CTS控制帧是用于信道预约,从而避免产生数据碰撞的手段。

    举例如下:

在这里插入图片描述

图中A、B、C分别表示三个站点,其中站点A和C都在站点B的通信范围内,此时如果站点A需要给站点B发送数据,那么A就需要先广播一个很短的控制帧RTS(Request To Send),该帧包括源地址、目的地址和此次通信所需要的时间(包括了接收确认帧所需时间),这个帧会被A的通信范围内的所有站点接收(当然这些站点包含了B),当站点B接收到RTS控制帧后,如果信道空闲,则站点B就会广播一个很短的控制帧CTS(Clear To Send),该帧包括这次通信所需的持续时间,该帧会被站点B通信范围内的所有站点接收,当站点C和其他站点接收到该帧后,就会在CTS所指明的时间内抑制发送,当站点A接收到该CTS后,就会尝试发送数据帧(当然,需要遵循CSMA/CA的数据帧发送流程)。

注意:虽然使用RTS和CTS控制帧会使网络的通信效率下降,但是由于这两种控制帧都很短,与数据帧产生碰撞后重传导致的通信效率下降相比,这种开销就是可以接受的了。并且是否使用控制帧,并不是强制性的,各个站点可以自行决定。

  • CSMA/CA的退避算法

    在CSMA/CA协议中也是使用二进制指数退避算法,然而具体做法有所不同:

    当第i次退避时就从2^(2+i)个时隙中选择一个,即第一次退避就要在8个时隙中选择,而不是两个。

    • 第 i 次退避就在 2^(2 + i) 个时隙中随机地选择一个,即:第 i 次退避是在时隙 {0, 1, …, 2^(2 + i) – 1} 中随机地选择一个。
    • 第 1 次退避是在 8 个时隙(而不是 2 个)中随机选择一个。
    • 第 2 次退避是在 16 个时隙(而不是 4 个)中随机选择一个。
    • 当时隙编号达到 255 时(这对应于第 6 次退避)就不再增加了。

    这里决定退避时间的变量 i 称为退避变量。

    当某个站点要发送数据时,使用退避算法选择一个争用窗口后中的某个时隙后,就根据该时隙的位置设置一个退避计时器。当退避计时器的时间减小到0时,就开始发送数据。当然,也存在退避计时器还未减小到0时,信道就又变为了繁忙状态,此时就会冻结退避计时器的数值,重新等待信道变为空闲,再等待DIFS后,继续启动退避计时器。

  • CSMA/CA步骤

    1.若站点最初有数据要发送(而不是发送不成功再进行重传),且检测到信道空闲,在等待时间 DIFS 后,就发送整个数据帧。
    2.否则,站点执行 CSMA/CA 协议的退避算法。一旦检测到信道忙,就冻结退避计时器。只要信道空闲,退避计时器就进行倒计时。
    3.当退避计时器时间减少到0时(这时信道只可能是空闲的),站点就发送整个的帧并等待确认。
    4.发送站若收到确认,就知道已发送的帧被目的站正确收到了。这时如果要发送第二帧,就要从上面的**步骤 2**开始,执行 CSMA/CA 协议的退避算法,随机选定一段退避时间。若源站在规定时间内没有收到确认帧 ACK(由重传计时器控制这段时间),就必须重传此帧(再次使用 CSMA/CA 协议争用接入信道),直到收到确认为止,或者经过若干次的重传失败后放弃发送。
    

在这里插入图片描述

上图是CSMA/CA协议的工作流程图。

  • CSMA/CA与CMSA/CD的区别

    1.CSMA/CA协议适用于无线局域网,CSMA/CD协议适用于有线局域网
    2.CSMA/CA协议不可以检测冲突,只能尽量避免冲突,CSMA/CD协议可以检测冲突。
    3.CSMA/CA协议的基本思想是发送站点先广播告知其他结点,自己要发送数据了,让其他结点在这个时间段内抑制发送。而CSMA/CD协议的基本思想是发送前先监听,一旦监听到信道空闲就发送数据,且边发边听,一旦发现碰撞,就停止发送。
    
3.8.2.3 受控接入介质访问控制

受控接入介质访问控制的相关协议主要有:令牌传递协议

令牌访问协议主要在环状网络中使用,主要步骤如下:

  1. 当网络空闲时,环路中只有令牌帧在循环传递。
  2. 令牌传递到有数据要发送的站点时,该站点就会修改令牌帧的标志位,并且在令牌帧中附加自己需要传输的数据,使得令牌帧变成一个数据帧,然后将该帧发送出去。
  3. 数据帧沿着环路不断传输,当传输到目的地址后,接收站点就会复制该数据帧的数据做进一步处理,并且继续传递令牌给下一个站点,在沿路的每个站点都会检查该帧的目的地址是否与自己相同,若不是,则继续转发给下一个站点。
  4. 数据帧沿着环路传回发送站点后,发送站点就不会继续传递该帧了。同时发送站点会校验该帧,判断是否出现了传输错误,如果有错误则重传。
  5. 发送站点传送完数据后,会重新产生一个令牌帧,传递给下一个站点,交出信道的控制权。

注意:令牌帧时一个特殊的MAC控制帧,它本身并不包含信息,仅用于信道的控制,确保同一时刻,整个环路中只有一个站点有发送数据的权限。

因此在环路中,不会出现数据碰撞。

3.8.3 以太网

3.8.3.1 以太网的传输介质

目前市面上的以太网使用的传输介质是双绞线,并且搭配了集线器,形成了逻辑上的总线形拓扑结构(物理上是星形拓扑结构)。

  • 集线器

    集线器拥有多个接口,每个接口通过RJ-45插头用两对双绞线与计算机的适配器相连,于是,我们可以把集线器看作是一个具有多个接口的转发器,它工作在物理层,它的每个接口仅仅简单的转发比特,不进行碰撞检测,且集线器采用了专门的芯片,可以自适应串音回波抵消,可以使接口转发出去的较强的信号不对接口接收的较弱的信号产生干扰。

3.8.3.2 以太网的MAC层
  • MAC层的硬件地址

    在局域网中,硬件地址又被称为物理地址或者MAC地址。

    MAC地址,就相当于计算机的’身份证号’,是全球唯一,用来标识识别该计算机的一串48位的字符。这个地址所处的位置在计算机的适配器的ROM中,如果一台计算机有多个适配器,那么它就拥有了多个MAC地址,同时如果计算机更换了适配器,那么该计算机的MAC地址也就改变了(即使该计算机的物理地址没有发生改变)。

    那么,如何保证每个适配器中的MAC地址是全球唯一的呢?

    现在IEEE的注册管理机构RA是局域网全球地址的法定机构,它负责分配地址字段的6个字节中的前3个字节(即高24位),世界上凡是生产局域网适配器的厂家都必须向IEEE购买由这三个字节构成的号码,这个号码的正式名称是组织唯一字符OUI,也被称为公司标识符。6个字节的MAC地址的后三位(低24位)由生产厂家分配,注意生产厂家必须保证其分配的后三位不产生重复。

  • MAC帧

    在以太网中使用的数据层链路帧被称为MAC帧。

    MAC帧分为三种:单播帧、广播帧、多播帧。

    单播帧:一对一,即该帧用于两个站点之前的通信。

    广播帧:一队全体,即该帧是发送给局域网所有站点的。

    多播帧:一对多,即该帧是发送给局域网的多个站点的。

    一般的适配器必须能够接收识别前两种帧,第三种帧可以使用编程方法进行识别。

    以太网MAC帧由五个字段组成

    第一个字段:目的地址,目的站点的地址

    第二个字段:源地址,发送站点的地址

    第三个字段:类型字段,用于标识上层协议的类型

    第四个字段:数据字段,长度范围是46~1500

    第五个字段:帧检验序列FCS,用于CRC检验

    MAC的格式如下图所示

在这里插入图片描述

注意:

上图中表示MAC帧中并没有标识帧长度的字段,那么MAC子层该如何知道从接收到的以太网帧中取出多少字节交给上层协议呢?

该解决方法就是,之前讲过的以太网使用的编码格式是曼切斯特编码,以太网的MAC子层在接收到发送方传来的以太网帧后,根据电压变化可以得到MAC帧的结束位置,该位置往前4字节,就是MAC帧的数据结束位置了。当数据字段长度小于46字节时,MAC子层就会在后面填充一个整数字节的填充字段,保证该帧大于以太网中的最小帧长。

那么,当有填充字段时,MAC子层把数据字段与填充字段一起交付给上层协议后,上层协议该如何识别填充字段?

其实上层协议具有识别有效数据字段长度的功能,当上层协议使用IP协议时,数据报的首部有一个字段用于标识’总长度’,因此这个总长度+填充字段就等于MAC子层交付的MAC帧的数据字段的长度,因此就可以有效的识别出数据字段了。

上图中在MAC帧前面还插入了8字节长度的数据,这个是因为,当一个站在刚开始接收MAC帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC帧的最前面的若干位就无法接收,就会使得整个MAC帧无法接收。因此为了接收端可以迅速的实现时钟同步,发送方就在MAC帧的最前面插入了8个字节,其中前7个字节是同步码,用于使接收端的适配器在接收MAC帧后能迅速的调整时钟频率,实现时钟同步。最后一个字节是帧开始的定界符,用于告诉接收端,该字节后面的位置就是MAC帧。

3.8.4 802.11无线局域网

3.8.4.1 简介

无线局域网,即不通过有线媒体介质传输数据的局域网,无线局域网可以分为两大类:有固定基础设施的无线局域网和无固定基础设施的移动自组织网络。所谓的"固定基础设施"是指预先建立起来的、能够覆盖一定地理范围的一批固定基站。

  • 有固定基础设施的无线局域网

    IEEE制定了802.11系列协议标准用于有固定基础设施的无线局域网,802.11系列协议相当复杂,但是简单的来说,它就是无线以太网的标准,它使用星形拓扑结构,中心点被称为接入点(Access Point AP),在MAC子层中使用的协议就是上文介绍过的CSMA/CA协议。(使用802.11标准的无线局域网就是我们日常生活中使用最多的Wi-Fi)。

    802.11标准规定了无线局域网的最小构件是基本服务集BBS,BBS由一个基站和若干移动站组成,所有的站在本BBS内都可以直接通信,但如果想和BBS以外的站点通信时必须通过本BBS的基站。上文提到的AP就是BBS的基站。当网络管理员设置AP的时候,会给AP设置一个不超过32字节的服务集标识符SSID和一个通信信道。SSID就相当于使用该AP的无线局域网的名字。一个BBS所覆盖的有效范围叫做基本服务区BSA。一个基本服务区BSA的范围直径一般不超过100米。

    我们可以使用门户,来使多个BBS连接在一起。下图表示了由两个BBS组成的一个分配系统DS。

在这里插入图片描述

上图中站点A要和站点A’进行通信了,那么它的数据流动路径就是A->AP1->AP2->A’。

  • 无固定基础设施的移动自组织网络

    无固定基础设施的移动自组织网络没有接入点AP,它是由一些处于平等状态的移动站相互通信组成的临时网络。

    这种网络常用于特殊的活动场景中,例如在军事领域中,携带了移动站的战士可利用临时建立的移动自组网络进行通信。当出现自然灾害时,在抢险救灾时利用移动自组网络进行及时的通信往往很有效的。

    移动自组织网络并不是移动IP,移动IP技术使得漫游的主机可以用多种方法连接到因特网,其核心网络功能仍然是基于固定网络中一直使用的各种路由选择协议,而自组织网络是把移动性扩展到无线领域的自治系统,具有自己特定的路由选择协议,可以不与因特网相连。

3.8.4.2 802.11局域网的MAC层

802.11局域网的MAC帧共有三种类型:控制帧数据帧管理帧

数据帧由三个部分组成:MAC首部帧主体以及帧检验序列FCS

  • MAC首部,共 30 字节,帧的复杂性都在帧的首部。

  • 帧主体,也就是帧的数据部分,不超过 2312 字节。这个数值比以太网的最大长度长很多。不过 802.11 帧的长度通常都是小于 1500 字节。

  • 帧检验序列FCS是尾部,共4个字节。

802.11 数据帧最特殊的地方就是有四个地址字段。地址 4 用于自组网络。我们在这里只讨论前三种地址。

去往AP来自AP地址1地址2地址3地址4
01接收地址=目的地址发送地址=AP地址源地址---------
10接收地址=AP地址发送地址=源地址目的地址---------

地址1时直接接收数据帧的结点地址,地址2是实际发送数据帧的结点地址。

基于此,我们讨论两种情况,来帮助各位理解上表的内容。

  • 现在假定在一个基本服务集BBS中的站点A向站点B发送数据帧。在站点A发往接入点AP的数据帧的帧控制字段中,“去往AP=1”,“来自AP=0”,地址1是接入点AP的MAC地址,地址2是站点A的MAC地址,地址3是站点B的MAC地址。AP接收到数据帧后,转发给站点B,此时在数据帧的帧控制字段中,“去往AP=0”,“来自AP=1”,地址1是站点B的MAC地址,地址2是AP的MAC地址,地址3是站点A的MAC地址。

  • 现在假定有两个AP通过有线链路连接到路由器,现在路由器要向站点A发送数据,由于路由器是网络层的设备,无法“看见”数据链路层的接入点AP,只认识站点A的IP地址,而AP是数据链路层设备,它只认识MAC地址,不认识IP地址。具体结构如下图所示

在这里插入图片描述

(1)路由器向站点A发送数据的情况模拟
路由器从IP数据报获取站点A的IP地址,使用ARP获取站点A的MAC地址后,路由器接口R1将该IP数据报封装成802.3帧,该帧的源地址是R1的MAC地址,目的地址是站点A的MAC地址。当AP收到该帧后,将该帧转换为802.11帧,在帧控制字段中,“去往AP=0”,“来自AP=1”,地址1时站点A的MAC地址,地址2是AP的MAC地址,地址3是R1的MAC地址。于是站点A就可以通过地址3确定将数据报发送到子网中的路由器接口的MAC地址了。
(2)站点A向路由器接口R1发送数据的情况模拟
站点A生成一个802.11帧,在帧的控制字段中,“去往AP=1”,“来自AP=0”,地址1是AP的MAC地址,地址2是站点A的MAC地址,地址3是R1的MAC地址。当AP接收到该802.11帧后,将其转换为802.3帧,该帧的源地址字段为站点A的MAC地址,目的地址是R1的MAC地址。

由上面的情况模拟可以看出,地址3在BBS和有限网络的互联中起着关键作用,它允许AP在构建以太网帧时能够确定目的地址的MAC地址。

3.9 数据链路层的设备

3.9.1 网桥

网桥是工作在数据链路层的MAC子层中的,用于连接多个以太网的硬件设备,多个以太网通过其连接后,形成了一个更大范围的以太网,此时原来的每个以太网就被称为网段

网桥将各个网段隔离成了一个个独立的碰撞域(冲突域),各个网段相对独立,因此一个网段产生了故障并不会影响其他网段的正常运行。

网桥具有路径选择功能,它接收到帧后可以决定正确的路径转发帧给正确的站点。

当网络1和网络2通过网桥相连后,网桥接收网络1发送的数据帧后,会查询数据帧中的地址,如果该地址是网络2中的地址,那么就会转发给网络2,如果是网络1的地址,就会将其丢弃,因为源站点和目的站点处于同一个网段,目的站点可以直接接收到该帧,不需要借助网桥转发。

3.9.2 适配器

这里介绍的适配器又称网络适配器(Adapter)或者网卡,它是用于计算机与外界局域网连接的一个桥梁。在适配器中有处理器和存储器,是工作在数据链路层的网络组件。适配器和局域网的通信时通过双绞线以串行方式进行的,而适配器和主机的通信时通过计算机主板上的I/O总线以并行方式进行的,因此适配器的重要功能就是进行数据的串行并行转换。

世界上的每一个适配器在出厂时都有一个唯一的代码,这个代码就是上文中提到的MAC地址。

3.9.3 集线器

集线器在上文中已经介绍过了,详见3.8.3.1。

3.9.4 交换机

这里介绍的交换机指以太网交换机,以太网交换机本质上是一个多端口的网桥,它工作在数据链路层。

3.9.4.1 以太网交换机的特点
  • 以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。
  • 以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信。
  • 使用以太网交换机相连的主机,都是独占传输媒体无碰撞地传输数据
  • 以太网交换机是一种即插即用的设备,其内部的帧的转发表是通过自学习算法自动地逐步建立起来的。
  • 以太网交换机使用了专用的交换结构芯片,交换速率较高。
3.9.4.2 以太网交换机的优点
  • 使用以太网交换机的用户,独享带宽,增加了总容量。

    对于普通 10 Mbit/s 的共享式以太网,若共有 N 个用户,则每个用户占有的平均带宽只有总带宽 (10 Mbit/s)的 N 分之一。

    使用以太网交换机时,虽然在每个接口到主机的带宽还是 10 Mbit/s,但由于一个用户在通信时是独占而不是和其他网络用户共享传输媒体的带宽,因此对于拥有 N 个接口的交换机的总容量为 N10 Mbit/s。

  • 从共享总线以太网转到交换式以太网时,所有接入设备的软件和硬件、适配器等都不需要做任何改动。

  • 以太网交换机一般都具有多种速率的接口,方便了各种不同情况的用户。

3.9.4.3 以太网交换机的交换模式

以太网交换机有两种交换模式:直通式交换机存储转发式交换机

  • 直通式交换机

    接收数据帧的同时就立即按数据帧的目的 MAC 地址决定该帧的转发接口,这种方式交换速度快,但是它不检查差错就直接将帧转发出去,因此有可能也将一些无效帧转发给其他的站。

  • 存储转发式交换机

    使用存储转发的方式,先将接收到的帧缓存到交换机的高速缓存中,进行差错检测,确认无误后通过查找表转换成输出端口将该帧转发出去。如果发现帧由差错,就将该帧丢弃。

3.9.4.4 以太网交换机的自学习功能

以太网交换机接收到数据帧后,决定这个帧是应该转发到某个接口还是丢弃该帧的过程被称为过滤,决定这个帧该被移动哪个接口被称为转发

以太网交换机的过滤和转发功能是通过交换表完成的,交换表的表项包括了:一个MAC地址连通该MAC地址的交换机接口

接下来,我们通过一个例子,来了解以太网交换机是怎样进行自学习的。

假设以太网交换机有四个接口,每个接口都与一台主机相连接,这四个主机的MAC地址分别是A、B、C、D。初始时,以太网交换机的交换表是空的,如下图所示。

在这里插入图片描述

A先向B发送一帧,从接口1进入交换机。交换机收到帧后,先查找交换表,发现没有查到应该从哪个接口转发这个帧,因此交换机把这个帧的源地址A和接口1写入交换表中,记为(A,1),并向除了接口1以外的所有接口广播这个帧(这个帧就是从接口1来的,当然不应该把它再从接口1转发出去)。C和D收到该帧后就会丢弃该帧,因为目的地址是B。只有B才能收下这个帧。

从新写入交换表的记录(A,1)可以看出,以后无论从哪一个接口收到帧,只要目的地址是A,交换机就应当把收到的帧从接口1转发出去。(这个动作的依据是,既然A发出的帧是从接口1进入交换机,那么从交换机的接口1转发出去的帧也应当可以到达A)。

当B接收到A发送的数据帧后,会通过接口3把帧发送给A,交换机查找交换表,发现交换表中的MAC地址中有A,于是就把该帧转发给接口1,同时,交换表会新增加一条记录(B,3)。

经过一段时间的运转后,只要主机C和D向其他主机发送帧,交换表就会逐渐的记录下主机C和D对应的接口。当然,考虑到可能有时要在交换机的接口更换主机或者主机需要更换适配器,因此,在交换表中会设立有效时间的条目,超过有效时间的记录会被自动删除。

在这里插入图片描述

以太网交换机的自学习能力使得以太网交换机可以即插即用,不必人工进行配置。

参考文献

《计算机网络:自顶向下方法第七版》- Kurose
《计算机网络(第7版)》-谢希仁
《2023年计算机网络考研复习指导》-王道论坛

如果这篇文章有帮助到你,不妨点赞、转发、收藏一下喽~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值