跳转至

Chapter 3 | 数据链路层

约 31901 个字 120 张图片 预计阅读时间 160 分钟

数据链路层概述

数据链路层在网络体系结构中所处的地位

img

Info

虽然在计算机网络中,发送信息时是通过主机层层封装数据并发送到物理介质上,但在学习中,为了简化,我们认为是数据链路层直接传送。

img

主机为什么已经要从局域网先到路由器才能到广域网链路

主机需要先通过局域网到达路由器,是因为路由器充当了局域网与广域网之间的“网关”。局域网内的主机只能直接通信于同一局域网内,而要访问广域网(如互联网)时,必须将数据包发送到路由器,由路由器负责转发到广域网链路。路由器具有不同网络之间的转发和寻址能力,能够根据目标地址选择合适的广域网链路进行转发。

主机不能直接通过广域网发送数据,是因为广域网(如互联网)通常不直接连接终端主机,而是连接各个网络(如局域网、运营商网络等)。主机需要通过路由器或网关设备,将数据从局域网转发到广域网。路由器负责地址转换、路由选择和安全管理,确保数据能够正确、安全地到达广域网中的目标。没有路由器,主机无法与广域网建立直接通信。


链路、数据链路和帧

链路(Link)是指从一个节点到相邻节点的一段物理线路(有线或无线,例如网线、光纤、无线信号等),而中间没有任何其他的交换节点。比如主机和路由器之间的网线,就是一条链路。

数据链路(Data Link)是在链路的基础上,加上了控制数据传输的协议和硬件/软件。比如网卡驱动程序,它们负责把数据按照一定的规则封装、校验、发送和接收。数据链路层保证数据能可靠地在一条链路上传输。

计算机中的网络适配器(俗称网卡)和其相应的软件驱动程序就实现了这些协议。一般的网络适配器都包含了物理层和数据链路层这两层的功能。

img

(Frame)是数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元PDU。每次发送的数据都会被封装成一个帧,里面包含了数据和控制信息(如地址、校验码等)。数据链路层的设备(如网卡)之间就是通过帧来通信的。


数据链路层的三个重要问题

封装成帧

img

img

透明传输

img

如果不解决上述问题,则数据链路层就会对上层交付的PDU的内容有所限制,即PDU中不能包含帧定界符。显然,这样的数据链路层没有什么应用价值。如果能够采取措施,使得数据链路层对上层交付的PDU的内容没有任何限制,就好像数据链路层不存在一样,就称其为透明传输

差错检查

例如 PPP 帧上的 FCS(Frame Check Sequence),用于检测数据在传输过程中是否出错。

不可靠传输服务:直接丢弃有误码的帧

可靠传输服务:实现发送方发送什么,接收方最终都能正确收到。

img


封装成帧和透明传输

封装成帧

封装成帧是指数据链路层给上层交付下来的协议数据单元PDU添加一个首部和一个尾部,使之成为帧。

  • 帧的首部和尾部中包含有一些重要的控制信息
帧的首部尾部包含内容

帧首部通常包含:

  • 地址字段:标识帧的接收方和发送方(如以太网帧中的源地址和目的地址)。

  • 控制字段:用于链路管理、帧编号、流量控制等(如PPP协议中的控制字段)。

  • 协议类型字段:指明上层协议类型(如以太网帧中的Type字段)。

帧尾部最常见的内容是检错码。

不同协议的帧结构略有差异,但首部和尾部的核心作用都是标识、控制和检错,保证数据链路层的可靠传输。

  • 帧首部和尾部的作用之一就是帧定界。然而,并不是每一种数据链路层协议的帧都包含有帧定界标志,例如以太网V2的MAC帧中,首部和尾部中并没有帧定界标志。
以太网v2的MAC帧传输时如何区分不同帧

img

  1. 帧的定界

帧的开始:Preamble + SFD

当一个设备准备发送一个以太网帧时,它不会直接就发送目标MAC地址。它会先发送8个字节的特殊信号:

  • 前同步码 (Preamble): 7个字节,内容固定为 10101010 10101010 ... (共56位)。这个交替的 10 构成了一个稳定的方波信号。接收方的网络接口卡(NIC)可以利用这个信号来同步时钟 (Clock Synchronization)。这确保了发送方和接收方能以完全相同的速率来解读后续的比特流。

  • 帧起始定界符 (Start Frame Delimiter, SFD): 1个字节,内容固定为 10101011。它紧跟在前同步码后面,模式与前同步码非常相似,但最后两位是 11。告诉接收方下一个比特就是以太网帧的第一个比特(即目标MAC地址的第一个比特)。

  1. 帧的结束:帧间隙 (Interframe Gap, IFG)

以太网不像某些协议那样在帧的末尾有一个明确的“结束符”。它是通过“沉默”,也就是帧间隙来表示结束的。

  • 在发送完一个完整的帧(从目标MAC到FCS校验和)之后,发送方必须在物理线路上保持一段静默时间,才能发送下一个帧。这个静默时间至少相当于传输96个比特所需的时间。例如,在100Mbps的网络中,这个间隙是960纳秒(ns)。当接收方的NIC在成功接收到一个帧后,检测到线路进入了这种“静默”状态,它就知道这个帧已经完整地结束了。这个间隙也给了NIC硬件一点时间来处理刚刚接收到的帧,并为下一个帧的到来做准备。
  1. 完整流程如下:
  • 监听沉默 (IFG):NIC在空闲的线路上等待信号。

  • 时钟同步 (Preamble):检测到 10101010... 信号,开始与发送方同步时钟。

  • 侦测帧头 (SFD):检测到 10101011,知道一个新帧正式开始,准备接收数据。

  • 接收数据:将后续的比特流存入缓冲区,直到信号中断。

  • 侦测帧尾 (IFG):线路恢复沉默,确认一个完整的帧已接收完毕。

  • 校验完整性 (FCS):计算接收到数据的CRC校验和,与帧末尾的FCS字段比较。不匹配则丢弃帧。

  • 识别内容 (EtherType):如果FCS校验通过,检查EtherType字段,确定载荷类型(如IPv4)。

  • 向上交付:剥离以太网的头部和尾部(MAC地址、EtherType、FCS),将中间的Payload数据交给操作系统中对应的上层协议(如IP协议栈)进行下一步处理。

为了提高数据链路层传输帧的效率,应当使帧的数据载荷的长度尽可能地大于首部和尾部的长度。

考虑到对缓存空间的需求以及差错控制等诸多因素,每一种数据链路层协议都规定了帧的数据载荷的长度上限,即最大传送单元(Maximum Transfer Unit,MTU)。例如,以太网的MTU为1500个字节。

img


透明传输

  1. 面向字节的物理链路使用字节填充的方法实现透明传输。

适用于面向字节的链路协议(如PPP)。协议用某个特殊字节(如0x7E)作为帧的定界符。如果数据中出现了0x7E或其他特殊控制字节(如转义字节0x7D),发送方就在这些字节前插入一个转义字节(如0x7D),并对原字节做特殊处理(如异或0x20)。接收方收到数据后,遇到转义字节就知道下一个字节是被“填充”的,需要还原。

例如:

  • 数据:... 0x7E ...
  • 发送方变成:... 0x7D 0x5E ...
  • 接收方还原为:... 0x7E ...
  1. 面向比特的物理链路使用比特填充的方法实现透明传输。

适用于面向比特的链路协议(如HDLC)。协议用一组比特(如01111110)作为帧定界符。如果数据中出现连续5个1,发送方自动在后面插入一个0,避免出现定界符的比特模式。接收方收到数据时,遇到连续5个1后跟着0,就把这个0去掉,还原原始数据。

例如:

  • 数据:... 0111111 ...
  • 发送方变成:... 01111110 ...
  • 接收方还原为:... 0111111 ...
PPT例题

img

answer

img

其实这就涉及到零比特填充法”(Bit Stuffing)的核心规则和目的。

首先,本协议中的帧定界符 FLAG01111110。然后我们来明确“零比特填充法”的操作规则:在发送端,扫描整个数据载荷(作为一个连续的比特流,不关心字节边界),只要检测到有连续的5个1,就立即在其后填充一个0这样,接收端就可以毫无歧义地根据 01111110 来识别帧的开始和结束。


差错检测

误码的相关概念

实际的通信链路都不是理想的,比特在传输过程中可能会产生差错(称为比特差错)。

在一段时间内,传输错误的比特数量占所传输比特总数的比率称为误码率(Bit Error Rate,BER)。

提高链路的信噪比,可以降低误码率。但在实际的通信链路上,不可能使误码率下降为零。

使用差错检测技术来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。


奇偶校验

奇校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数奇数

偶校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数偶数

但是,在所传输的数据中,如果有奇数个位发生误码,则所包含比特1的数量的奇偶性会发生改变,可以检测出误码。在所传输的数据中,如果有偶数个位发生误码,则所包含比特1的数量的奇偶性不会发生改变,无法检测出误码(漏检)。

在实际使用时,奇偶校验又可分为垂直奇偶校验、水平奇偶校验以及水平垂直奇偶校验。


循环冗余校验

数据链路层广泛使用漏检率极低的循环冗余校验(Cyclic Redundancy Check,CRC)检错技术。

循环冗余校验CRC的基本思想:

  • 收发双方约定好一个生成多项式G(X)。
  • 发送方基于待发送的数据和生成多项式G(X),计算出差错检测码(冗余码),将冗余码添加到待发送数据的后面一起传输。
  • 接收方收到数据和冗余码后,通过生成多项式G(X)来计算收到的数据和冗余码是否产生了误码。

CRC的核心思想非常巧妙,可以类比于我们生活中的除法:

  • 发送方:我有一份重要数据(被除数),我用一个大家事先约定好的特殊数字(除数)去除它,会得到一个余数。我把这份“余数”作为校验码,附在原始数据的后面一起发给你。
  • 接收方:我收到了你发来的“原始数据+余数”。为了确认数据在路上有没有损坏,我也用那个事先约定好的“除数”去除你发来的整个数据包(原始数据+余数)。
  • 判断:如果我算出来的余数是0,说明数据大概率是完好无损的。如果余数不是0,那么数据在传输过程中一定出错了!

CRC使用的不是普通的算术除法,而是一种异或XOR运算,那个约定的“除数”则被称为生成多项式

  • 生成多项式 (Generator Polynomial):收发双方预先约定好的一个二进制数,是CRC算法的核心。例如,一个常用的生成多项式是 \(CRC-8\)\(x^8 + x^2 + x + 1\),对应的二进制就是 100000111
  • CRC校验码 (CRC Checksum):也叫冗余码余数 (Remainder)。是通过模2除法计算出来的,附加在原始数据末尾的比特序列。
CRC的计算过程

img

img

为什么余数为0就代表正确

这背后是多项式数学的原理。发送的数据帧可以表示为 \(T(x) = M(x) \cdot x^r + R(x)\)。由于 \(R(x)\)\(M(x) \cdot x^r\) 除以 \(G(x)\) 的余数,所以 \(M(x) \cdot x^r = Q(x)G(x) + R(x)\)

那么 \(T(x) = Q(x)G(x) + R(x) + R(x)\)。在模2运算中,\(R(x)+R(x) = 0\),所以 \(T(x) = Q(x)G(x)\)

这意味着最终的帧 \(T(x)\) 一定能被 \(G(x)\) 整除,所以只要没出错,余数必然是0。

奇偶校验、循环冗余校验等差错检测技术,只能检测出传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。

要想纠正传输中的差错,可以使用冗余信息更多的纠错码(例如海明码)进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。

在计算机网络中,通常采用检错重传方式来纠正传输中的差错,或者仅仅丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务

循环冗余校验CRC具有很好的检错能力(漏检率极低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层,是一种检错方式。

海明码

海明码通过设置多个交叉重叠的校验位,使得任何一位数据出错,都会导致一组特定组合的校验位出错。通过分析是“哪些”校验位出错了,我们就能反推出错误的确切位置。

如何构建一个海明码?以 (15, 11)海明码为例。

(15, 11)海明码 的意思是:最终的码字(Codeword)总长度为 \(n=15\) 位。其中包含原始数据 \(k=11\) 位。剩下的 \(n-k=4\) 位是校验位(Parity Bits),记为 \(p\)

img

  1. 确定校验位的位置和数量
  • 数量:设校验位有 \(r\) 个,数据位有 \(k\) 个。\(r\) 个校验位能产生 \(2^r\) 种不同的状态(校验结果)。其中一种状态表示“无错误”,剩下的 \(2^r-1\) 种状态必须能唯一指向每一个可能出错的位置(包括数据位和校验位本身)。因此,必须满足不等式:
\[2^r \ge (k+r) + 1\]

在本例中,\(k=11\)\(r=4\)\(2^4 = 16\),而 \(k+r+1 = 11+4+1=16\)。所以 \(16 \ge 16\) 成立,4个校验位刚刚好。

  • 位置:海明码规定,校验位必须放在总码字中\(2^i\) 的位置上(\(i=0, 1, 2, ...\))。
  1. 填充数据位

将11位的数据 01011001101 依次填入剩下的数据位,校验位暂时为空。

  1. 计算校验位的值

每一个校验位 \(p_i\) 负责校验一组特定的数据位。这组数据位的选择不是随意的,而是根据它们的位置编号的二进制表示来确定的。

  • 校验位 \(p_1\) :负责校验所有位置编号的二进制表示中,最低位(第0位)是1的那些位。也就是对应的数据:\(p_1\), D3, D5, D7, D9, D11, D13, D15

  • 校验位 \(p_2\) :负责校验所有位置编号的二进制表示中,第1位是1的那些位。也就是对应的数据:\(p_2\), D3, D6, D7, D10, D11, D14, D15

对于校验位 \(p_4\)\(p_8\) 也是类似的。

计算(使用偶校验):可以得到 \(p_1 = 1, p_2 = 0, p_4 = 1, p_8 = 0\)

img

  1. 形成最终码字并发送

将计算出的校验位填回码字中,得到最终要发送的15位码字。

接收方如何定位错误?假设在传输过程中,第7位发生了错误,从1变成了0

接收方不知道哪个位错了,于是它执行与发送方完全一样的校验流程:

  1. 重新计算校验关系,生成“纠错码”(Syndrome)
  • 校验第1组1的个数为5(奇数)。校验失败! 结果记为 1

  • 校验第2组1的个数为1(奇数)。校验失败! 结果记为 1

  • 校验第3组1的个数为5(奇数)。校验失败! 结果记为 1

  • 校验第4组1的个数为4(偶数)。校验通过! 结果记为 0

  1. 定位错误

将上面得到的4个校验结果,按 \(p_8, p_4, p_2, p_1\) 的顺序组合成一个二进制数:

\[S = (\text{第4组结果})(\text{第3组结果})(\text{第2组结果})(\text{第1组结果})\]
\[S = 0111_2\]

将这个二进制数转换为十进制:\(0*8 + 1*4 + 1*2 + 1*1 = 7\)

结论:出错的位置就是第7位!

或者可以使用行列定位法

第1组和第2组都出错了,根据第一组的1,3,5,7,9,11,13,15列中有错误,根据第二组的2,3,6,7,10,11,14,15列中有错误,因此错误在4列。

第3组出错了,第4组没错,根据第三组的4,5,6,7,12,13,14,15行中有错误,根据第四组的8,9,10,11,12,13,14,15行中没有错误,因此错误在2行。

  1. 纠正错误接收方只需将第7位的数据反转,即可恢复出原始的正确数据。

总结:海明码的精髓在于其巧妙设计的交叉校验体系。每一个数据位都被不止一个校验位所管理,因此当它出错时,会留下一串独特的“校验失败”的纠错码。这个二进制值,恰好就是错误位的地址,从而实现了精准的定位与纠错。


可靠传输

可靠传输的相关基本概念

使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特差错)。

数据链路层向其上层提供的服务类型

  • 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做;
  • 可靠传输服务:通过某种机制实现发送方发送什么,接收方最终就能收到什么。

一般情况下,有线链路的误码率比较低。为了减小开销,并不要求数据链路层向其上层提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。

无线链路易受干扰,误码率比较高,因此要求数据链路层必须向其上层提供可靠传输服务

img

传输差错分为:

  • 误码(比特差错)
  • 分组丢失:输入队列快满了,主动丢弃收到的分组
  • 分组失序:分组到达顺序与发送顺序不同
  • 分组重复:由于路由器繁忙,分组在输入队列中等待较长时间,超时重发后接收器可能会收到重复的分组。

误码会出现在出现在数据链路层及其下层;而分组丢失、分组失序和分组重复通常出现在数据链路层的上层。


img

  • 可靠传输服务并不局限于数据链路层,其他各层均可选择实现可靠传输。
  • 可靠传输的实现比较复杂,开销比较大,是否使用可靠传输取决于应用需求。

停止-等待协议的实现原理

停止-等待协议属于自动请求重传(Automatic Repeat reQuest,ARQ)协议。即重传的请求是发送方自动进行的,而不是接收方请求发送方重传某个误码的数据分组。

停止-等待协议的核心思想非常简单:

发送方每发送一个数据分组(Packet),就必须停下来,等待接收方的确认(Acknowledgment, ACK),收到确认后才能发送下一个数据分组。

  1. 在最理想的情况下,发送方发送数据,接收方完美接收,然后发回一个确认,发送方收到确认后再发下一个数据,如此往复。

但在真实的网络环境中,情况要复杂得多,主要会遇到以下几种问题:

  • 数据分组丢失
  • 确认分组(ACK)丢失
  • 数据或确认分组迟到
  • 数据分组出错
  1. 问题与解决方案

2.1 数据分组丢失

发送方发送了数据,但数据在网络中丢失了。接收方根本没收到,所以它不会发送任何确认(ACK)。此时如果没有其他措施,发送方将永远地等待下去。

解决方案:超时重传 (Timeout Retransmission)

  • 发送方在发送完一个数据分组后,会启动一个 超时计时器 (Timeout Timer)
  • 如果在计时器设定的时间——即 超时重传时间 (Retransmission Time-Out, RTO)——内没有收到接收方的确认,发送方就会认为数据丢失了,并重新发送之前那个数据分组。

  • RTO 的值一般会被设置为略大于数据在两端之间的平均往返时间 (Round-Trip Time, RTT)。RTT 指的是从发送方发出数据,到接收方收到并返回确认,这一整个来回所花费的时间。如果 RTO 小于 RTT ,发送方会过早地认为数据丢失并进行不必要的重传。

Info

在数据链路层,点对点的往返时间RTT比较固定,RTO就比较好设定。

在运输层,由于端到端往返时间非常不确定,设置合适的超时重传时间RTO有时并不容易。

2.2 确认分组(ACK)丢失

接收方成功收到了数据(DATA0),也发送了确认(ACK),但这个ACK在网络中丢失了。此时发送方因为没收到ACK,会在超时后重传 DATA0 。这样一来,接收方就会收到两次完全相同的 DATA0 。接收方如何知道这是个重复的分组,而不是一个新的、内容恰好也叫“DATA0”的分组呢?

解决方案:给数据分组编号 (Sequence Number)

  • 为了让接收方能识别重复的分组,我们必须给每个数据分组带上序号。
  • 对于停止-等待协议,因为每次只发送一个,所以只需要 1个比特 的编号就足够了,即 01
  • 发送顺序是 DATA0, DATA1, DATA0, DATA1, ... 如此循环。
  • 当接收方期待收到DATA1,但却收到了一个序号为0的分组时,它就知道这是对DATA0的重复发送。此时,接收方的策略是:
  1. 丢弃 这个重复的数据分组。
  2. 重新发送 一个对0号分组的确认(ACK)。

2.3 确认分组(ACK)迟到

对DATA0的确认ACK0没有丢失,但在网络中“堵车”了,延迟了很久才到达。发送方因为超时,已经重传了DATA0,并且在收到对重传DATA0的确认后,发送了新的DATA1。这时,那个迟到的ACK0才终于抵达发送方。此时发送方此时已经发送了DATA1,它正在等待对DATA1的确认。如果收到了这个迟到的ACK0,它会误以为这是对DATA1的确认。

解决方案:给确认分组也编号 (Acknowledgment Number)

  • 为了让发送方能识别迟到或重复的ACK,确认分组也需要编号。
  • DATA0 的确认是 ACK0,对 DATA1 的确认是 ACK1
  • 这样,当发送方发送了DATA1后,它期待的是ACK1。如果此时收到了一个迟到的ACK0,它就能通过编号识别出这是对之前0号分组的重复确认,直接 忽略 即可。

Info

数据链路层一般不会出现确认分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给确认分组编号

2.4 数据分组出错

数据分组在传输过程中发生了比特错误。

解决方案:差错检测和否认分组 (NAK)

  • 接收方通过 差错检测 机制(如CRC校验)发现数据有误。
  • 接收方会 丢弃 这个错误的分组。
  • 同时,为了不让发送方傻等超时,接收方可以主动发送一个 否认分组 (Negative Acknowledgment, NAK),明确告知发送方“刚才那个数据坏了,请重发”。
  • 发送方收到NAK后,会立即重传相应的数据,而无需等待超时计时器结束,提高了效率。

停止-等待协议的信道利用率

img

\[\text{信道利用率 U } = \frac{T_{D}}{T_{D} + RTT + T_{A}} \xrightarrow{T_{A} \ll T{D}} U \approx \frac{T_{D}}{T_{D} + RTT}\]
\[U \approx \frac{T_{D}}{T_{D} + RTT} \xrightarrow{RTT \gg T_{D}} \text{ U 很低}\]
\[U \approx \frac{T_{D}}{RTT} \xrightarrow{RTT \ll T_{D}} \text{ U 比较高}\]
  • \(T_{A} \ll T_{D}\) : 确认分组的传输时间远小于数据分组的传输时间,可以忽略不计。
  • \(RTT \gg T_{D}\) : 例如,卫星链路的RTT很大。
  • \(RTT \ll T_{D}\) : 例如,无线局域网链路的RTT远小于 \(T_D\)
  • 若出现超时重传,对于传送有用的数据信息来说,信道利用率还要降低。
  • 在往返时间RTT相对较大的情况下,为了提高信道利用率,收发双方不适合采用停止-等待协议,而可以选择使用回退N帧(GBN)协议或选择重传(SR)协议。
PPT 例题

img


回退N帧协议(Go-Back-N , GBN)

img

因为对于 \(RTT \gg T_{D}\) 的链路,停止-等待协议的信道利用率很低,所以收发双方可以采用流水线技术,可以显著提高信道利用率。

  • 在使用流水线传输方式时,发送方不能无限制地连续发送数据分组,否则可能会导致网络中的路由器或接收方来不及处理这些数据分组,进而导致数据分组的丢失,这实际上是对网络资源的浪费。
  • 回退N帧协议采用流水线传输方式,并且利用发送窗口来限制发送方连续发送数据分组的数量,这属于连续ARQ协议

回退N帧协议的基本原理

采用 \(n\) 个比特给分组编序号,序号范围是 \(0 \sim (2^n-1)\)

发送方需要维护一个发送窗口 \(W_t\) ,在未收到接收方确认分组的情况下,发送方可将序号落入 \(W_t\) 内的所有数据分组连续发送出去。并且 \(W_t\) 的取值范围是 \(0 \sim (2^n-1)\)

准备接收时,接收方需要维护一个接收窗口 \(W_R\) ,只有正确到达接收方(无误码)且序号落入 \(W_R\) 内的数据分组才被接收方接收。其中 \(W_R\) 的取值只能是1,这一点与停止-等待协议是相同的。

接收方每正确收到一个序号落入接收窗口的数据分组,就将接收窗口向前滑动一个位置,这样就有一个新的序号落入接收窗口。与此同时,接收方还要给发送方发送针对该数据分组的确认分组

发送方每收到一个按序确认的确认分组,就将发送窗口向前滑动一个位置,这样就有一个新的序号落入发送窗口,序号落入发送窗口内的数据分组可继续被发送

在回退N帧协议的工作过程中,发送方的发送窗口和接收方的接收窗口按上述规则不断向前滑动。因此,这类协议又称为滑动窗口协议

Note

在无传输差错的情况下,回退N帧协议的信道利用率比停止-等待协议的信道利用率有显著提高。提高的程度取决于发送窗口的大小。

超时重传、回退N帧的情况

如果某一帧出错或丢失,接收方会丢弃后续所有帧,发送方在超时或收到否认后,会“回退”并重传该帧及其之后的所有帧。

Note

一个数据分组的差错就可能引起大量数据分组的重传。

在信道质量较差(容易出现误码)的情况下,回退N帧协议的信道利用率并不比停止-等待协议的信道利用率高。

回退N帧协议的接收方采用累积确认方式。

  • 接收方不必对收到的每一个数据分组都发送一个确认分组,而是可以在收到几个序号连续的数据分组后,对按序到达的最后一个数据分组发送确认分组。
  • 接收方何时发送累积确认分组,由具体实现决定。
  • 确认分组 ACKn 表明序号为 n 及之前的所有数据分组都已正确接收。

累积确认的优点

  • 减少向网络中注入确认分组的数量。
  • 即使确认分组丢失,也可能不必重传数据分组。

累积确认的缺点

  • 不能向发送方及时准确地反映出接收方已正确接收的所有数据分组的数量。
PPT 例题

img

img

关于若 \(W_T\) 超过取值范围会出现什么情况?

其实,只要最后一个ACK(或中途任何一个ACK)成功抵达,并且抵达时间早于 S 的定时器超时,协议就可以正常使用,即使 \(W_T = k\)

例如中途任何一个 ACK 成功抵达,后面的 ACK 都丢失了,但是接收方已经接收到了数据包,此时发送方重传时,接收方会丢弃这个帧,并且重新发送它上一次成功接收并发送过的 ACK。而对于只要最后一个 ACK 成功抵达,那么根据累积确认的原理,发送方就能知道所有数据包都已经成功接收了。

只有当所有的 ACK 都丢失了,此时发生了超时,发送方才会因为没有收到 ACK 而重传数据包。但是此时接收方的窗口序号因为比特数不够而已经在期盼这个比特序列的第一个了。例如2位比特传送4个数据,前一组(0,1,2,3)已经传送失败了,但是此时接收方期待的序号依旧是0,所以发送方重传0号数据包时,接收方会认为这是符合预期序号的第一个数据包,从而导致这个数据包被接收,进而后续数据包也被接收,从而导致数据错误。

  • 如果 \(W_T = 1\) ,就变成了停止-等待协议。如果 \(W_T > 2^n - 1\) ,那么接收方就无法分辨新旧数据分组。

GBN 协议下信道利用率与发送窗口大小的关系

假设连续 ARQ 协议的发送窗口为 n,即发送方可连续发送 n 个分组,分为两种情况:

  1. \(nT_D < T_D + RTT + T_A\) : 即在一个发送周期内可以发送完个分组,信道利用率为
\[U = \frac{nT_D}{T_D + RTT + T_A} \xrightarrow{T_A \ll T{D}} U \approx \frac{nT_D}{T_D + RTT}\]
  1. \(nT_D \geq T_D + RTT + T_A\) : 即在一个发送周期内不能发送完 n 个分组,对于这种情况,只要不发生差错,发送方就可不间断地发送分组,信道利用率为1。

选择重传协议(Selective Repeat, SR)

  1. 接收方 (Receiver): 会设置缓冲区,接收并缓存那些“失序到达”但在其接收窗口内的帧。
  2. 发送方 (Sender): 只会重传那些它确认“真正丢失”或“损坏”的帧(通常是定时器超时)。

接收方拥有一个缓冲区,用于暂存那些失序到达、但序号在其接收窗口内的帧。

\(n\) (n > 1)个比特给分组编号。

因为 \(W_R\) 的取值超过 \(W_T\) 是没有意义的。所以:

\[1 < W_R \leq W_T \]
\[W_R + W_T \leq 2^n \]
\[\therefore 1 < W_T \leq 2^{n-1}\]

这是为了确保接收窗口向前滑动后,落入接收窗口内的新序号与之前的旧序号没有重叠,避免无法分辨新旧数据分组。

而为了使发送方仅重传出现差错的数据分组,接收方不再采用累积确认,而需要对每一个正确接收的数据分组进行逐一确认。如果发送方收到未按序到达的确认分组,应对其进行记录,以防止其相应数据分组的超时重发,但发送窗口不能向前滑动。

PPT 例题

img

question

主机甲通过 128 kbps 卫星链路,采用滑动窗口协议向主机乙发送数据,链路单向传播延迟为 250ms,帧长为 1000 字节。不考虑确认帧的开销,为使链路利用率不小于 80%,帧序号的比特数至少是( )。

A. 3

B. 4

C. 7

D. 8

answer

B

设发送窗口一次可以发出 N 帧,则链路利用率 U 为:

\[\frac{N \times 1000 \times 8 / 128 kbps}{1000 \times 8 / 128 kbps + 2 \times 250 ms} = \frac{N \times 62.5 ms}{62.5 ms + 500 ms} = \frac{N}{9} \ge 0.8\]

解得: \(N \ge 7.2\),发送窗口至少需要 8 帧。由于接收窗口还需要,所以 \(n \ge 4\)


点对点协议

点对点协议(Point-to-Point Protocol,PPP)是目前使用最广泛的点对点数据链路层协议。

点对点协议PPP主要有两种应用:

img


question

采用滑动窗口机制对两个相邻节点A和B的通信过程进行流量控制。A和B之间的数据传输速率为20kb/s,数据帧和确认帧的长度都为2000B,往返传播时延为1400ms,采用3比特给数据帧编号,测得在A和B的通信过程中信道利用率大于80%,则()。(注:在SR协议中,默认发送窗口大小等于接收窗口大小。)

A.节点A、B之间只能采用停止等待协议

B.节点A、B之间只能采用GBN协议

C.节点A、B之间只能采用SR协议

D.节点A、B之间可以采用GBN协议或SR协议

answer

无论采用哪种滑动窗口协议,信道利用率的计算方法都是: \(\frac{\text{发送窗口内所有数据的发送时延}}{一个数据帧的发送时延 + RTT + 一个确认帧的发送时延}\) 。分母记为 T = 一个数据帧的发送时延 + RTT + 一个确认帧的发送时延,其中数据帧或确认帧的发送时延 = 2000B/(20kb/s)=800ms,RTT=1400ms,即T=800+800+1400=3000ms。假设发送窗口大小为x,则 800x/3000>0.8,即发送窗口大小 x 要大于 3,GBN 协议的发送窗口为 \(2^3\)-1=7,满足要求: SR 协议的发送窗口为 \(2^2\)=4,也满足要求。因此,A 和 B 之间可以采用 GBN 协议或 SR 协议。

question

两台主机之间的数据链路层采用后退N帧协议(GBN)传输数据,数据传输速率为16kb/s,单向传播时延为270ms,数据帧长范围是128~512字节,接收方总是以与数据帧等长的帧进行确认。为使信道利用率达到最高,帧序号的比特数至少为()。

A.5

B.4

C.3

D.2

answer

B

连续 ARQ 的信道利用率:

\[\frac{\text{发送窗口大小} \times \text{数据帧长} / \text{数据传输速率} }{(\text{数据帧长} / \text{数据传输速率}) \times 2 + RTT} = \frac{\text{发送窗口大小} / \text{数据传输速率} }{ 2 / \text{数据传输速率} + RTT / \text{数据传输帧长} }\]

从上述公式可知,数据帧长越大,信道利用率就越高。数据帧长是不确定的,范围 128~512B,在计算最小窗口数时,为了保证无论数据帧长如何变化,信道利用率都能达到 100%,应以 128B的帧长计算。因此,当最短的帧长都能达到 100%的信道利用率时,发送更长的数据帧也都能达到 100%的信道利用率。若以 512B 的帧长计算,则求得的最小窗口数在 128B 的帧长下,达不到100%的信道利用率。首先计算出发送一个帧的时间 \(128 \times 8 / 16kb/s = 64ms\),RTT = 270ms × 2 = 540ms,发送一个帧到收到确认帧为止的总时间 64+270x2+64=668ms;这段时间总共可发送 668/64=10.4帧,即发送窗口>11,而接收窗口 =1,所以至少需要用4位比特进行编号。


PPP的帧格式

img

  • 标志(Flag)字段:PPP帧的定界符,取值为0x7E。
  • 地址(Address)字段:取值为0xFF,预留(目前没有什么作用)。
  • 控制(Control)字段:取值为0x03,预留(目前没有什么作用)。
  • 协议(Protocol)字段:其值用来指明帧的数据载荷应向上交付给哪个协议处理。

img

  • 帧检验序列(Frame Check Sequence,FCS)字段:其值是使用循环冗余校验CRC计算出的检错码。
question

PPP 协议中的 LCP 帧的作用是( )。

A. 在建立状态阶段协商数据链路协议的选项

B. 配置网络层协议

C. 检查数据链路层的错误,并通知错误信息

D. 安全控制,保护通信双方的数据安全

answer

PPP (Point-to-Point Protocol) 是一个复杂的数据链路层协议,它不仅仅是传输数据,还包含一整套建立、配置和维护链路的机制。

为了实现这些功能,PPP 协议族中包含了两个主要的控制协议:

  1. LCP (Link Control Protocol) - 链路控制协议

  2. NCPs (Network Control Protocols) - 网络控制协议(注意是复数,例如 IPCP, IPXCP 等)

LCP 的作用

LCP 的核心职责是 “管理数据链路本身”。它在网络层(如 IP)开始工作之前运行。LCP 帧就是 LCP 协议在工作时用来通信的消息。

它的主要功能发生在 “建立状态阶段” (Link Establishment phase),具体工作包括:

协商链路选项: LCP 帧被发送到对端,用来协商和配置数据链路层的各种参数(选项)。

主要选项包括:

  • 最大传输单元 (MTU): 协商数据包的最大尺寸。

  • 身份验证 (Authentication): 协商是否需要身份验证,以及使用哪种协议(如 PAP 或 CHAP)。

  • 压缩 (Compression): 协商是否使用数据压缩(如 Stacker 或 Deflate)。

  • 链路质量监控 (Link Quality Monitoring): 协商是否监控链路质量。

  • 魔术数字 (Magic Number): 用于检测链路环路。

一旦 LCP 协商完成并“打开”了链路,PPP 才会进入下一个阶段。

B. 配置网络层协议:

这是 NCPs(网络控制协议)的工作。例如,一旦 LCP 成功建立了链路,IPCP (IP Control Protocol,一种NCP) 就会开始工作,用来协商 IP 层的参数(例如为对端分配一个 IP 地址)。LCP 管“链路”,NCP 管“网络层”。

C. 检查数据链路层的错误,并通知错误信息:

PPP 数据帧本身包含一个 FCS (Frame Check Sequence) 字段,用于进行差错校验(CRC 校验)。这是 PPP 协议传输数据时的一个基本功能,而不是 LCP 协商帧的特定作用。LCP 的作用是“协商”,而不是“校验数据流”。

D. 安全控制,保护通信双方的数据安全:

这个描述不准确。LCP 协商是否使用安全(即身份验证,如 CHAP),但 LCP 帧本身并不执行安全控制或数据加密。它只是一个“谈判者”,决定“我们要不要用保安,用哪个保安”。而选项 A(协商选项)更准确地概括了包括安全协商在内的所有 LCP 功能。


PPP帧的透明传输

字节填充 (Byte Stuffing)

img

发送方的处理:

  1. 将数据载荷中出现的每一个 0x7E 减去 0x20 (相当于异或 0x20 ),然后在其前面插入转义字符 0x7D
  2. 若数据载荷中原来就含有 0x7D ,则把每一个 0x7D 减去 0x20 ,然后在其前面插入转义字符 0x7D
  3. 将数据载荷中出现的每一个ASCII码控制字符(即数值小于 0x20 的字符),加上 0x20 (相当于异或 0x20 ,将其转换成非控制字符),然后在其前面插入转义字符 0x7D

接收方的处理:

进行与发送方相反的变换,就可以正确地恢复出未经过字节填充的原始数据载荷。例如当它看到 0x7D 时,就知道下一个字节是“被转义过”的,它会把下一个字节拿过来,恢复成原始数据(比如把 0x5E 变回 0x7D)。

为什么要转义ASCII控制字符

这主要是一个历史遗留问题,与PPP设计时需要兼容的老式串行端口(Serial Ports)和调制解调器(Modem)有关。

PPP 出现之前,这些串行端口和 Modem 就已经有它们自己的“控制语言”了,它们会“偷听”传输的数据,寻找特定的控制字符来执行某些操作。

所以是为了避免 Modem 等拦截数据传输,防止 PPP协议下方的硬件或软件出错。

img


比特填充 (Bit Stuffing)

img

发送方的处理:

对帧的数据载荷进行扫描(一般由硬件完成),每出现5个连续的比特1,则在其后填充一个比特0

接收方的处理:

对帧的数据载荷进行扫描,每出现5个连续的比特1时,就把其后的一个比特0删除


字符计数法 (Character Counting)

字符计数法是指在帧首部使用一个计数字段来记录该帧所含的字节数(包括计数字段自身所占用的1字节)。

img

这种方法最大的问题在于若计数字段出错,即失去帧边界划分的依据,则接收方就无法判断所传输帧的结束位和下一帧的开始位,收发双方将失去同步,造成灾难性后果。


PPP帧的差错检测

帧检验序列 FCS 字段:其值是使用循环冗余校验CRC计算出的检错码。

CRC采用的生成多项式为 \(\text{CRC-CCITT} = X^{16} + X^{12} + X^{5} + 1\)

[RFC1662]文档的附录部分给出了FCS的计算方法的C语言实现(查表法)

接收方每收到一个PPP帧,就进行CRC检验。若CRC检验正确,就收下这个帧;否则,就丢弃这个帧。所以使用PPP的数据链路层,向上提供的是不可靠数据传输服务

question

PPP提供的是()。

A.无连接的不可靠服务

B.无连接的可靠服务

C.有连接的不可靠服务

D.有连接的可靠服务

answer

PPP是一种面向连接的点对点数据链路层协议,虽然它在连接建立的过程中使用了确认机制,但在数据帧的发送过程中只保证无差错接收(CRC 检验),检验正确就接收这个帧,否则丢弃这个帧,其他什么也不做。因此 PPP 提供的是有连接的不可靠服务。


共享式以太网

以太网(Ethernet)以曾经被假想的电磁波传播介质——以太(Ether)来命名。

以太网最初采用无源电缆(不包含电源线)作为共享总线来传输帧,属于基带总线局域网,传输速率为2.94Mb/s。

img

以太网目前已经从传统的共享式以太网发展到交换式以太网,传输速率已经从10Mb/s提高到100Mb/s、1Gb/s甚至10Gb/s。


网络适配器

要将计算机连接到以太网,需要使用相应的网络适配器(Adapter),网络适配器一般简称为“网卡”。

img

img

在计算机内部,网卡与CPU之间的通信,一般是通过计算机主板上的 I/O 总线以并行传输方式进行。

网卡与外部以太网(局域网)之间的通信,一般是通过传输媒体(同轴电缆、双绞线电缆、光纤)以串行方式进行的。

img

网卡除要实现物理层和数据链路层功能,其另外一个重要功能就是要进行并行传输和串行传输的转换。由于网络的传输速率和计算机内部总线上的传输速率并不相同,因此在网卡的核心芯片中都会包含用于缓存数据的存储器。

在确保网卡硬件正确的情况下,为了使网卡正常工作,还必须要在计算机的操作系统中为网卡安装相应的设备驱动程序。驱动程序负责驱动网卡发送和接收帧。

question

以太网卡实现的主要功能在( )。

A. 物理层和数据链路层

B. 数据链路层和网络层

C. 物理层和网络层

D. 数据链路层和应用层

answer

以太网卡(也称为网络接口卡,NIC)是计算机连接到以太网的硬件设备。它的功能跨越了 OSI 模型的最低两层:

  1. 物理层 (Layer 1):
  • 物理连接: 提供 RJ45 接口(或光纤接口)来连接网线。

  • 信号收发: 负责将来自计算机的数字比特流('1'和'0')编码成电信号(或光信号)发送到网络上,并解码收到的信号,将其变回数字比特流。

  1. 数据链路层 (Layer 2):
  • MAC 地址: 每张网卡都有一个全球唯一的 MAC 地址(物理地址)。

  • 数据帧封装: 将来自上层(网络层,如 IP 包)的数据打包成以太网数据帧 (Frame)。它会添加“帧头”(包含源/目标 MAC 地址)和“帧尾”(包含 FCS 校验和)。

  • MAC 寻址与过滤: 当收到一个数据帧时,网卡硬件会检查该帧的目标 MAC 地址。如果这个地址是自己的 MAC 地址(或广播/组播地址),它就会接受该帧并将其交给操作系统;否则,它会直接丢弃该帧,而不需要 CPU 介入。

  • 差错校验 (FCS): 检查收到的数据帧是否在传输中出错。

Info

  • 物理层(传输比特流(电信号/光信号)):中继器、集线器

  • 数据链路层(基于 MAC 地址 转发数据帧):网桥、交换机(多端口网桥)、网卡

  • 网络层(基于 MAC 地址 转发数据帧):路由器


MAC地址

对于点对点信道,数据链路层不需要使用地址。但是对于广播信道,当一个节点发送数据时,其他所有节点都能收到该数据,因此需要使用地址来区分不同的节点。

当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址

在每个主机发送的帧的首部中,都携带有发送主机(源主机)和接收主机(目的主机)的数据链路层地址。由于这类地址是用于媒体接入控制(Medium Access Control,MAC)的,因此被称为 MAC 地址。

img

MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址

MAC地址有时也被称为物理地址

attention

虽然这里说物理地址,但是这个物理地址属于数据链路层范畴。

一般情况下,普通用户计算机中往往会包含两块网卡:

  • 一块是用于接入有线局域网的以太网卡
  • 另一块是用于接入无线局域网的Wi-Fi网卡

每块网卡都有一个全球唯一的MAC地址。

交换机和路由器往往具有更多的网络接口,所以会拥有更多的MAC地址。

Note

综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。


MAC地址格式

img

MAC地址是一个6字节(48位)的数字。为了方便人看,通常写成12个十六进制数。因为是48位,所以总共有 $2^{48} $ 个不同的MAC地址。

在这6个字节中,第1个字节是用来表示地址类型的。

  1. 第1个字节的最低有效位(即第0位)(I/G)用来表示单播地址(Unicast Address)还是多播地址(Multicast Address)。单播地址的该位为0,表示该地址是分配给某个单一设备的;多播地址的该位为1,表示该地址是分配给一组设备的。

例如当一台电脑A要给另一台电脑B发信息时,它会使用电脑B的“单播”地址。这是网络中最常见的通信方式。而当一个视频会议服务器想把画面同时发给会议室里的10台电脑,它就可以把数据发送到一个“多播”地址。这10台电脑都会“订阅”这个地址并接收数据,而会议室外的其他电脑则会忽略它。

  1. 第1个字节的次低有效位(即第1位)(G/L)用来表示全局唯一地址(Globally Unique Address)还是本地管理地址(Locally Administered Address)。全局唯一地址的该位为0,表示该地址是由IEEE统一分配的,全球唯一;本地管理地址的该位为1,表示该地址是由本地管理员自行分配的,可能不是全球唯一的。

字节的发送顺序是:低地址字节先发送,高地址字节后发送。从第一字节的 b0 位到 b7 位,从第一字节到第六字节。


多播MAC地址举例

img

四台“交换机”被连接成了一个环形。如果左下角的交换机收到了一个“广播帧”。它会把这个帧转发给所有其他端口,于是这个帧会像“幽灵”一样永无休止地在这个环路里疯狂循环,并且被无限复制。这会在1秒钟内耗尽所有网络带宽,导致所有交换机CPU占满,网络彻底瘫痪。这种情况被称为“广播风暴”。

为了防止这种“环路灾难”,STP(Spanning Tree Protocol,生成树协议)应运而生。

STP协议的唯一目的就是:在物理上允许环路(用于备份),但在逻辑上“剪断”环路。为了防止环路,它会阻塞(禁用)一个端口,逻辑上把这个环“剪开”。所以右下角那条被阻塞的链路变成了“备份链路”。如果其他任何一条链路(比如左上角和右上角之间)断了,STP会自动重新计算,并在几秒钟内激活那个被阻塞的端口,恢复网络通信。

而交换机是通过多播MAC地址来识别STP协议帧的。交换机之间传递的是 BPDU(Bridge Protocol Data Unit,网桥协议数据单元)。这个 BPDU 需要被所有交换机识别,所以既不能使用单播地址,也不能使用广播地址(因为广播地址会被所有设备接收,增加不必要的负担)。


网卡从网络上每收到一个帧,就检查帧首部中的目的MAC地址,按以下情况处理:

  1. 如果目的MAC地址是广播地址(FF-FF-FF-FF-FF-FF),则接受该帧。
  2. 如果目的MAC地址与网卡上固化的全球单播MAC地址相同,则接受该帧。
  3. 如果目的MAC地址是网卡支持的多播地址,则接受该帧。
  4. 除上述情况外,丢弃该帧。

网卡还可被设置为一种特殊的工作方式:混杂方式(Promiscuous Mode)。工作在混杂方式的网卡,只要收到共享媒体上传来的帧就会收下,而不管帧的目的MAC地址是什么。

  • 对于网络维护和管理人员,这种方式可以监视和分析局域网上的流量,以便找出提高网络性能的具体措施。
  • 嗅探器(Sniffer)就是一种工作在混杂方式的网卡,再配合相应的工具软件(WireShark),就可以作为一种非常有用的网络工具来学习和分析网络。
  • 混杂方式就像一把“双刃剑”,黑客常利用这种方式非法获取网络用户的口令。

全球单播MAC地址就如同身份证上的身份证号码,具有唯一性,它往往与用户个人信息绑定在一起。因此,用户应尽量确保自己拥有的全球单播MAC地址不被泄露

为了避免用户设备连接Wi-Fi热点时MAC地址泄露的安全问题,目前大多数移动设备都已经采用了随机MAC地址技术


CSMA/CD协议

CSMA/CD协议的基本原理

在以太网的发展初期,人们普遍认为“无源的电缆线比有源器件可靠”,因此将多个站点连接在一条总线上来构建共享总线以太网

共享总线以太网具有天然的广播特性,即使总线上某个站点给另一个站点发送单播帧,表示帧的信号也会沿着总线传播到总线上的其他各站点。

当某个站点在总线上发送帧时,总线资源会被该站点独占。此时,如果总线上的其他站点也要在总线上发送帧,就会产生信号碰撞。当两个或多个站点同时使用总线发送帧时,就会产生信号碰撞。

为了解决各站点争用总线的问题,共享总线以太网使用了一种专用协议 CSMA/CD ,它是载波监听多址接入/碰撞检测(Carrier Sense Multiple Access Collision Detection)的英文缩写词。

  1. 多址接入

多个站点连接在一条总线上,竞争使用总线。

  1. 载波监听

每个站点在发送帧之前,先要检测一下总线上是否有其他站点在发送帧(“先听后说”):

  • 若检测到总线空闲96比特时间(发送96比特所耗费的时间,也称为帧间最小间隔),则发送这个帧;
  • 若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。
  1. 每个正在发送帧的站点边发送边检测碰撞(“边说边听”):
  • 一旦发现总线上出现碰撞,立即停止发送,退避一段随机时间后再次从载波监听开始进行发送(“一旦冲突,立即停说,等待时机,重新再说”)。
  • 发送帧的站点一旦检测到碰撞,除了立即停止发送帧外,还要再继续发送32比特或48比特的人为干扰信号(Jamming Signal),以便有足够多的碰撞信号使所有站点都能检测出碰撞
小summary

载波监听检测到总线空闲,但总线并不一定空闲。因为载波监听是指每个站点在发送数据前,先“听”总线上有没有其他站点正在发送数据。如果检测到总线空闲,就开始发送。但实际上,即使检测到空闲,也可能有其他站点几乎同时开始发送,导致信号在总线上发生碰撞。所以载波监听不能完全保证总线真的空闲。

使用CSMA/CD协议的共享总线以太网上的各站点,只是尽量避免碰撞并在出现碰撞时做出退避后重发的处理,但不能完全避免碰撞

在使用CSMA/CD协议时,由于正在发送帧的站点必须“边发送帧边检测碰撞”,因此站点不可能同时进行发送和接收,也就是不可能进行全双工通信,而只能进行半双工通信(双向交替通信)。

PPT 例题

img


共享式以太网的争用期

使用CSMA/CD协议的共享总线以太网上的任意站点在发送帧的过程中都可能会遭遇碰撞。

img

所以,从 A 站的角度看,从它开始发送 (T=0),到它检测到最晚的碰撞 (T=2 \(\tau\) ),所经历的最长时间就是 \(2\tau\)

也就是说站点从发送帧开始,最多经过时长 \(2\tau\) (即 \(𝜹\) → 0 )就可检测出所发送的帧是否遭遇了碰撞。

因此,共享总线以太网的端到端往返时间 \(2\tau\) 被称为争用期(Contention Period)或碰撞窗口(Collision Window),它是一个非常重要的参数。

  • 站点从发送帧开始,经过争用期 \(2\tau\) 这段时间还没有检测到碰撞,就可以肯定这次发送不会产生碰撞

从争用期的概念可以看出,共享总线以太网上的每一个站点从发送帧开始,到之后的一小段时间内,都有可能遭遇碰撞,而这一小段时间的长短是不确定的,它取决于另一个发送帧的站点与本站点的距离,但不会超过总线的端到端往返传播时延,即一个争用期 \(2\tau\)

  • 很显然,总线的长度越长(单程端到端传播时延越大),网络中站点数量越多,发生碰撞的概率就越大。
  • 因此,共享以太网的总线长度不能太长,接入的站点数量也不能太多。

𝟏𝟎𝑴𝒃/𝒔共享总线以太网(传统以太网)规定:争用期 \(2\tau\) 的值为𝟓𝟏𝟐比特的发送时间,即𝟓𝟏.𝟐 \(\mu s\)

争用期 \(2\tau = 51.2 \mu s\) 对应的单程端到端传播时延为 \(\tau = 25.6 \mu s\)

假设信号的传播速度为 \(\nu = 2 \times 10^8 m/s\) ,则共享总线以太网的最大总线长度为:

\[L = \nu \times \tau = 2 \times 10^8 m/s \times 25.6 \mu s = 5120 m = 5.12 km\]
PPT 例题

img


共享式以太网的最小帧长和最大帧长

由于可能存在因为发送的帧过短而无法在发送完该帧之前检测出碰撞的情况,因此共享总线以太网规定了最小帧长

为了确保共享总线以太网上的每一个站点在发送完一个完整的帧之前,能够检测出是否产生了碰撞,帧的发送时延就不能少于共享总线以太网端到端的往返时间,即一个争用期 \(2\tau\)

对于𝟏𝟎𝑴𝒃/𝒔的共享总线以太网,其争用期 \(2\tau\) 的值规定为𝟓𝟏.𝟐 \(\mu s\),因此其最小帧长为𝟓𝟏𝟐𝒃,即𝟔𝟒𝑩。

  • 当某个站点在发送帧时,如果帧的前𝟔𝟒𝑩没有遭遇碰撞,那么帧的后续部分也就不会遭遇碰撞。也就是说,如果遭遇碰撞,就一定是在帧的前𝟔𝟒𝑩之内。
  • 由于发送帧的站点边发送帧边检测碰撞,一旦检测到碰撞就立即中止帧的发送,此时已发送的数据量一定小于𝟔𝟒𝑩。因此,接收站点收到长度小于𝟔𝟒𝑩的帧,就可判定这是一个遭遇了碰撞而异常中止的无效帧,将其丢弃即可。

一般来说,帧的数据载荷的长度应远大于帧首部和尾部的总长度,这样可以提高帧的传输效率。

img

然而,如果不限制数据载荷的长度上限,就可能使得帧的长度太长,这会带来一些问题。

img

img

这是满足最小帧长的要求的,因为 6 + 6 + 2 + 46 + 4 = 64 字节。

PPT 例题

img

question

以太网中,当数据传输率提高时,帧的发送时间会相应地缩短,这样可能会影响到冲突的检测。为了能有效地检测冲突,可以使用的解决方法有( )。

A. 减少传输介质的长度或减少最短帧长

B. 减少传输介质的长度或增加最短帧长

C. 增加传输介质的长度或减少最短帧长

D. 增加传输介质的长度或增加最短帧长

answer

B. 减少传输介质的长度或增加最短帧长

question

对于100Mb/s的以太网交换机,当输出端口无排队,以直通交换方式转发一个以太网帧(不包括前导码)时,引入的转发时延至少是()。

A.0 \(\mu\) s

B.0.48 \(\mu\) s

C.5.12 \(\mu\) s

D.121.44 \(\mu\) s

answer

B

直通交换方式的输入接口接收到一个帧时,只检查帧的目的 MAC 地址决定输出接口,引入的转发时延至少为读取目的 MAC 地址所需的时间。目的MAC地址共6B,引入的转发时延至少为 6x8bit \(\div\) 100Mb/s=0.48 \(\mu\) s。存储转发方式引入的转发时延则至少为读取整个帧的时间。


共享式以太网的退避算法

在使用CSMA/CD协议的共享总线以太网中,正在发送帧的站点一边发送帧一边检测碰撞,当检测到碰撞时就立即停止发送,退避一段随机时间后再重新发送。

共享总线以太网中的各站点采用截断二进制指数退避(Truncated Binary Exponential Backoff)算法来选择退避的随机时间。

\[\text{退避时间 } = \text{ 基本退避时间 } \times \text{ 随机数 } r\]
  • 基本退避时间:\(2 \tau\) ,即一个争用期的时长。
  • 随机数 \(r\) :r 从离散整数集合 \(\{0,1,2, \ldots , 2^k -1\}\)随机选出一个数,\(k = \min (\text{重传次数},10)\) 。这是该算法名称中“截断二进制指数”这种称谓的由来。

如果连续多次发送碰撞,就表明可能有较多的站点参与竞争信道。但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(即动态退避),因而减小产生碰撞的概率。

重传达16次仍不能成功时,就表明同时打算发送帧的站点太多,以至于连续产生碰撞,此时应放弃重传并向高层报告。

img

Note

重传次数就是发生碰撞的次数。


共享式以太网的信道利用率

img

考虑以下这种理想情况:

  • 总线一旦空闲就有某个站点立即发送帧
  • 各站点发送帧都不会产生碰撞
  • 发送一帧占用总线的时间为 \(T_0 + \tau\) ,而帧本身的发送时间是 \(T_0\)
\[\text{极限信道利用率 } S_{max} = \frac{T_{0}}{T_{0} + \tau} = \frac{1}{1 + \frac{\tau}{T_{0}}} = \frac{1}{1 + \alpha}\]
  • 参数 \(\alpha\) 的值应尽量小,以提高信道利用率。
  • 共享总线以太网端到端的距离不应太长
  • 帧的长度应尽量大
PPT 例题

img

  • 信号传播延迟也就是 \(\tau\) , \(\tau\) 越小,信道利用率越高。
  • CSMA/CD (Carrier Sense Multiple Access / Collision Detection) :用在有线以太网。边发边听。在无线环境中无法工作。
  • CSMA/CA (Carrier Sense Multiple Access / Collision Avoidance) :用在无线以太网。因为无线信道的特殊性,无法边发边听,所以采用避免碰撞的方法。发送前,先听信道是否空闲。如果信道空闲,不能马上发。必须先等待一个固定的帧间间隔 (DIFS)。等完 DIFS 后,再等待一个随机退避时间(在一个“竞争窗口”内随机选个数)。当随机计时器倒数到 0 时,发送数据。由于无法检测碰撞,发送方必须依赖接收方显式地回复一个 ACK (确认) 帧。

使用集线器的共享式以太网

早期的传统以太网是使用粗同轴电缆的共享总线以太网,后来发展到使用价格相对便宜的细同轴电缆

当初认为这种连接方法既简单又可靠,因为在那个时代普遍认为有源器件不可靠,而无源的电缆线才是最可靠的。

  • 然而,实践证明这种使用无源电缆线和大量机械接口的总线型以太网并不像人们想象的那么可靠

img

  • 若总线上的某个机械连接点接触不良或断开,则整个网络通信就不稳定或彻底断网。

在使用细同轴电缆的共享总线以太网之后,以太网发展出来了一种使用大规模集成电路来替代总线、并且可靠性非常高的设备,叫作集线器(Hub)。

站点连接到集线器的传输媒体也转而使用更便宜、更灵活的双绞线电缆

img

集线器的一些主要特点如下:

  1. 使用集线器的以太网虽然物理拓扑是星型的,但在逻辑上仍然是一个总线网。总线上的各站点共享总线资源,使用的还是CSMA/CD协议
  2. 集线器只工作在物理层,它的每个接口仅简单地转发比特,并不进行碰撞检测。碰撞检测的任务由各站点中的网卡负责。
  3. 集线器一般都有少量的容错能力和网络管理功能。例如,若网络中某个站点的网卡出现了故障而不停地发送帧,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网能正常工作。

IEEE于1990年制定了10BASE-T星型以太网的标准802.3i,这种以太网是局域网发展史上的一座非常重要的里程碑,它为以太网在局域网中的统治地位奠定了牢固的基础。

  • 10BASE-T以太网的通信距离较短,每个站点到集线器的距离不能超过100m
  • IEEE 802.3以太网还可使用光纤作为传输媒体,相应的标准为10BASE-F,“F”表示光纤。光纤主要用作集线器之间的远程连接。

img

PPT 例题

img

question

在某CSMA/CD局域网中,使用一个Hub连接所有站点,且限定站点到Hub的最长距离为100m,信号的传播速率为200000km/s,则站点的最长冲突检测时间是()。

A.2μs

B.2ms

C.1μs

D.1ms

answer

答案:A

限定站点到集线器(Hub)的最长距离为 100m,则两个站点之间的最长距离为200m,最长冲突检测时间等于信号在两个最远站点之间的往返传输时间,即 2x200m/200000km/s=2us。

question

如下图所示,在Hub再生比特流的过程中会产生1.535μs的时延(Switch和Hub均为100Base-T设备),信号传播速率为200m/μs,不考虑以太网帧的前导码,则H3和H4之间理论上可以相距的最远距离是()。

img

A.200m

B.205m

C.359m

D.512m

answer

B

有关最短帧长的题要抓住两个公式来分析:

  1. 发送帧的时间>争用期的时间;

  2. 最短帧长数据传输速率x争用期时间。要使公式1恒成立,就要考虑在最短帧长的情况下公式1仍成立。

对于本题,发送最短帧的时间为 64B \(\div\) 100Mb=5.12 \(\mu\) s,根据公式 1 可知,该时间即为争用期时间(往返时延)的最大值。

本题的特点在于往返时延由两部分组成,即传播时延和 Hub,产生的转发时延单程总时延为 2.56 \(\mu\) s,Hub 产生的转发时延为 1.535 \(\mu\) s,所以传播时延为 2.56-1.535 = 1.025 \(\mu\) s,从而 H3 与 H4 之间理论上可以相距的最大距离为 200m/\(\mu\)s x 1.025 \(\mu\) s=205m。

question

有一个长度为 56 字节的 IP 数据报需要通过 DIX v2 以太网进行传输,则以太网帧的数据载荷部分需要填充的字节数量是( )。

A. 0

B. 4

C. 8

D. 12

answer

A. 0

img


在物理层扩展以太网

扩展站点与集线器之间的距离(转发器太古早了不需要记忆)

共享总线以太网中两站点之间的距离不能太远,否则它们之间所传输的信号就会衰减到使CSMA/CD协议无法正常工作

在早期广泛使用粗同轴电缆或细同轴电缆共享总线以太网时,为了提高网络的地理覆盖范围,常用的是工作在物理层的转发器

IEEE 802.3标准规定,两个网段可用一个转发器连接起来,任意两个站点之间最多可以经过三个网段。

img

随着使用双绞线和集线器的10BASE-T星型以太网成为以太网的主流类型,扩展网络覆盖范围就很少使用转发器了。

10BASE-T星型以太网中每个站点到集线器的距离不能超过100m,因此两站点间的通信距离最大不能超过200m。

在10BASE-T星型以太网中,可使用光纤和一对光纤调制解调器来扩展站点与集线器之间的距离。

  • 这种扩展方法比较简单,所需付出的代价是:为站点和集线器各增加一个用于电信号和光信号转换的光纤调制解调器,以及它们之间的一对通信光纤。

信号在光纤中的衰减和失真很小,因此使用这种方法可以很简单地将站点与集线器之间的距离扩展到1000以上。

img


扩展共享式以太网的覆盖范围和站点数量

以太网集线器一般具有8~32个接口,如果要连接的站点数量超过了单个集线器能够提供的接口数量,就需要使用多个集线器,这样就可以连接成覆盖更大范围、连接更多站点的多级星型以太网。

采用多个集线器连接而成的多级星型以太网,在扩展了网络覆盖范围和站点数量的同时,也带来了一些负面因素。

img

  • 本来是部门A一个碰撞域,部门B一个碰撞域,现在变成了一个大的碰撞域,碰撞概率增大,信道利用率降低。
  • 在物理层扩展的共享式以太网仍然是一个碰撞域,不能连接太多的站点,否则可能会出现大量的碰撞,导致平均吞吐量太低。

在数据链路层扩展以太网

使用网桥在数据链路层扩展以太网

网桥(bridge)工作在数据链路层(包含其下的物理层),因此网桥具备属于数据链路层范畴的相关能力

  • 网桥可以识别帧的结构。
  • 网桥可以根据帧首部中的目的MAC地址和网桥自身的帧转发表来转发或丢弃所收到的帧。

网桥会把连接的每个网段作为独立的碰撞域,只有需要跨网段通信时才转发帧。所以,使用网桥可以减少碰撞域的大小,从而降低碰撞概率,提高信道利用率


网桥的主要结构和基本工作原理

img

img

  • 网桥的接口在向其连接的网段转发帧时,会执行相应的媒体接入控制协议,对于共享式以太网就是CSMA/CD协议。

工作原理:

  1. 网桥收到一个帧后,检查帧的目的MAC地址。
  2. 查找转发表,判断该地址属于哪个接口(哪个网段)。
  • 如果目的地址在本地网段(如A发给B),网桥不转发,直接丢弃,减少不必要的流量。
  • 如果目的地址在另一个网段(如A发给E),网桥转发该帧到对应接口,实现跨网段通信。
  1. 网桥会自动学习:每收到一个帧,就把源MAC地址和收到的接口记入转发表,实现自适应。

透明网桥的自学习和转发帧的流程

透明网桥(Transparent Bridge)通过自学习算法建立转发表。

透明网桥中的“透明”,是指以太网中的各站点并不知道自己所发送的帧将会经过哪些网桥的转发,最终到达目的站点。也就是说,以太网中的各网桥对于各站点而言是看不见的

透明网桥的标准是IEEE 802.1D,它通过一种自学习算法基于以太网中各站点间的相互通信逐步建立起自己的转发表。

流程:

  1. 网桥收到帧后进行登记(即自学习),登记的内容为帧的源MAC地址和进入网桥的接口号。
  2. 网桥根据帧的目的MAC地址和网桥的转发表对帧进行转发,包含以下三种情况:
  • 明确转发:网桥知道应当从哪个接口转发帧。
  • 盲目转发:网桥不知道应当从哪个接口转发帧,只能将其通过除进入网桥的接口外的其他所有接口转发。
  • 丢弃:网桥知道不应该转发该帧,将其丢弃。

attention

  1. 如果网桥收到有误码的帧则直接丢弃。

  2. 如果网桥收到一个无误码的广播帧,则不用进行查表,而是直接从除接收该广播帧的接口的其他接口转发该广播帧。

  3. 转发表中的每条记录都有其有效时间,到期自动删除!这是因为各站点的MAC地址与网桥接口的对应关系并不是永久性的,例如某个站点更换了网卡,其MAC地址就会改变。

question

以太网交换机的自学习是指( )。

A. 记录帧的源 MAC 地址与该帧进入交换机的端口号

B. 记录帧的目的 MAC 地址与该帧进入交换机的端口号

C. 记录数据包的源 IP 地址与该数据包进入交换机的端口号

D. 记录数据包的目的 IP 地址与该数据包进入交换机的端口号

answer

A. 记录帧的源 MAC 地址与该帧进入交换机的端口号

question

某以太网如下图所示,假设交换机1和交换机2的交换表初始为空,各主机之间依次进行以下通信:A→B、H→A、E→X、X→E,则关于上述通信过程叙述错误的是()。

img

A.当A→B时,除A外的全部主机都能收到A发送的帧

B.当H→A时,仅A能收到H发送的帧

C.当E→X时,仅X能收到E发送的帧

D.当X→E时,交换机2收不到X发送的帧

answer

C

当 A→B 时,交换表都为空,交换机1和交换机2都进行洪泛发送,因此除 A 外的全部主机都能收到 A 发送的帧。当 H→A 时,因为交换机2 已登记 A 所在的接口为 3,所以只向接口3转发,交换机1收到帧后,因为交换机1已登记A所在的接口为1,所以只向接口1转发,因此仅A 能收到 H 发送的帧。当 E→X时,集线器向除输入接口外的所有接口转发该帧,交换机1和交换机2也进行洪泛发送,因此除E外的全部主机都能收到A发送的帧。当X→E时,因为交换机1 已登记E所在的接口为2,所以仅登记又所在的接口,并丢弃该帧。


透明网桥的生成树协议STP

为了提高以太网的可靠性,有时需要在两个以太网之间使用多个透明网桥来提供冗余链路。在增加冗余链路提高以太网可靠性的同时,却给网络引入了环路

img

  • 若网桥B1和B2的转发表中都没有待转发单播帧目的MAC地址的相关记录,则该单播帧也会引起类似的情况。
  • 为了简单起见,未考虑信号在总线上碰撞的情况。

网络中的广播帧将在环路中永久兜圈,造成广播帧充斥整个网络,网络资源被白白浪费,而网络中的主机之间无法正常通信!

为了避免广播帧在环路中永久兜圈,透明网桥使用生成树协议(Spanning Tree Protocol,STP),可以在增加冗余链路提高网络可靠性的同时,又避免环路带来的问题。

  • 不管网桥之间连接成了怎样复杂的带环拓扑,网桥之间通过交互网桥协议单元(Bridge Protocol Data Unit,BPDU),找出原网络拓扑的一个连通子集(即生成树),在这个子集里整个连通的网络中不存在环路
  • 当首次连接网桥或网络拓扑发生变化时(人为改变或出现故障),网桥都会重新构造生成树,以确保网络的连通。

交换式以太网

网桥的接口数量很少,通常只有2~4个,一般只用来连接不同的网段

1990年面世的交换式集线器(Switching Hub),实质上是具有多个接口的网桥,常称为以太网交换机(Switch)或二层交换机。

  • “二层”是指以太网交换机工作在数据链路层(包括物理层)。
  • 与网桥相同,交换机内部的转发表也是通过自学习算法,基于网络中各主机间的通信,自动地逐步建立起来的。
  • 另外,交换机也使用生成树协议STP,来产生能够连通全网但不产生环路的通信路径。

仅使用交换机(而不使用集线器)的以太网就是交换式以太网。

img

img


以太网交换机

以太网交换机(以下简称交换机)本质上就是一个多接口的网桥

  • 交换机自学习和转发帧的流程与网桥是相同的。
  • 另外,交换机也使用生成树协议STP,来产生能够连通全网但不产生环路的通信路径。

交换机的每个接口可以连接计算机,也可以连接集线器或另一个交换机

  • 当交换机的接口与计算机或交换机连接时,可以工作在全双工方式,并能在自身内部同时连通多对接口,使每一对相互通信的计算机都能像独占传输媒体那样,无碰撞地传输数据,这样就不需要使用CSMA/CD协议了。
  • 当交换机的接口连接的是集线器时,该接口就只能使用CSMA/CD协议并只能工作在半双工方式
  • 现在的交换机和计算机中的网卡都能自动识别上述两种情况,并自动切换到相应的工作方式。

img

交换机一般都具有多种速率的接口,例如10Mb/s、100Mb/s、1Gb/s甚至10Gb/s的接口,大部分接口支持多速率自适应。

PPT 例题

img

img

一般的交换机都采用“存储转发”方式,为了减小交换机的转发时延,某些交换机采用了直通(Cut-Through)交换方式。

采用直通交换方式的交换机,在接收帧的同时就立即按帧的目的MAC地址决定该帧的转发接口,然后通过其内部基于硬件的交叉矩阵进行转发,而不必把整个帧先缓存后再进行处理。

  • 直通交换的时延非常小
  • 直通交换不检查差错就直接将帧转发出去,有可能会将一些无效帧转发给其他主机。
PPT 例题

img

question

假设以太网A中80%的通信量在本局域网内进行,其余20%在本局域网与因特网之间进行,而以太网B正好相反。在这两个局域网中,一个使用集线器,另一个使用交换机,则交换机应放置的局域网是()。

A.以太网A

B.以太网B

C.任意以太网

D.都不合适

answer

A

交换机能将网络分成较小的冲突域,而集线器连接的设备属于同一个冲突域。当一个局域网中 80%的通信量在本局域网内进行时,若使用集线器,则会增加冲突和延迟,降低整个网络的效率,而若使用交换机将不同网段的通信隔开,则可以提高网络性能。


共享式以太网与交换式以太网的对比(集线器与交换机的对比)

img

img

img

img

img

集线器(Hub)——共享式以太网

  • 碰撞域:所有连接在同一个集线器上的主机属于同一个碰撞域。多个集线器级联后,碰撞域会变得更大,所有主机争用同一带宽,容易发生冲突。
  • 广播域:集线器不隔离广播域,所有主机都能收到广播帧。

交换机(Switch)——交换式以太网

  • 碰撞域:每个端口是一个独立的碰撞域。即使多个主机通过交换机互联,每对通信主机之间互不干扰,大大减少了碰撞。
  • 广播域:默认情况下,交换机不隔离广播域,所有端口收到广播帧都会转发(除非划分VLAN)。

交换式以太网的网络性能远高于共享式以太网,集线器早已被交换机取代。

PPT 例题

img

  • 以太网交换机工作在数据链路层(包含其下的物理层),因此以太网交换机具备属于数据链路层范畴的相关能力。但不同网络层协议的网络互联属于网络层范畴,以太网交换机无法处理。

img

img

question

交换机比集线器提供更好的网络性能的原因是( )。

A. 交换机支持多对用户同时通信

B. 交换机使用差错控制减少出错率

C. 交换机使网络的覆盖范围更大

D. 交换机无须设置,使用更方便

answer

A. 交换机支持多对用户同时通信

  • 集线器 (Hub):工作在物理层 (L1),它像一个“大喇叭”。当它收到数据时,它会广播给所有连接到它的端口。这意味着在同一时间内,整个网络中只有一对设备可以通信。如果两对设备同时尝试发送数据,就会发生“冲突”(Collision),导致数据损坏,所有设备都必须等待重发。这就是为什么集线器连接的所有设备共享同一个“冲突域”和总带宽。
  • 交换机 (Switch):工作在数据链路层 (L2),它要智能得多。它内部有一张 MAC 地址表,能记住哪个设备连接在哪个端口。当它收到数据时,它会查看目标 MAC 地址,并只将数据转发到目标所在的那个端口

关键优势: 这意味着,端口1上的电脑A可以和端口2上的电脑B通信,与此同时,端口3上的电脑C可以和端口4上的电脑D通信。这两对通信互不干扰。这就像从“大喇叭”升级到了“电话交换系统”,可以同时建立多条私密通话线路。

B. 交换机使用差错控制减少出错率:差错控制(如CRC校验)是在数据链路层进行的,虽然交换机(作为L2设备)会执行这个操作并丢弃错误的数据帧,但这并不是它相比集线器(L1设备)的主要性能优势。性能的巨大提升来自于“减少冲突”和“并发通信”,而不是简单地丢弃错误数据。

C. 交换机使网络的覆盖范围更大:从物理层(L1)的角度看,交换机和集线器都具有信号再生的功能,都可以将网线100米的限制“重置”,从而扩展网络的物理范围。在这一点上,两者没有本质区别,所以这不是交换机性能更好的原因。

D. 交换机无须设置,使用更方便:这个说法是反的。集线器才是最简单、完全无需设置的设备。非网管型交换机(Unmanaged Switch)也无需设置,但网管型交换机(Managed Switch)的设置非常复杂。因此,“使用更方便”绝不是它的优势理由,尤其是和集线器相比。


以太网的MAC帧格式

img

  • 目的地址:6字节,表示接收该帧的设备的MAC地址。如果是广播帧,则该字段为FF-FF-FF-FF-FF-FF。
  • 源地址:6字节,表示发送该帧的设备的MAC地址。
  • 类型:2字节,其值用来指明数据载荷中的内容是由上一层的哪个协议封装的,以便将收到的MAC帧的数据载荷上交给上一层的这个协议。例如 0x0800 表示数据载荷中封装的是TCP/IP网际层IP协议封装的PDU,0x8137 表示数据载荷中封装的是由Novell网络层IPX协议封装的PDU。
  • FCS:4字节,帧校验序列,用于差错检测。使用CRC生成的帧检验序列FCS,接收方的网卡通过FCS的内容就可检测出帧在传输过程中是否产生了误码。(CRC的检测范围是从目的MAC地址开始,到数据载荷的最后一个字节为止的所有字节)。
  • 数据载荷的最小长度为46字节,最大长度为1500字节。如果数据载荷不足46字节,则发送方必须在数据载荷的后面填充一些无意义的字节,使数据载荷的长度达到46字节。以太网 v2 的 MAC 帧的最大长度为 1518 字节(6 + 6 + 2 + 1500 + 4 = 1518 字节)。

img

在帧前面插入的8字节前导码分为两个字段:

  • 第一个字段是7字节的前同步码,用来实现MAC帧的比特同步;
  • 第二个字段是1字节的帧开始定界符,表示后面的信息就是MAC帧。

Info

以太网帧不需要帧结束定界符,因为当以太网传送帧时,各帧之间必须有一定的间隙。因此,接收方只要找到帧开始定界符,其后面连续到达的比特流就都属于同一帧。实际上,以太网采用了违规编码法的思想,因为以太网使用曼彻斯特编码,所以每个码元中间都有一次电压的跳变。发送方发完一帧后,发送方网络接口上的电压不再变化,这样接收方就能很容易地找到帧的结束位置,这个位置往前数4字节就是FCS字段,于是就能确定数据字段的结束位置。

接收方可能收到的无效MAC帧包括以下几种:

  1. MAC帧的长度不是整数个字节
  2. 通过MAC帧的FCS字段的值检测出帧有误码
  3. MAC帧的长度不在64~1518字节之间

接收方收到无效的MAC帧时,就简单将其丢弃,以太网的数据链路层没有重传机制。


虚拟局域网

虚拟局域网VLAN的诞生背景

将多个站点通过一个或多个以太网交换机连接起来就构建出了交换式以太网

交换式以太网中的所有站点都属于同一个广播域

随着交换式以太网规模的扩大,广播域也相应扩大。

巨大的广播域会带来一系列问题

例如广播风暴(Broadcast Storm)

  • 广播风暴会浪费网络资源和各主机的CPU资源
  • 难以管理和维护,带来潜在的安全问题。

img

Note

如果网络中只是偶尔出现广播,那还是可以接受的!然而,网络中会频繁出现广播信息。

TCP/IP协议栈中的很多协议都会使用广播:

  • 地址解析协议ARP

  • 路由信息协议RIPv1

  • 动态主机配置协议DHCP

NetBEUI:Windows下使用的广播型协议

IPX/SPX:Novell网络的协议栈

Apple Talk:Apple公司的网络协议栈

分割广播域的方法:

  • 使用路由器可以隔离广播域(成本较高)

img

  • 虚拟局域网技术应运而生

虚拟局域网VLAN概述

虚拟局域网(Virtual Local Area Network,VLAN)是一种将局域网内的站点划分成与物理位置无关的逻辑组的技术,一个逻辑组就是一个VLAN,VLAN中的各站点具有某些共同的应用需求。

img

img

属于同一VLAN的站点之间可以直接进行通信,而不同VLAN中的站点之间不能直接通信。

网络管理员可对局域网中的各交换机进行配置来建立多个逻辑上独立的VLAN。

  • 连接在同一交换机上的多个站点可以属于不同的VLAN,而属于同一VLAN的多个站点可以连接在不同的交换机上。

Info

虚拟局域网VLAN并不是一种新型网络,它只是局域网能够提供给用户的一种服务。


虚拟局域网VLAN的实现机制

虚拟局域网VLAN有多种实现技术,最常见的就是基于以太网交换机的接口来实现VLAN。这就需要以太网交换机能够实现以下两个功能:

  • 能够处理带有VLAN标记的帧,也就是IEEE 802.1Q帧
  • 交换机的各接口可以支持不同的接口类型,不同接口类型的接口对帧的处理方式有所不同。

IEEE 802.1Q帧

IEEE 802.1Q帧也称为Dot One Q帧,它对以太网V2的MAC帧格式进行了扩展:在源地址字段和类型字段之间插入了4字节的VLAN标签(tag)字段。

img

img

  • 标签协议标识符TPID:长度为16比特,其值固定为0x8100,表示该帧是IEEE 802.1Q帧。
  • 优先级PRI:长度为3比特,取值范围是0~7,值越大优先级越高。当网络阻塞时,设备优先发送优先级高的 802.1Q帧。
  • 规范格式指示符CFI:长度为1比特,取值为0表示MAC地址以规范格式封装,取值为1表示MAC地址以非规范格式封装。对于以太网,CFI的取值为0。
  • 虚拟局域网标识符VID:长度为12比特,取值范围是0~4095,其中0和4095保留不使用。VID是802.1Q帧所属VLAN的编号,设备利用VID来识别帧所属的VLAN。广播帧只在同一VLAN内转发,这样就将广播域限制在了一个VLAN内

802.1Q帧一般不由用户主机处理,而是由以太网交换机来处理:

  • 当交换机收到普通的以太网MAC帧时,会给其插入4字节的VLAN标签使之成为802.1Q帧,该处理简称为“打标签”。
  • 当交换机转发802.1Q帧时,可能会删除其4字节的VLAN标签使之成为普通的以太网MAC帧,该处理简称为“去标签”。交换机转发802.1Q帧时也有可能不进行“去标签”处理,是否进行“去标签”处理取决于交换机的接口类型。

以太网交换机的接口类型

根据接口在接收帧和发送帧时对帧的处理方式的不同,以及接口连接对象的不同,以太网交换机的接口类型一般分为 AccessTrunk 两种。

当以太网交换机上电启动后,若之前未对其各接口进行过VLAN的相关设置,则各接口的接口类型默认为Access,并且各接口的缺省VLAN ID为1,即各接口默认属于VLAN1

  • 对于思科交换机,接口的缺省VLAN ID称为本征VLAN(Native VLAN)。
  • 对于华为交换机,接口的缺省VLAN ID称为端口VLAN ID(Port VLAN ID),简记为PVID。

交换机的每个接口有且仅有一个PVID

  1. 在一个交换机上不进行人为的VLAN划分,交换机各接口默认属于VLAN1且类型为Access的情况。

img

  1. 在一个交换机上划分两个不同VLAN的情况。

对交换机进行配置(通过界面或配置命令)

  • 创建VLAN2和VLAN3
  • 将接口1和2划归到VLAN2,接口3和4划归到VLAN3

img

img

  1. 两个交换机通过Trunk类型的接口互连,Trunk接口将802.1Q帧“去标签”后进行转发的情况。

img

  1. 两个交换机通过Trunk类型的接口互连,Trunk接口将802.1Q帧直接转发的情况。

img

Access接口与Trunk接口的区别总结以及介绍Hybrid接口

Access接口: Access接口一般用于连接用户计算机,由于其只能属于一个VLAN,因此Access接口的PVID值与其所属VLAN的ID相同,其默认值为1。

  • 接收处理: 一般只接受“未打标签”的普通以太网MAC帧,根据接收帧的接口的PVID给帧“打标签”,即插入4字节的VLAN标签字段,VLAN标签字段中的VID取值就是接口的PVID值。

  • 转发处理: 若帧中的VID值与接口的PVID值相等,则给帧“去标签”后再进行转发,否则不转发帧。因此,从Access接口转发出的帧,是不带VLAN标签的普通以太网MAC帧。

Trunk接口: Trunk接口一般用于交换机之间的互连。Trunk接口可以属于多个VLAN,即Trunk接口可以通过属于不同VLAN的帧。Trunk接口的默认PVID值为1,一般不建议用户修改,若互连的Trunk接口的PVID值不相等,则可能出现转发错误。(交换机 A (PVID=1) 要发送一个 VLAN 1 的帧。根据规则,它会撕掉标签(去标签)再发出去。交换机 B (假设 PVID=99) 收到了这个未打标签的帧。交换机 B 根据它的接收规则,会给这个未打标签的帧打上它自己的 PVID,也就是 VLAN 99 的标签!结果在交换机 A 看来是 VLAN 1 的数据,到了交换机 B 这里,被错误地划分到了 VLAN 99。这就是转发错误,两个VLAN的数据“串了”。)

  • 接收处理: 既可以接收“未打标签”的普通以太网MAC帧,也可以接收“已打标签”的802.1Q帧。若接收到普通以太网MAC帧时,根据接收帧的接口的PVID给帧“打标签”,这与Access接口的处理相同。(交换机会强制给这个未打标签的帧打上 PVID 对应的 VLAN 标签(比如 PVID=1,就打上 VLAN 1 的标签)。)若接收到802.1Q帧时,交换机查看这个 Trunk 接口的“允许列表”,如果 VLAN 10 被允许通过,就直接接收这个帧,标签保持不变。如果不在允许列表中,交换机会立即丢弃 (Drop) 这个帧。这个帧不会被接收,更不会被转发到任何其他端口。

  • 转发处理: 对于帧的VID值等于接口的PVID值的802.1Q帧,将其“去标签”转发(这是 Native VLAN (本地VLAN) 的特性。交换机双方约定好了:如果我们PVID都是1,那么VLAN 1的数据我们就不贴标签了,裸奔着发,对方收到裸奔的帧,也知道那是VLAN 1的。);对于帧的VID值不等于接口的PVID值802.1Q帧,将其直接转发(比如,一个 VLAN 10 的帧要出去,而 PVID 是 1,此时就带着 VLAN 10 的标签直接转发)。因此,从Trunk接口转发出的帧,可能是普通以太网MAC帧,也可能是802.1Q帧。

Hybrid接口: Hybrid接口是华为交换机私有的接口类型。Hybrid接口既可以用于交换机之间的互连(与Trunk接口相同),也可用于交换机与用户计算机之间的互连(与Access接口相同)。

除此之外,Hybrid接口的绝大部分功能与Trunk接口相同。不同点在于Hybrid接口的转发处理:Hybrid接口会查看帧的VID值是否在接口的“去标签”列表中,若存在则“去标签”后转发,若不存在则直接转发。

关于 Trunk 接口的允许列表

很多交换机在你刚刚把一个接口配置为 Trunk 模式时,它的默认“允许列表”是允许所有 VLAN(比如 VLAN 1 到 4094)。

实际的生产环境中,这被认为是一种不安全的配置。专业的网络管理员会立即手动修改这个列表,只精确地允许业务所需要的 VLAN,这个操作也常被称为 “VLAN 剪枝” (VLAN Pruning)。

PPT 例题

img


以太网的发展

以太网的发展

img

img

Info

在上述标准中,10指标准的速率为10Mb/s;Base指基带以太网;早期标准Base之后的5或2指单段最大传输距离不超过500m或185m,Base之后的T指双绞线,F指光纤。

img

王道的总结

(1)100BASE-T以太网

100BASE-T是在双绞线上传送100Mb/s基带信号的星形拓扑以太网,它仍然使用CSMA/CD协议,也称快速以太网。100BASE-T既支持全双工方式,又支持半双工方式,可在全双工方式下工作而无冲突发生,因此在全双工方式下不使用CSMA/CD协议。

100BASE-T的MAC帧格式仍然是802.3标准规定的帧格式。保持最短帧长不变,但将一个网段的最大长度减小到100m。帧间最小间隔从原来的9.6μs改为0.96μs。

(2)吉比特以太网

吉比特以太网也称千兆以太网,允许在1Gb/s速率下以全双工和半双工两种方式工作。使用802.3协议规定的帧格式。使用双绞线或光纤作为传输介质。在半双工方式下使用CSMA/CD协议,而在全双工方式不使用CSMA/CD协议。与10BASE-T和100BASE-T技术向后兼容。

(3)10吉比特以太网

10吉比特以太网的帧格式与10Mb7s、100Mb/s和IGb/s以太网的帧格式完全相同,还保留了802.3标准规定的以太网最小帧长和最大帧长,以便升级和向后兼容。10吉比特以太网只工作在全双工方式,不存在争用问题,当然也不使用CSMA/CD协议。

以太网从10Mb/s到10Gb/s的演进证明了以太网是可扩展的(从10Mb/s到10Gb/s)、灵活的(多种传输介质、全/半双工、共享/交换),且易于安装,稳健性好。


100BASE-T以太网

100BASE-T以太网是指在双绞线上传输基带信号的速率为100Mb/s的以太网,也称为快速以太网(Fast Ethernet)。

img

100BASE-T以太网与10Mb/s标准以太网(传统以太网)一样,仍然使用IEEE 802.3的帧格式和CSMA/CD协议

100BASE-T以太网为了与10Mb/s标准以太网保持兼容,需要以太网最小帧长保持不变,即仍为64字节

  • 网段的最大电缆长度从1000m减小到100m
  • 争用期缩短为5.12 \(\mu\) s
  • 帧间最小间隔缩短为0.96 \(\mu\) s

100BASE-T以太网还可以使用以太网交换机来提供比集线器更好的服务质量,即在全双工方式下无碰撞工作。因此,使用交换机的100BASE-T以太网,工作在全双工方式下,并不使用CSMA/CD协议。

1995年,IEEE的802委员会正式批准100BASE-T以太网的标准为802.3u。实际上,IEEE 802.3u只是对原有IEEE 802.3标准的补充。

除100BASE-T以太网外,百兆以太网有多种不同的物理层标准:

img


吉比特以太网

吉比特以太网也称为千兆以太网(Gigabit Ethernet)。1998年,千兆以太网的标准802.3z成为正式标准。

近几年来,千兆以太网已迅速占领市场,成为了以太网的主流产品。

IEEE 802.3z千兆以太网的主要特点有:

  • 速率为1000Mb/s(1Gb/s)
  • 使用IEEE 802.3的帧格式(与10Mb/s和100Mb/s以太网相同)
  • 支持半双工方式(使用CSMA/CD协议)和全双工方式(不使用CSMA/CD协议)
  • 兼容10BASE-T和100BASE-T技术

当千兆以太网工作在半双工方式时,需要使用CSMA/CD协议。由于速率已经提高到了1000Mb/s,因此只有减小网段最大长度或增大最小帧长,才能使以太网的参数a(\(\frac{\tau}{T_0}\))保持为较小的数值。

  • 若将网段最大长度减小到10m,则网络基本失去了应用价值。
  • 若将最小帧长增大到640字节,则当上层交付的待封装的协议数据单元PDU很短时,开销就会太大。

千兆以太网的网段最大长度仍保持为100m,最小帧长仍保持为64字节(与10BASE-T和100BASE-T兼容)。

这就需要使用载波延伸(Carrier Extension)的办法,将争用期增大为512字节的发送时间而保持最小帧长仍为64字节

  • 只要发送的MAC帧的长度不足512字节时,就在MAC帧尾部填充一些特殊字符,使MAC帧的长度增大到512字节。

img

在使用载波延伸的机制下,如果原本发送的是大量的64字节长的短帧,则每一个短帧都会被填充448字节的特殊字符,这样会造成很大的开销

因此,千兆以太网还使用了分组突发(Packet Bursting)功能。也就是当有很多短帧要连续发送时,只将第一个短帧用载波延伸的方法进行填充,而其后面的一系列短帧不用填充就可一个接一个地发送,它们之间只需空开必要的帧间最小间隔即可。

  • 这样就形成了一连串分组的突发,当累积发送1500字节或稍多一些为止。

Info

当千兆以太网工作在全双工方式时,不使用CSMA/CD协议,因为在全双工模式中,发送和接收使用不同的物理线路,碰撞根本不可能发生。所以也不会使用载波延伸和分组突发。

img

千兆以太网有多种不同的物理层标准:

img


10吉比特以太网

2002年6月,IEEE 802.3ae委员会通过10吉比特以太网(10GE)的正式标准,10GE也称为万兆以太网

万兆以太网并不是将千兆以太网的速率简单地提高了10倍。万兆以太网的目标是将以太网从局域网范围(校园网或企业网)扩展到城域网与广域网,成为城域网和广域网的主干网的主流技术之一。

IEEE 802.3ae万兆以太网的主要特点有:

  • 速率为10Gb/s
  • 使用IEEE 802.3标准的帧格式(与10Mb/s、100Mb/s和1Gb/s以太网相同)
  • 保留IEEE 802.3标准对以太网最小帧长和最大帧长的规定。这是为了用户升级以太网时,仍能和较低速率的以太网方便地通信。
  • 只工作在全双工方式而不存在争用媒体的问题,因此不需要使用CSMA/CD协议,这样传输距离就不再受碰撞检测的限制。
  • 增加了支持城域网和广域网的物理层标准

万兆以太网交换机常作为千兆以太网的汇聚层交换机,与千兆以太网交换机相连,还可以连接对传输速率要求极高的视频服务器、文件服务器等设备。

img

万兆以太网有多种不同的物理层标准:

img


40/100吉比特以太网

2010年,IEEE发布了40吉比特/100吉比特以太网(40GE/100GE)的IEEE 802.3ba标准,40GE/100GE也称为四万兆/十万兆以太网

为了使以太网能够更高效、更经济地满足局域网、城域网和广域网的不同应用需求,IEEE 802.3ba标准定义了两种速率类型:

  • 40Gb/s主要用于计算应用
  • 100Gb/s主要用于汇聚应用

IEEE 802.3ba标准只工作在全双工方式(不使用CSMA/CD协议),但仍使用IEEE 802.3标准的帧格式遵守最小帧长和最大帧长的规定

IEEE 802.3ba标准的两种速率各有4种不同的传输媒体:

img

question

下列关于用集线器连接的共享式以太网的说法中,正确的是()。

A.以太网的物理拓扑是总线形结构

B.以太网提供有确认的无连接服务

C.以太网参考模型一般只包括物理层和数据链路层

D.以太网不一定使用CSMA/CD协议

answer

C

用集线器连接的以太网逻辑上是总线形结构,物理上是星形结构,选项A错误。

以太网设计的原则是简化通信,因此采用的是无确认、无连接的服务,选项B错误。

以太网属于局域网的一种设计标准,只包括物理层和数据链路层,比如在物理层以太网规定采用曼彻斯特编码,在数据链路层规定采用 CSMA/CD 协议,选项C正确。

用集线器连接的以太网一定工作在半双工方式下因此一定要采用 CSMA/CD 协议,选项 D 错误。

question

下列关于广播式网络的说法中,错误的是()。

A.共享广播信道

B.不存在路由选择问题

C.可以不要网络层

D.不需要服务接入点

answer

D

广播式网络使用共享的广播信道进行通信,通常是局域网的一种通信方式(局域网工作在数据链路层),因此可以不需要网络层,也就不存在路由选择问题。但数据链路层使用物理层的服务必须通过服务接入点,数据链路层向高层提供服务也必须通过服务接入点。


802.11无线局域网

802.11无线局域网的组成

随着移动通信技术的发展,无线局域网(Wireless Local Area Network,WLAN)自20世纪80年代末以来逐步进入市场。

IEEE于1997年制定出了无线局域网的协议标准802.11,802.11无线局域网是目前应用最广泛的无线局域网之一,人们更多地将其简称为Wi-Fi(Wireless Fidelity,无线保真度)。

802.11无线局域网可分为以下两类:

  • 有固定基础设施的
  • 无固定基础设施的

固定基础设施是指预先建立的、能够覆盖一定地理范围的、多个固定的通信基站

802.11无线局域网使用最多的是它的固定基础设施的组网方式。


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

img

  • 本BSS内各站点之间的通信以及与本BSS外的站点之间的通信,都必须经过本BSS内的AP进行转发。
  • 网络管理员需要为AP分配一个最大32字节的服务集标识符(Service Set Identifier,SSID)和一个无线通信信道,SSID实际上就是使用该AP的802.11无线局域网的名字。
  • 基本服务区BSA的直径小于100m
  • 基本服务集可以是孤立的,也可通过AP连接到一个分配系统(Distribution System,DS),然后连接到另一个基本服务集,构成一个扩展的服务集(Extended Service Set,ESS)。分配系统的作用是使扩展的服务集对上层的表现就像一个基本服务集。ESS还可通过一种称为Portal(门户)的设备为无线用户提供到有线连接的以太网接入。门户的作用相当于网桥。在图3.26中,移动站A若要和另一个基本服务集中的移动站B通信,则必须经过两个接入点AP1和AP2,即A→AP1→AP2→B,注意AP1到AP2的通信是使用有线传输的。

img

802.11标准并没有定义实现漫游的具体方法,仅定义了以下一些基本服务。

  1. 关联(Association)服务

移动站与接入点AP建立关联的方法有以下两种:

  • 被动扫描

img

  • 主动扫描

img

  1. 重建关联(Reassociation)服务和分离(Dissociation)服务

如果一个移动站要把与某个接入点AP的关联转移到另一个AP,就可以使用重建关联服务;若要终止关联服务,就应使用分离服务。


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

自组织网络(ad hoc Network)

  • 转发站需要具备路由功能

img

自组织网络组网方便,不需要基站,并且具有非常好的生存性,这使得自组织网络在军用民用领域都有很好的应用前景。

802.11无线局域网的ad hoc模式允许网络中的各站点在其通信范围内直接通信,也就是支持站点间的单跳通信,而标准中并没有包括多跳路由功能。因此,802.11无线局域网的ad hoc模式应用较少。


802.11无线局域网的物理层

802.11无线局域网的物理层非常复杂,依据工作频段调制方式传输速率等,可将其分为多种物理层标准:

img

802.11无线网卡一般会被做成多模的,以便能适应多种不同的物理层标准,例如支持802.11b/g/n。

无线局域网最初还使用红外技术(infrared,IR)和跳频扩频(Frequency Hopping Spread Spectrum,FHSS)技术,但目前已经很少使用了。

最近几年,802.11无线局域网又有一些新的物理层标准陆续推出:

img


802.11无线局域网使用CSMA/CA协议的原因

对于802.11无线局域网,其使用无线信道传输数据,这与共享总线以太网使用有线传输介质不同。因此,802.11无线局域网不能简单照搬共享总线以太网使用的CSMA/CD协议。

802.11无线局域网采用了CSMA/CA的协议,也就是载波监听多址接入/碰撞避免(Carrier Sense Multiple Access/Collision Avoidance,CSMA/CA)。CSMA/CA协议仍然采用“先听后说”的方式来减少碰撞的发生,但是将“碰撞检测CD”改为了“碰撞避免CA”。

802.11无线局域网不采用“碰撞检测CD”的原因如下:

  1. 由于无线信道的传输环境复杂且信号强度的动态范围非常大,在802.11无线网卡上接收到的信号强度一般都远远小于发送信号的强度,信号强度甚至相差百万倍。因此,如果要在802.11无线网卡上实现碰撞检测对硬件的要求非常高
  2. 即使能够在硬件上实现碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站问题),还会出现无法检测到碰撞的情况,因此实现碰撞检测并没有意义。

无线局域网的隐蔽站问题(Hidden Station Problem)

img


CSMA/CA协议的基本工作原理

img

  • DCF 帧间间隔 DIFS 的长度为 128 \(\mu \ s\),在 DCF 方式中, DIFS 用来发送数据帧和管理帧。
  • DCF是分布式协调功能(Distributed Coordination Function,DCF)的英文缩写词。在DCF方式下,没有中心控制站点,每个站点使用 CSMA/CA 协议通过争用信道来获取发送权。DCF方式是802.11定义的默认方式(必须实现)。
  • 等待 DIFS 间隔是考虑到可能有其他的站有高优先级的帧要发送。
  • 帧首部中的“持续时间”字段的值指出了源站要占用信道的时间(包括目的站发回确认帧所需的时间)。
  • 当某个站检测到正在信道中传送的帧首部中的“持续时间”字段时,就调整自己的网络分配向量(Network Allocation Vector,NAV)。NAV指出了完成这次帧的传送且信道转入空闲状态所需的时间。
  • 短帧间间隔(Short Interframe Space,SIFS)的长度为28 \(\mu \ s\),它是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式(从发送确认帧到转换成接收下一个帧的模式)。使用SIFS的帧类型有ACK帧、CTS帧等。
  • 由于无线信道的误码率较高, CSMA/CA 协议还需要使用停止-等待的确认机制来实现可靠传输,这与使用CSMA/CD协议的共享式以太网不同。
  • 当某个站在发送帧时,很可能有多个站都在监听信道并等待发送帧,一旦信道空闲,这些站几乎同时发送帧而产生碰撞。
  • 为了避免上述情况,所有要发送帧的站检测到信道从忙转为空闲后,都要执行退避算法。这样不仅可以减少发生碰撞的概率,还可避免某个站长时间占用无线信道。

当某个站要发送数据帧时,仅在这种情况下才不使用退避算法:检测到信道空闲,并且该数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧。除此之外的以下情况,都必须使用退避算法:

  1. 在发送帧之前检测到信道处于忙态
  2. 在每一次重传一个帧时
  3. 在每一次成功发送帧后要连续发送下一个帧时

总结CSMA/CA协议的退避算法:

在执行退避算法时,站点为退避计时器设置一个随机的退避时间:

  • 当退避计时器的时间减小到零时,就开始发送数据;
  • 当退避计时器的时间还未减小到零时而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过帧间间隔DIFS后,继续启动退避计时器。

在进行第 \(i\) 次退避时,退避时间在时隙编号{𝟎,𝟏,… ,\(𝟐^{𝟐+𝒊}−𝟏\) }中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。当时隙编号达到255时(对应于第6次退避)就不再增加了。

img

为了进一步降低发生碰撞的概率,802.11无线局域网允许源站对信道进行预约。

img

  • RTS(Request To Send)帧是短的控制帧,它包括源地址、目的地址和本次通信(包括目的站发回确认帧所需的时间)所需的持续时间
  • CTS(Clear To Send)帧是短的响应控制帧,它也包括本次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)。
  • 除源站和目的站的其他各站,在收到CTS帧或数据帧后就推迟访问信道。这样就确保了源站和目的站之间的通信不会受到其他站的干扰。
  • 若RTS帧发生碰撞,源站就不可能收到CTS帧,源站会执行退避算法重传RTS帧。
  • 使用RTS帧和CTS帧进行信道预约会带来额外的开销。但由于RTS帧和CTS帧都很短,发生碰撞的概率、碰撞产生的开销以及本身的开销都很小。对于一般的数据帧,其发送时延往往远大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。

尽管如此,802.11无线局域网仍为用户提供了以下三种选择:

  1. 使用RTS帧和CTS帧。
  2. 只有当数据帧的长度超过某个数值时才使用RTS帧和CTS帧。
  3. 不使用RTS帧和CTS帧。

由于RTS帧和CTS帧都会携带通信需要持续的时间,这与之前介绍过的数据帧可以携带通信所需持续时间的虚拟载波监听机制是一样的,因此使用RTS帧和CTS帧进行信道预约,也属于虚拟载波监听机制。

利用虚拟载波监听机制,站点只要监听到数据帧、RTS帧或CTS帧中的任何一个,就能知道信道将被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。

PPT 例题

img


802.11无线局域网的MAC帧

  1. 数据帧
  • 用于在站点间传输数据
  1. 控制帧
  • 通常与数据帧搭配使用
  • 负责区域的清空、虚拟载波监听的维护以及信道的接入,并于收到数据帧时予以确认。
  • ACK帧、RTS帧以及CTS帧等都属于控制帧。
  1. 管理帧
  • 用于加入或退出无线网络,以及处理AP之间连接的转移事宜。
  • 信标帧、关联请求帧以及身份认证帧等都属于管理帧。

img

  • 持续期: 用于实现CSMA/CA的虚拟载波监听和信道预约机制。在数据帧、RTS帧和CTS帧中用该字段指出将要持续占用信道的时长。
  • 序号控制: 用来实现802.11的可靠传输,对数据帧进行编号。
  • 帧控制/地址字段: 取决于帧控制字段中的“去往DS”(到分配系统)和“来自DS”(分配系统)这两个字段的值。

img

img

对这三个地址的理解方法如下:地址1和地址2分别是无线通信中信道两端的接收地址和发送地址。当主机发往AP时,接收地址不是实际的目的地址,因此用地址3来存放实际的目的地址;当AP发往主机时,发送地址不是实际的源地址,因此用地址3来存放实际的源地址。

img

下面讨论一种更复杂的情况。两个AP有线连接到路由器,现在路由器要向A站发送数据。路由器是网络层设备,它看不见链路层的AP,只认识A站的IP地址。而AP是链路层设备,它只认识MAC地址,而不认识IP地址。

  1. 路由器从IP数据报获知A站的IP地址,并用ARP获取A站的MAC地址。获取A站的MAC地址后,路由器接口R1将该IP数据报封装成802.3帧(802.3帧只有两个地址),该帧的源地址字段是R1的MAC地址,目的地址字段是A站的MAC地址。
  2. AP收到该802.3帧后,将该802.3帧转换为802.11帧,在帧控制字段中,“去往AP=0”而“来自AP=1”;地址1是A站的MAC地址,地址2是AP的MAC地址,地址3是R1的MAC地址。这样,A站就可以确定(从地址3)将数据报发送到子网中的路由器接口的MAC地址。
difference between 802.3 and 802.11 frames

802.3帧:以太网帧,只有源MAC地址和目的MAC地址两个地址字段。

802.11帧:无线帧,最多有四个地址字段(如源地址、目的地址、BSSID等),以适应无线转发和漫游等复杂场景。

img

现在考虑从A站向路由器接口R1发送数据的情况。

  1. A站生成一个802.11帧,在帧控制字段中,“去往AP=1”而“来自AP=0”;地址1是AP的MAC地址,地址2是A站的MAC地址,地址3是R1的MAC地址。
  2. AP收到该802.11帧后,将其转换为802.3帧。该帧的源地址字段是A站的MAC地址,目的地址字段是R1的MAC地址。
PPT 例题

img


question

下列关于用光纤连接的以太网和用双绞线连接的以太网的说法中,错误的是()。

A.用集线器连接的双绞线以太网一定工作在半双工状态

B.用交换机连接的双绞线以太网可以工作在全双工状态

C.光纤以太网主要用于支持点对点通信,目的是扩大以太网的覆盖范围

D.光纤以太网也可以选用CSMA/CD协议

answer

D

用集线器连接的以太网一定工作在半双工状态,用交换机连接的以太网既可以工作在半双工状态,又可以工作在全双工状态,选项 A、B 正确。光纤主要是为了扩大以太网的覆盖范围,用于支持点对点通信(中继设备之间的传输),通常不会直接连接终端设备,选项C 正确。一根光纤线内部至少包含两条光纤,用以实现全双工通信,因此用光纤连接的以太网不采用 CSMA/CD协议,选项 D 错误。

question

IEEE 802.3标准规定,若采用同轴电缆作为传输介质,在无中继的情况下,传输介质的最大长度不能超过()。

A.500m

B.200m

C.100m

D.50m

answer

A

以太网常用的传输介质有 4 种:粗缆、细缆、双绞线和光纤。同轴电缆分 50Q 基带电缆和75Ω 宽带电缆两类。基带电缆又分细同轴电缆和粗同轴电缆。

10Base5:粗缆以太网,数据率为 10Mb/s,每段电缆最大长度为 500m:使用特殊的收发器连接到电缆上,收发器完成载波监听和冲突检测的功能。

10Base2:细缆以太网,数据率为 10Mb/s,每段电缆最大长度为 185m;使用 BNC 连接器形成T形连接,无源部件。

question

IEEE 802局域网标准对应OSI参考模型的()。

A.数据链路层和网络层

B.物理层和数据链路层

C.物理层

D.数据链路层

answer

B

IEEE 802 为局域网制定的标准相当于 OSI参考模型的数据链路层和物理层,其中的数据链路层又被进一步分为逻辑链路控制(LLC)和介质访问控制(MAC)两个子层。

question

下列关于吉比特以太网的说法中,错误的是()。

A.支持流量控制机制

B.采用曼彻斯特编码,利用光纤进行数据传输

C.数据的传输时间主要受线路传输延迟的制约

D.同时支持全双工模式和半双工模式

answer

B

吉比特以太网的物理层有两个标准:IEEE 802.3z和 IEEE 802.3ab,前者采用光纤通道,后者采用 4 对 UTP5 类线。

question

下列选项中,()不是虚拟局域网(VLAN)的优点。

A.有效共享网络资源

B.简化网络管理

C.链路聚合

D.提高网络安全性

answer

C

带“虚拟”两个字的基本上都有一个优点,即有效共享资源。通过虚拟局域网,可将一个较大的局域网分割成一些较小的与地理位置无关的逻辑上的虚拟局域网,而每个虚拟局域网都是一个较小的局域网,因此简化了网络管理,提高了信息的保密性和网络的安全性。链路聚合是解决交换机之间的宽带瓶颈问题的技术,而不是虚拟局域网的技术。

question

img

answer

D

  • IP 地址(逻辑地址): 始终指向最终的源头 (H1)目的地 (H2)。在整个过程中,IP 包头中的源 IP (192.168.3.2) 和目的 IP (192.168.4.2) 保持不变

  • MAC 地址(物理地址): 用于在同一个局域网(网段) 内部传递数据。当数据包跨越一个路由器时,MAC 地址会发生变化。它只在“一跳”(hop)内有效。

  1. H1 → R (第一跳)

这是数据包离开 H1,穿过 S1,到达路由器 R 的过程。

  1. H1 的判断: H1 准备向 H2 (192.168.4.2) 发送 IP 包 (P)。H1 会比较自己的 IP (192.168.3.2) 和 H2 的 IP。

  2. 发现异地: H1 发现 H2 (192.168.4.2) 与自己 (192.168.3.2) 不在同一个网段(子网)。

  3. 寻找网关: 因为 H2 不在本地网络,H1 必须将这个 IP 包发给它的默认网关 (Default Gateway),由网关来负责转发。H1 的默认网关就是路由器 R 在它这个网段的接口,即 IP 地址为 192.168.3.1 的接口。

  4. 封装帧 1: H1 会将 IP 包 (P) 封装成一个以太网帧(我们称之为“帧 1”)。

  • 源 IP: 192.168.3.2 (H1)

  • 目的 IP: 192.168.4.2 (H2)

  • 源 MAC: 00-1a-2b-3c-4d-52 (H1 的 MAC)

  • 目的 MAC: H1 会使用 ARP 协议查询 192.168.3.1(默认网关)的 MAC 地址。根据图示,这个地址是 00-1a-2b-3c-4d-51 (R 的左侧接口 MAC)。

H1 发出的封装 P 的以太网帧的目的 MAC 地址是其默认网关 R 的 MAC 地址,即 00-1a-2b-3c-4d-51

(交换机 S1 只会根据这个目的 MAC 地址将帧 1 转发给 R,不会修改它。)

  1. R → H2 (第二跳)

这是路由器 R 收到“帧 1”后,将其转发给 H2 的过程。

  1. R 的处理: R 在 192.168.3.1 接口收到“帧 1”。它看到目的 MAC 是自己,于是“解开”帧 1,取出里面的 IP 包 (P)。

  2. R 的路由: R 查看 IP 包 (P) 的目的 IP 地址192.168.4.2

  3. 查询路由表: R 检查自己的路由表,发现 192.168.4.0 网段是连接在自己的另一个接口 192.168.4.1 上的。

  4. 封装帧 2: R 决定将 IP 包 (P) 从 192.168.4.1 接口发出。它必须重新封装一个全新的以太网帧(我们称之为“帧 2”)。

  • 源 IP: 192.168.3.2 (H1) - 不变

  • 目的 IP: 192.168.4.2 (H2) - 不变

  • 源 MAC: 00-a1-b2-c3-d4-61 (R 的右侧接口 MAC,即它发出数据包的那个接口)

  • 目的 MAC: R 会使用 ARP 协议查询 192.168.4.2 (H2) 的 MAC 地址。根据图示,这个地址是 00-a1-b2-c3-d4-62

  1. H2 接收: 这个“帧 2” 穿过 S2 到达 H2。H2 收到它,看到目的 MAC 是自己,就解开它,取出 IP 包 (P)。

H2 收到的那个帧(帧 2),是 R 发过来的。因此,这个帧的源 MAC 地址是 R 的右侧接口 MAC,即 00-a1-b2-c3-d4-61

question

img

img

answer

A

这个问题的核心是理解 802.11 协议中不同类型的帧间间隔 (Inter-Frame Space, IFS)。IFS 是指主机或 AP 在发送数据帧之前,必须等待的一小段“安静”时间,以确保信道是空闲的。

设置不同长度的 IFS 是为了实现接入优先级。基本原则是:

等待时间越短 = 优先级越高

在 802.11 协议中,与此图相关的两种主要 IFS 是:

  1. DIFS (Distributed IFS - 分布式帧间间隔):
  • 用途: 用于发起一个全新的传输(如发送数据或 RTS)。

  • 优先级: 较低。这是主机在试图“抢占”信道开始新通信时,必须等待的“标准”时长。

  1. SIFS (Short IFS - 短帧间间隔):
  • 用途: 用于一个正在进行的“原子操作”序列中的即时响应

  • 优先级: 最高。这包括(但不限于):

    • 用 CTS 帧回应 RTS 帧。

    • 用 DATA 帧回应 CTS 帧。

    • 用 ACK 帧回应 DATA 帧。

  • 它之所以最短,是为了确保这个(RTS → CTS → DATA → ACK)交换过程一旦开始,就不会被其他试图发起新传输(等待 DIFS)的主机所打断。

现在我们来分析图中的四个 IFS:

IFS1 (答案 A):

  • 情景: 主机 H 想要发起一次全新的通信。它首先要发送一个 RTS (Request to Send) 帧。

  • 类型: 在发起新通信之前,H 必须侦听信道,并等待一个 DIFS 的时长。

  • 因此:IFS1 = DIFS

IFS2 (选项 B):

  • 情景: AP 刚刚收到了 H 发来的 RTS。它需要立即回应一个 CTS (Clear to Send) 帧。

  • 类型: 这是一个正在进行的“原子操作”中的即时响应。

  • 因此:IFS2 = SIFS

IFS3 (选项 C):

  • 情景: H 刚刚收到了 AP 发来的 CTS。它需要立即回应(发送)它真正的 DATA 帧。

  • 类型: 这同样是“原子操作”中的一个即时响应。

  • 因此:IFS3 = SIFS

IFS4 (选项 D):

  • 情景: AP 刚刚收到了 H 发来的 DATA 帧。它需要立即回应一个 ACK (Acknowledgment) 帧来确认收到。

  • 类型: 这也是“原子操作”中的一个即时响应。

  • 因此:IFS4 = SIFS

通过以上分析,我们得到:

  • IFS1 = DIFS

  • IFS2 = SIFS

  • IFS3 = SIFS

  • IFS4 = SIFS

在 802.11 协议中,DIFS 的时长必定大于 SIFS 的时长。

DIFS > SIFS

因此,在这四个选项中,IFS1 (DIFS) 是最长的时间间隔。


评论