第三章数据链路层¶
数据链路层¶
【考频统计】
| 年份 | 考点 | 分值 |
|---|---|---|
| 2009 | 后退N帧协议、\(CSMA/CD\)协议、数据链路层设备之以太网交换机 | 3 * 2 = 6分 |
| 2010 | \(CSMA/CD\)协议(应用题) | 9分 |
| 2011 | 选择重传(\(SR\))协议、\(CSMA/CA\)协议、以太网\(MAC\)帧 | 2 * 2+3 = 7分 |
| 2012 | 以太网\(MAC\)协议、后退N帧(\(GBN\))协议 | 2 * 2 = 4分 |
| 2013 | 介质访问控制方法(\(CSMA\)协议等)、\(HDLC\)协议、以太网交换机 | 3 * 2 = 6分 |
| 2014 | 以太网交换机、后退N帧(\(GBN\))协议、码分多路复用\(CDMA\)协议 | 3 * 2 = 6分 |
| 2015 | 滑动窗口协议、\(CSMA/CD\)协议、以太网交换机 | 3 * 2 = 6分 |
| 2016 | 以太网交换机 | |
| 2017 | \(IEEE\ 802.11\)无线局域网、后退N帧(\(GBN\))协议 | 2+9=11分 |
| 2018 | \(IEEE\ 802.11\)无线局域网、停—等协议、以太网交换机 | 3 * 2 = 6分 |
| 2019 | 滑动窗口协议、\(CSMA/CD\)协议、交换机 | 2*2+2 = 6分 |
| 2020 | 交换机、停—等协议、\(IEEE\ 802.11\)无线局域网 | 2 * 2 = 4分 |
| 2021 | 以太网交换机(应用题) | 3分 |
| 2022 | 交换机、\(IEEE\ 802.11\)无线局域网(接入点、帧的地址) | |
| 2023 | 【后退N帧(\(GBN\))协议、停—等协议、选择重传(\(SR\))协议】(选择题)、\(CSMA/CD\)协议之二进制指数退避算法、 检错编码之循环冗余码(\(CRC\)) | 3 * 2 = 6分 |
| 组帧(零比特填充法) HDLC协议中的比特填充法(2013) |
检错编码 循环冗余码的计算(2023) |
|---|---|
| 流量控制与滑动窗口机制 滑动窗口协议的窗口大小的关系(2019) |
信道划分介质访问控制 码分复用中数据分离的计算(2014) |
| 可靠传输机制 GBN协议的工作原理(2009) GBN确认号的含义/捎带确认的应用(2017) GBN超时重传的分析(2017) GBN发送窗口的意义/最大尺寸(2017) 选择重传协议的工作原理(2011) 停止-等待协议下信道利用率的计算(2018、2020) 三种滑动窗口协议的信道利用率比较(2023) GBN协议下信道利用率与发送窗口大小的关系(2012、2015、2017) 滑动窗口协议的数据传输速率的计算(2009、2010、2014) |
随机访问介质访问控制 信道划分与随机访问介质访问控制的特点(2014) CSMA/CD协议的特点(2015) 信道发生冲突的最短、最长时间的分析(2010) CSMA/CD最短帧长的理解和相关计算(2009、2016、2019、2022) 二进制指数退避算法的应用(2023) 需要使用确认方案的 MAC协议(2011) CSMA/CA协议的IFS的特点(2020) CSMA/CA 协议进行信道预约的方法(2018) |
| 以太网与IEEE802.3 以太网MAC协议提供的服务类型(2012) 以太网MAC地址的长度(2013) 以太网帧首部的内容、首部和尾部的长度(2010、2011) 以太网帧中目的地址和源地址的含义(2018) 分析IP首部并判断其以太帧是否需要填充(2012) 100BaseT以太网使用的传输介质(2019) IEEE802.11无线局域网 802.11数据帧前三个地址的含义(2017、2022) |
以太网交换机 以太网交换机的特点(2015) 直通交换方式的转发时延的分析(2013) 以太网交换机转发决策时使用的 PDU地址(2009) 交换机自学习的过程(2014、2016、2021) 集线器与交换机连接的网段的区别(2016) 集线器和交换机对冲突域/广播域的隔离(2020、2022) |
本章重点:
- 数据链路层的三个重要问题:封装成帧和透明传输、差错检测、可靠传输。
- 三种实现可靠传输的机制:停止-等待协议,回退N帧协议,选择重传协议。
- 点对点信道上最常用的点对点协议。
- 共享以太网使用的CSMA/CD协议。
- 网络适配器、集线器、网桥以及以太网交换机的作用,特别是网桥和以太网交换机的工作原理。
- 802.11无线局域网的组成和CSMA/CA协议。
3.1 数据链路层概述¶
3.1.1 为什么要有数据链路层¶
为什么要有数据链路层:上一章节中说到的物理层,它只负责比特流的传输,因此是无法保证传输的可靠性的,因为比特流在传输的过程极易发生跳变、错位、乱序等问题。所以我们需要一种控制手段施加物理层上,来保证物理层传输的可靠性,这一层便是数据链路层

在大多数情况下,研究数据链路层的相关问题时可以不考虑网络体系结构中的其他层,因此可以想象:数据包只在数据链路层从左向右沿水平方向传送
如下图,从数据链路层看,主机H1到H2的通信可以看成是由3段不同链路上的通信所组成的.
【注意】:这三段不同的数据链路层可能采取不同的数据链路层协议

3.1.2 数据链路层定义¶
- 数据链路层:负责通过一条链路从一个结点向另一个相邻结点传送帧
- 链路(Link):是指从一个结点到相邻结点的一段物理线路(有线或无线),中间没有其他任何交换结点。网络中各主机之间的通信路径一般由多段链路构成。

- 数据链路(Data Link):数据链路是基于链路的。当在一条链路上传送数据时,除需要链路本身,还需要一些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
计算机中的网络适配器(俗称网卡)和其相应的软件驱动程序就实现了这些协议。一般的网络适配器都包含了物理层和数据链路层这两层的功能。

- 帧(Frame):帧是数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元PDU。如下图所示,发送方的数据链路层给网络层交付下来的分组添加首部和尾部,使之封装成为帧,然后将帧交付给物理层进行发送。接收方的数据链路层从物理层交付上来的帧中解封出分组,并将其上交给网络层。

数据链路层不必考虑物理层如何实现比特流的传输。为了简单起见,可以认为帧是在通信双方数据链路层的对等实体之间沿水平方向直接传送,如图所示。

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


尽管数据链路层有多种协议,但在这些数据链路层协议中,有三个重要的问题是共同的。这三个重要问题是:封装成帧和透明传输、差错检测、可靠传输。下面对这三个重要问题进行详细介绍。
3.2.1 封装成帧与透明传输¶
- 封装成帧
所谓封装成帧(framing),就是给网络层交付下来的分组添加一个首部和一个尾部,这样就构成了一个帧,如图所示。
帧的首部和尾部中包含有<strong>一些重要的控制信息</strong>。例如,<strong>帧首部</strong>中往往包含<strong>帧开始符</strong>、帧的源地址和目的地址,而帧尾部中往往包含帧校验序列和帧结束符。接收方的数据链路层在收到物理层交付上来的比特流后,根据帧首部中的帧开始符和帧尾部中的帧结束符,从收到的比特流中识别出帧的开始和结束,也就是进行<strong>帧定界</strong>。
各种数据链路层协议都对帧首部和尾部的格式有明确的定义。<strong>为了提高数据链路层传输帧的效率,应当使帧的数据载荷的长度尽可能地大于首部和尾部的长度。考虑到对缓存空间的需求以及差错控制等诸多因素,每一种数据链路层协议都规定了帧的数据载荷的长度上限,即最大传送单元(Maximum Transfer Unit,MTU)</strong>,例如以太网的MTU为1500个字节。


- 透明传输
- 如果在帧的数据载荷部分恰好也出现了帧定界符(帧开始符或帧结束符),就会造成接收方数据链路层出现帧定界的错误,如图所示。

- 如果不解决上述问题,则数据链路层就会对上层交付的协议数据单元(PDU) 的内容有所限制,即PDU中不能包含帧定界符。显然,这样的数据链路层没有什么应用价值。如果能够采取措施,使得数据链路层对上层交付的PDU的内容没有任何限制,就好像数据链路层不存在一样,就称其为透明传输。
- 实现透明传输的方法一般有两种:字节填充和比特填充。
面向字节的物理链路使用字节填充(或字符填充)的方法实现透明传输。
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前⾯ 插⼊⼀个转义字符“ESC”;
- 接收端的数据链路层在将数据送往⽹络层之前删除插⼊的转义字 符;
- 如果转义字符也出现在数据当中,那么应在转义字符前⾯插⼊⼀个 转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前⾯的⼀个。

面向比特的物理链路使用比特填充的方法实现透明传输
- 发送方的数据链路层扫描数据载荷,只要出现5个连续的比特1,就在其后填入一个比特0。经过这种比特0填充后的数据载荷,就可以确保其不会包含帧定界符。
- 接收方的数据链路层在把数据载荷向上交付网络层之前,对数据载荷进行扫描,每当发现5个连续的比特1时,就把其后的一个比特0删除,这样就可以还原出原始的数据载荷。

【2013年 题37】HDLC协议对0111110001111110组帧后对应的比特串为( )。
A. 011111000011111010 B. 011111000111110101111110
C. 01111100011111010 D. 011111000111111001111101
高级数据链路控制协议HDLC采用帧首部和帧尾部中的标志字段作为帧定界符,其值为01111110。HDLC为了实现“透明传输”,采用“零比特填充法”,即每五个连续比特1后面插入一个比特0。
因此选A
【练习】在某个数据链路层协议中使用下列字符编码:
A:01000111 B:11100011 ESC:11100000 FLAG:01111110
其中,FLAG作为帧定界符,ESC作为转义字符,假设帧的数据载荷为4个字符A、B、ESC以及FLAG,请分别使用字符填充法和零比特填充法将其封装成帧
解析

以太网的数据链路层协议没有采用字符填充法或比特填充法来实现透明传输。这是因为在以太网帧的首部和尾部中,并没有包含帧定界符,因此并不存在透明传输的问题。
实际上,以太网的数据链路层封装好以太网帧后,将其交付给物理层。物理层还会在以太网帧前添加8字节的<strong>前导码</strong>,如图3-9所示。前导码中的前7个字节为<strong>前同步码</strong>,作用是<strong>使接收方的时钟同步</strong>,之后的1字节为<strong>帧开始符</strong>,表明其后面紧跟着的就是以太网帧。另外,以太网还规定了<strong>帧间间隔时间为96比特的发送时间</strong>(对于带宽为10Mb/s的传统以太网,96比特的发送时间为9.6us)。因此,以太网帧并不需要帧结束符。

3.2.2 差错检测¶
- 误码:实际的通信链路都不是理想的,比特在传输过程中可能会产生差错(称为比特差错):比特1可能变成比特0,比特0可能变成比特1(eg:受到噪声干扰、传输媒体质量等因素影响)
- 在一段时间内,传输错误的比特数量占所传输比特总数的比率称为误码率(Bit Error Rate,BER)。
- 提高链路的信噪比,可以降低误码率。但在实际的通信链路上,不可能使误码率下降为零。
- 使用差错检测技术来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。



奇偶校验¶
- 奇校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数为奇数。
- 偶校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数为偶数。
- 在所传输的数据中,如果有奇数个位发生误码,则所包含比特1的数量的奇偶性会发生改变,可以检测出误码。
- 在所传输的数据中,如果有偶数个位发生误码,则所包含比特1的数量的奇偶性不会发生改变,无法检测出误码(漏检)。


循环冗余校验¶
- 数据链路层广泛使用漏检率极低的循环冗余校验(Cyclic Redundancy Check,CRC)检错技术。
- 循环冗余校验CRC的基本思想:
- 收发双方约定好一个生成多项式G(X)。
- 发送方基于待发送的数据和生成多项式G(X),计算出差错检测码(冗余码),将冗余码添加到待发送数据的后面一起传输。
- 接收方收到数据和冗余码后,通过生成多项式G(X)来计算收到的数据和冗余码是否产生了误码。
- 发送方CRC操作

- 接收方CRC操作

- 【生成多项式举例】:

生成多项式各项系数构成的比特串:10111(计算冗余码时作为除数)

【CRC举例】
待发送的数据为101001,生成多项式为\(G(X)= X^3+ X^2+1\),计算冗余码。
- 构造被除数:在待发送数据101001后面添加生成多项式最高次数个0(最高次数为3),得到被除数101001 000。
- 构造除数:生成多项式\(G(X)= X^3+ X^2+1\)各项系数构成的比特串作为除数,得到除数为1101。
- 进行二进制模2除法:二进制模2除法既不向上位借位,也不比较除数和被除数的对应位数值的大小,只要以相同位数进行相除即可,相当于对应位进行逻辑异或运算。计算出余数为1。
- 检查余数:余数的位数应与生成多项式G(X)的最高次数相同。如果位数不够,则在余数前补0来凑足位数。在余数1前面补两个0,得到余数001。
- 将余数作为冗余码添加到待发送数据的后面进行发送:将余数001作为冗余码添加到待发送数据101001的后面进行发送,即实际发送数据为101001001。

接收到的信息为101101001,生成多项式为\(G(X)= X^3+ X^2+1\),判断传输是否误码?
- 构造被除数:接收到的数据和冗余码作为被除数。假设传输过程没有产生误码,则被除数为101001001。假设传输过程产生了两位误码,例如收到的数据和冗余码为101101011,如图所示。
- 构造除数:生成多项式\(G(X)= X^3+ X^2+1\)各项系数构成的比特串作为除数,得到除数为1101。
- 进行二进制模2除法,计算出余数。
- 检查余数:余数为0,可判定传输过程没有产生误码,如图(a)所示。余数不为0,可判定传输过程产生了误码,如图(b)所示。

补充:
- 这种检测⽅法并不能确定究竟是哪⼀个或哪⼏个⽐特出现了差错。
- 只要经过严格的挑选,并使⽤位数⾜够多的除数 P, 那么出现检测不到的差错的概率就很⼩很⼩。
- 在数据后⾯添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。CRC和FCS并不等同,CRC 是⼀种常⽤的检错⽅法,而FCS 是添加在数据后⾯的冗余 码 ; FCS 可以⽤ CRC 这种⽅法得出,但 CRC 并⾮⽤来获得FCS 的唯⼀⽅法.
- 仅⽤循环冗余检验 CRC 差错检测技术只能做到⽆差错接受(accept):
- “⽆差错接受”是指:“凡是接受的帧(即不包括丢弃的 帧),我们都能以⾮常接近于 1 的概率认为这些帧在传输过程中没有产⽣差错”;
- 也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃⽽不接受)。
- 要做到“可靠传输”(即发送什么就收到什么) 就必须再加上序号、确认和重传机制。
3.2.3 可靠传输¶
3.2.3.1 可靠传输的相关基本概念¶
- 使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特差错)

检测出误码后如何处理呢?
取决于数据链路层向其上层提供的服务类型
- 数据链路层向其上层提供的服务类型
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做;
- 可靠传输服务:通过某种机制实现发送方发送什么,接收方最终就能收到什么。
- 一般情况下,有线链路的误码率比较低。为了减小开销,并不要求数据链路层向其上层提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
- 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向其上层提供可靠传输服务

- 传输差错
- 误码(比特差错)
- 分组丢失
- 分组失序
- 分组重复
分组丢失、分组失序和分组重复一般不会出现在数据链路层,而是在其上层出现。因此,可靠传输服务并不局限于数据链路层,其上各层均可选择实现可靠传输服务。这也是此处将数据传送单元从帧改为分组的原因。





- 如果网络接口层使用的是信道易受干扰的802.11无线局域网,那么其数据链路层必须实现可靠传输。
- 如果网络接口层使用的是信道质量比无线局域网好很多的以太网,那么其数据链路层不要求实现可靠传输
- 网际层的IP向其上层提供的是无连接、不可靠传输服务。
- 运输层中的TCP向其上层提供的是面向连接的可靠传输服务,而UDP向其上层提供的是无连接、不可靠传输服务。
下面介绍三种实现可靠传输的机制:停止-等待协议、回退N帧协议、选择重传协议。注意,这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到其上各层。
3.2.3.2 停止-等待协议SW¶
定义:所谓停止-等待(Stop-and-Wait,SW),就是指发送方每发送完一个数据分组就必须停下来,等待接收方发来的确认(Acknowledgement,ACK)或否认(Negative Acknowledgement,NAK)分组.下面按从简单到复杂的传输情况,逐步引出停止-等待协议中的各种机制,如图所示


当发送方发送的数据丢失,会出现的问题:
- 接收方收不到数据分组,就不会发送相应的ACK或NAK。
- 如果不采取措施,发送方就会一直处于等待接收方ACK或NAK的状态。
- 为解决上述问题,发送方可在每发送完一个数据分组时就启动一个超时计时器(Timeout Timer)
- 若到了超时计时器所设置的超时重传时间(Retransmission Time-Out,RTO),但发送方仍未收到接收方的ACK或NAK,就重传之前已发送过的数据分组。


- 为了避免分组重复这种传输错误,必须给每个分组带上序号。
- 对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其序号与上次发送的数据分组的序号不同就可以了,因此用一个比特来编号就够了,序号有0和1这两个。

确认分组ACK需要编号吗


【注意事项】
- 使用超时重传机制后,就可以不使用否认机制了,这样可使协议实现起来更加简单。但是,如果点对点链路的误码率较高,使用否认机制可以使发送方在超时计时器超时前就尽快重传。
- 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的特性,只需1个比特编序号即可,即序号0和序号1。
- 为了让发送方能够判断所收到的确认分组是否是重复的,需要给确认分组编号,所用比特数量与数据分组所用比特数量一样。
- 数据链路层一般不会出现确认分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给确认分组编号。
- 给超时计时器设置的超时重传时间RTO应当仔细选择,一般将RTO设置为略大于收发双方的平均往返时间RTT。
- 在数据链路层,点对点的往返时间RTT比较固定,RTO就比较好设定。
- 在运输层,由于端到端往返时间非常不确定,设置合适的超时重传时间RTO有时并不容易
- 停止-等待协议属于自动请求重传(AutomaticRepeat reQuest,ARQ)协议。即重传的请求是发送方自动进行的,而不是接收方请求发送方重传某个误码的数据分组。
【停止-等待协议的信道利用率】


- 若出现超时重传,对于传送有用的数据信息来说,信道利用率还要降低。
- 在往返时间RTT相对较大的情况下,为了提高信道利用率,收发双方不适合采用停止-等待协议,而可以选择使用回退N帧(GBN)协议或选择重传(SR)协议。
【2018年 题36】主机甲采用停-等协议向主机乙发送数据,数据传输速率是3kbps,单向传播延时是200ms,忽略确认帧的传输延时。当信道利用率等于40%时,数据帧的长度为( )。
A. 240比特 B. 400比特 C. 480比特 D. 800比特
解析

3.2.3.3 回退N帧协议¶

- 在使用流水线传输方式时,发送方不能无限制地连续发送数据分组,否则可能会导致网络中的路由器或接收方来不及处理这些数据分组,进而导致数据分组的丢失,这实际上是对网络资源的浪费。
- 回退N帧协议采用流水线传输方式,并且利用发送窗口来限制发送方连续发送数据分组的数量,这属于连续ARQ协议。
采用n个比特给分组编序号,序号范围是0~\((2^n−1)\)。本例假设采用3个比特给分组编序号,则序号范围是0~7
- 发送方需要维护一个发送窗口\(W_T\) ,在未收到接收方确认分组的情况下,发送方可将序号落入\(W_T\)内的所有数据分组连续发送出去。
- 采用个\(n\)比特给分组编序号,则\(W_T\)的取值范围是\(1<W_T≤(2^n−1)\)。本例假设采用3个比特给分组编序号,则W_T的取值范围是2~7,本例取\(W_T=5\)。
- 接收方需要维护一个接收窗口\(W_R\),只有正确到达接收方(无误码)且序号落入内的\(W_R\)数据分组才被接收方接收。
- \(W_R\)的取值只能是\(1\)这一点与停止-等待协议是相同的

- 接收方每正确收到一个序号落入接收窗口的数据分组,就将接收窗口向前滑动一个位置,这样就有一个新的序号落入接收窗口。与此同时,接收方还要给发送方发送针对该数据分组的确认分组。
- 发送方每收到一个按序确认的确认分组,就将发送窗口向前滑动一个位置,这样就有一个新的序号落入发送窗口,序号落入发送窗口内的数据分组可继续被发送
-
在回退N帧协议的工作过程中,发送方的发送窗口和接收方的接收窗口按上述规则不断向前滑动。因此,这类协议又称为滑动窗口协议
-
无传输差错的情况





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



















- 一个数据分组的差错就可能引起大量数据分组的重传。
- 在信道质量较差(容易出现误码)的情况下,回退N帧协议的信道利用率并不比停止-等待协议的信道利用率高。
- 回退N帧协议的接收方采用累积确认方式。
- 接收方不必对收到的每一个数据分组都发送一个确认分组,而是可以在收到几个序号连续的数据分组后,对按序到达的最后一个数据分组发送确认分组
- 接收方何时发送累积确认分组,由具体实现决定
- 确认分组ACKn表明序号为n及之前的所有数据分组都已正确接收
- 累积确认的优点
- 减少向网络中注入确认分组的数量
- 即使确认分组丢失,也可能不必重传数据分组
- 累积确认的缺点
- 不能向发送方及时准确地反映出接收方已正确接收的所有数据分组的数量
Info
采用n个比特给分组编序号,则发送窗口\(W_T\)的取值范围是\(1<W_T≤(2^n−1)\)。
本例假设采用3个比特给分组编序号,则的取\(W_T\)值范围是2~7。
若\(W_T\)超过取值范围,例如 ,会出现\(W_T= 8\)什么情况?






【2009年 题35】数据链路层使用后退N帧(GBN)协议,发送方已经发送了编号0~7的帧。当计时器超时时,若发送方只收到了0、2、3号帧的确认,则发送方需要重发的帧数是( )
A.2 B.3 C.4 D.5
C解析

A. 10Mbps B. 20Mbps C. 80Mbps D. 100Mbps
解析

3.2.3.4 选择重传协议¶
从 滑动窗口 的角度对比停止-等待协议、回退N帧协议和选择重传协议

为了使发送方仅重传出现差错的数据分组,接收方 不再采用累积确认 ,而需要对每一个正确接收的数据分组进行 逐一确认
















| 发送方 | 接收方 |
|---|---|
| + 可在未收到接收方确认分组的情况下,将序号落入发送窗口内的多个数据分组全部发送出去。 + 只有按序收到对已发送数据分组的确认分组时 ,发送窗口才能向前滑动到相应位置。 + 如果收到未按序到达的确认分组,应对其进行记录,以防止其相应数据分组的超时重发,但发送窗口不能向前滑动。 |
+ 可接收未按序到达但没有误码并且序号落入接收窗口内的数据分组 + 为了使发送方仅重传出现差错的分组,接收方 不再采用累积确认 ,而需要对每一个正确接收到的数据分组进行 逐一确认 + 只有在按序接收数据分组 后,接收窗口才能向前滑动到相应位置。 |
【2011年 题35】数据链路层采用选择重传协议(SR)传输数据,发送方已发送了0~3号数据帧,现已收到1号帧的确认,而0、2号帧依次超时,则此时需要重传的帧数是( )
A. 1 B. 2 C. 3 D. 4
解析

3.3 点对点协议PPP¶
3.3.1 点对点协议PPP概述¶
- 点对点协议(Point-to-Point Protocol,PPP)是目前使用最广泛的点对点数据链路层协议
- 点对点协议PPP主要有两种应用


-
PPP协议的特点
- 能够在多种链路上运行:
- 串行的、并行的;
- 同步链路、异步链路;
- 低速链路、高速链路;
- 交换的(动态的)、非交换的(静态的);
- 电的、光的;
- PPPoE (PPP over Ethernet)
- 实现了传统以太网没有身份验证、加密以及压缩等功能。
-
PPP协议的基本要求
- 简单:这是首要的要求(最复杂的功能TCP实现,IP也简单且不可可靠),因此数据链路层的PPP没有必要比IP复杂;
- 数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制
- 误码率比较高的无线链路上需要更为复杂的链路层协议;
- 简单使协议在实现时不容易出错,提高了不同厂商对协议的不同实现的互操作性;
- 不支持多点接入, 不支持半双式或单工通信(全双工)。
- <strong>封装成帧</strong>:必须规定特殊的字符作为帧定界符;
- <strong>透明性:</strong>必须保证数据传输的透明性;
- <strong>多种网络层协议</strong>:支持多种网络层协议(IP/IPX);
- <strong>多种类型链路</strong>:能够在多种类型的链路上运行;
- 差错检测:对收到的帧进行检测,并丢弃有差错的帧;
- 从网络体系结构的角度看点对点协议PPP的组成

PPP协议由三个组成部分:
- 一种将IP数据报封装到串行链路(同步串行/异步串行)的方法;
- 链路控制协议 LCP(Link Control Protocol),用来建立、配置和测试链路,其最重的功能之一是身份验证(PAP,CHAP);
- 配置确认帧:所有选项都能接受;
- 配置否认帧:所有选项都理解但不接受;
- 配置拒绝帧:选项有无法识别或不能接受内容,需要协商。
- 网络控制协议NCP(Network Control Protocol),支持不同的网络层协议(IP、OSI的网络层、AppleTalk等)。
3.3.2 PPP的帧格式¶

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


PPP是面向字节的,所有的 PPP 帧的长度都是整数字节。
3.3.3 PPP的透明传输¶
同步传输(SONET/SDH链路):面向比特的传输,同步传输的单位是帧;
- 同步传输收发双时钟统一、字符间传输同步无间隔.
异步传输 : 面向字节的传输,异步传输的单位是字符。
- 异步传输效率低,高速链路开销大。
同步问题:
- 异步传输通过字符起止的开始和停止码进行同步,线路空闲时携带着代表着比特1的信号,传输开始位使信号变为0,数据传输结束,停止位使信号重新变为1;
- 同步传输在数据中提取同步信息(帧定界比特组合)。
- 面向字节的异步链路使用字节填充来实现透明传输[RFC1662]
标志 F : 0x7E

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

- 接收方的处理:
进行与发送方相反的变换,就可以正确地恢复出未经过字节填充的原始数据载荷

- 面向比特的同步链路使用零比特填充来实现透明传输

- 发送方的处理:对帧的数据载荷进行扫描(一般由硬件完成),每出现5个连续的比特1,则在其后填充一个比特0。
- 接收方的处理:对帧的数据载荷进行扫描,每出现5个连续的比特1时,就把其后的一个比特0删除。

3.3.4 PPP帧的差错检测¶

- 接收方每收到一个PPP帧,就进行CRC检验。若CRC检验正确,就收下这个帧;否则,就丢弃这个帧。
- 使用PPP的数据链路层,向上提供的是 不可靠数据传输服务 。
PPP协议不使用序号和确认机制:
- 在数据链路层出现差错的概率不大时,使用比较简单的PPP协议较为合理;
- 在因特网环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的;
- 帧检验序列FCS字段可保证无差错接收。
3.3.5 PPP的工作状态¶
以用户主机拨号接入因特网服务提供者ISP的拨号服务器的过程为例

(1)PPP链路的开始和结束状态都是“静止”状态,这时用户PC与ISP的拨号服务器之间并不存在物理层的连接。
(2)当检测到调制解调器的载波信号并建立物理层连接后,PPP就进入链路的“建立”状态。
(3)在“建立”状态下,链路控制协议LCP开始协商一些配置选项。若协商成功,则进入“鉴别”状态;若协商失败,则退回到“静止”状态。所协商的配置选项包括最大帧长、鉴别协议等。
(4)若通信双方无须鉴别或鉴别身份成功,则进入“网络”状态。若鉴别失败,则进入“终止”状态。
(5)进入“网络”状态后,PPP链路的两端通过互相交换网络层特定的NCP分组来进行NCP配置。如果PPP链路的上层使用的是IP协议,则使用IP控制协议(IPControl Protocol,IPCP)来对PPP链路的每一端配置IP模块,例如分配IP地址。NCP配置完成后,就进入“打开”状态。
(6)只要链路处于“打开”状态,双方就可以进行数据通信。
(7)当出现故障或链路的一端发出终止请求时,就进入“终止”状态。当载波停止后就回到“静止”状态。
可见,PPP协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

3.4 共享式以太网¶

以太网目前已经从传统的共享式以太网发展到交换式以太网,传输速率已经从10Mb/s提高到100Mb/s、1Gb/s甚至10Gb/s。 我们会首先介绍最早流行的传输速率为10Mb/s的共享式以太网的相关知识。
3.4.1 网络适配器和MAC地址¶
网络适配器
- 要将计算机连接到以太网,需要使用相应的网络适配器(Adapter),网络适配器一般简称为“网卡”


- 在计算机内部,网卡与CPU之间的通信,一般是通过计算机主板上的I/O总线以并行传输方式进行。
- 网卡与外部以太网(局域网)之间的通信,一般是通过传输媒体(同轴电缆、双绞线电缆、光纤)以串行方式进行的。

- 网卡除要实现物理层和数据链路层功能,其另外一个重要功能就是要进行并行传输和串行传输的转换。由于网络的传输速率和计算机内部总线上的传输速率并不相同,因此在网卡的核心芯片中都会包含用于缓存数据的存储器。
- 在确保网卡硬件正确的情况下,为了使网卡正常工作,还必须要在计算机的操作系统中为网卡安装相应的设备驱动程序。驱动程序负责驱动网卡发送和接收帧
MAC地址
- 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址
- 在每个主机发送的帧的首部中,都携带有发送主机(源主机)和接收主机(目的主机)的数据链路层地址。由于这类地址是用于媒体接入控制(Medium Access Control,MAC)的,因此被称为MAC地址。


- MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址。
- MAC地址有时也被称为物理地址
Info
不要被物理地址中的“物理”二字误导,误认为物理地址属于网络体系结构中物理层的范畴。
物理地址属于数据链路层范畴。

- 一般情况下,普通用户计算机中往往会包含两块网卡
- 一块是用于接入有线局域网的以太网卡
- 另一块是用于接入无线局域网的Wi-Fi网卡
- 每块网卡都有一个全球唯一的MAC地址。
- 交换机和路由器往往具有更多的网络接口,所以会拥有更多的MAC地址
综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
IEEE 802局域网的MAC地址格式


IEEE 802局域网的MAC地址发送顺序

- 字节发送顺序:第1字节----> 第6字节
- 字节内的比特发送顺序:b0 ----->b7
- 网卡从网络上每收到一个帧,就检查帧首部中的目的MAC地址,按以下情况处理:
- 如果目的MAC地址是 广播地址 ( FF-FF-FF-FF-FF-FF ),则 接受该帧
- 如果目的MAC地址与网卡上固化的全球单播MAC地址相同,则接受该帧
- 如果目的MAC地址是网卡支持的多播地址,则接受该帧
- 除上述(1)、(2)和(3)情况外,丢弃该帧。
- 全球单播MAC地址就如同身份证上的身份证号码,具有唯一性,它往往与用户个人信息绑定在一起。因此,用户应尽量确保自己拥有的全球单播MAC地址不被泄露。
- 为了避免用户设备连接Wi-Fi热点时MAC地址泄露的安全问题,目前大多数移动设备都已经采用了随机MAC地址技术。
单播MAC地址举例


广播MAC地址举例


多播MAC地址举例

3.4.2 CSMA/CD协议¶
3.4.2.1 CSMA/CD协议的基本原理¶
- 在以太网的发展初期,人们普遍认为“无源的电缆线比有源器件可靠”,因此将多个站点连接在一条总线上来构建共享总线以太网。
- 共享总线以太网具有天然的广播特性,即使总线上某个站点给另一个站点发送单播帧,表示帧的信号也会沿着总线传播到总线上的其他各站点
- 当某个站点在总线上发送帧时,总线资源会被该站点独占。此时,如果总线上的其他站点也要在总线上发送帧,就会产生信号碰撞
- 当两个或多个站点同时使用总线发送帧时,就会产生信号碰撞

Info
共享总线以太网的一个重要问题:如何协调总线上的各站点争用总线
- 为了解决各站点争用总线的问题,共享总线以太网使用了一种专用协议CSMA/CD,它是载波监听多址接入/碰撞检测(Carrier Sense Multiple Access Collision Detection)的英文缩写词。
| 多址接入MA | 载波监听CS | 碰撞检测CD |
|---|---|---|
| 多个站点连接在一条总线上,竞争使用总线 | 每个站点在发送帧之前,先要检测一下总线上是否有其他站点在发送帧(“先听后说”) + 若检测到总线空闲 96比特时间 (发送96比特所耗费的时间,也称为帧间最小间隔),则发送这个帧; + 若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。 |
每个正在发送帧的站点边发送边检测碰撞(“边说边听”): 一旦发现总线上出现碰撞,立即停止发送,退避一段随机时间后再次从载波监听开始进行发送(“一旦冲突,立即停说,等待时机,重新再说”)。 |







强化碰撞 : 发送帧的站点一旦检测到碰撞,除了立即停止发送帧外,还要再继续发送 32比特或48比特的人为干扰信号 ,以便 有足够多的碰撞信号使所有站点都能检测出碰撞。
- 载波监听检测到总线空闲,但总线并不一定空闲。
- 使用CSMA/CD协议的共享总线以太网上的各站点,只是尽量避免碰撞并在出现碰撞时做出退避后重发的处理,但不能完全避免碰撞。
- 在使用CSMA/CD协议时,由于正在发送帧的站点必须“边发送帧边检测碰撞”,因此站点不可能同时进行发送和接收,也就是不可能进行全双工通信,而只能进行半双工通信(双向交替通信)。
3.4.2.2 共享式以太网的争用期¶
- 使用CSMA/CD协议的共享总线以太网上的任意站点在发送帧的过程中都可能会遭遇碰撞


某个站点从发送帧开始,最长要经过多长时间,才能检测出自己发送的帧与其他站点发送的帧产生了碰撞?


- 站点从发送帧开始,最多经过时长2τ (即δ→0)就可检测出所发送的帧是否遭遇了碰撞。
- 因此,共享总线以太网的端到端往返时间2τ被称为争用期或碰撞窗口,它是一个非常重要的参数。
- 站点从发送帧开始,经过争用期2τ这段时间还没有检测到碰撞,就可以肯定这次发送不会产生碰撞。
- 从争用期的概念可以看出,共享总线以太网上的每一个站点从发送帧开始,到之后的一小段时间内,都有可能遭遇碰撞,而这一小段时间的长短是不确定的,它取决于另一个发送帧的站点与本站点的距离,但不会超过总线的端到端往返传播时延,即一个争用期2τ 。
- 很显然,总线的长度越长(单程端到端传播时延越大),网络中站点数量越多,发生碰撞的概率就越大
- 因此,共享以太网的总线长度不能太长,接入的站点数量也不能太多
- 10Mb/s共享总线以太网(传统以太网)规定:争用期2τ 的值为512比特的发送时间,即51.2μs

【2010年 题47】某局域网采用CSMA/CD协议实现介质访问控制,数据传输速率为10Mbps,主机甲和主机乙之间 的距离为2km,信号传播速度是200 000km/s。请回答下列问题,要求说明理由或写出计算过程
(1)若主机甲和主机乙发送数据时发送冲突,则从开始发送数据时刻起,到两台主机均检测到冲突时刻止,最短需经过多长时间?最长需经过多长时间(假设主机甲和主机乙发送数据过程中,其他主机不发送数据)?


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





- 为了确保共享总线以太网上的每一个站点在发送完一个完整的帧之前,能够检测出是否产生了碰撞,帧的发送时延就不能少于共享总线以太网端到端的往返时间,即一个争用期2τ
- 对于10Mb/s的共享总线以太网,其争用期2τ 的值规定为51.2μs,因此其最小帧长为512b,即64B
- 当某个站点在发送帧时,如果帧的前64B没有遭遇碰撞,那么帧的后续部分也就不会遭遇碰撞。也就是说,如果遭遇碰撞,就一定是在帧的前64B之内。
- 由于发送帧的站点边发送帧边检测碰撞,一旦检测到碰撞就立即中止帧的发送,此时已发送的数据量一定小于64B。因此,接收站点收到长度小于64B的帧,就可判定这是一个遭遇了碰撞而异常中止的无效帧,将其丢弃即可。
- 一般来说,帧的数据载荷的长度应远大于帧首部和尾部的总长度,这样可以提高帧的传输效率。

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


满足最小帧长为64B的要求( 6B + 6B + 2B + 46B + 4B = 64B )
【2009年 题37】在一个采用CSMA/CD协议的网络中,传输介质是一根完整的电缆,传输速率为1Gbps,电缆中的信号传播速度是200 000km/s。若最小数据帧长度减少800比特,则最远的两个站点之间的距离至少需要( )
A. 增加160m B. 增加80m C. 减少160m D. 减少80m
解析


3.4.2.4 共享式以太网的退避算法¶
- 在使用CSMA/CD协议的共享总线以太网中,正在发送帧的站点一边发送帧一边检测碰撞,当检测到碰撞时就立即停止发送,退避一段随机时间后再重新发送
- 共享总线以太网中的各站点采用截断二进制指数退避(Truncated Binary Exponential Backoff)算法来选择退避的随机时间

- 如果连续多次发送碰撞,就表明可能有较多的站点参与竞争信道。但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(即动态退避),因而减小产生碰撞的概率。
- 当重传达16次仍不能成功时,就表明同时打算发送帧的站点太多,以至于连续产生碰撞,此时应放弃重传并向高层报告


- 考虑以下这种理想情况
- 总线一旦空闲就有某个站点立即发送帧
- 各站点发送帧都不会产生碰撞
- 发送一帧占用总线的时间为\(T_0+τ\),而帧本身的发送时间是\(T_0\)

【2015年 题36】下列关于CSMA/CD协议的叙述中,错误的是( )
A. 边发送数据帧,边检测是否发生冲突
B. 适用于无线网络,以实现无线链路共享
C. 需要根据网络跨距和数据传输速率限定最小帧长
D. 当信号传播延迟趋近于0时,信道利用率趋近100%
解析
- 选项A的描述正确,其所描述的是CSMA/CD协议中的“碰撞检测(冲突检测)CD”。
- 选项B的描述错误,因为CSMA/CD协议不适用于无线网络。对于802.11无线局域网,可以使用CSMA/CA协议。
- 选项C的描述正确,因为“最小帧长 = 数据传输速率 ×争用期2τ ” 。也就是说,最小帧长取决于数据传输速率和争用期2τ。选项C中给出的“网络跨距”相当于给出了“端到端单程传播时延τ”,进而可得出“争用期2τ ”。
- 选项D的描述正确,因为选项D中给出“信号传播延迟趋近于0”,这相当于信号瞬间到达整个网络,网络中各站点瞬间就知道总线被占用,因此不会出现碰撞,进而使信道利用率趋近100%
3.4.3 使用集线器的共享式以太网¶
- 早期的传统以太网是使用粗同轴电缆的共享总线以太网,后来发展到使用价格相对便宜的细同轴电缆。
- 当初认为这种连接方法既简单又可靠,因为在那个时代普遍认为有源器件不可靠,而无源的电缆线才是最可靠的。
- 然而,实践证明这种使用无源电缆线和大量机械接口的总线型以太网并不像人们想象的那么可靠。

若总线上的某个机械连接点接触不良或断开,则整个网络通信就不稳定或彻底断网.
- 在使用细同轴电缆的共享总线以太网之后,以太网发展出来了一种使用大规模集成电路来替代总线、并且可靠性非常高的设备,叫作集线器(Hub)
- 站点连接到集线器的传输媒体也转而使用更便宜、更灵活的双绞线电缆

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

- IEEE于1990年制定了10BASE-T星型以太网的标准802.3i,这种以太网是局域网发展史上的一座非常重要的里程碑,它为以太网在局域网中的统治地位奠定了牢固的基础。
- 10BASE-T以太网的通信距离较短,每个站点到集线器的距离不能超过100m。
- IEEE 802.3以太网还可使用光纤作为传输媒体,相应的标准为10BASE-F,“F”表示光纤。光纤主要用作集线器之间的远程连接

3.4.4 在物理层扩展以太网¶
3.4.4.1 扩展站点与集线器之间的距离¶
- 共享总线以太网中两站点之间的距离不能太远,否则它们之间所传输的信号就会衰减到使CSMA/CD协议无法正常工作
- 在早期广泛使用粗同轴电缆或细同轴电缆共享总线以太网时,为了提高网络的地理覆盖范围,常用的是工作在物理层的转发器
- IEEE 802.3标准规定,两个网段可用一个转发器连接起来,任意两个站点之间最多可以经过三个网段

- 随着使用双绞线和集线器的10BASE-T星型以太网成为以太网的主流类型,扩展网络覆盖范围就很少使用转发器了
- 10BASE-T星型以太网中每个站点到集线器的距离不能超过100m,因此两站点间的通信距离最大不能超过200m。
- 在10BASE-T星型以太网中,可使用光纤和一对光纤调制解调器来扩展站点与集线器之间的距离。
- 这种扩展方法比较简单,所需付出的代价是:为站点和集线器各增加一个用于电信号和光信号转换的光纤调制解调器,以及它们之间的一对通信光纤
- 信号在光纤中的衰减和失真很小,因此使用这种方法可以很简单地将站点与集线器之间的距离扩展到1000以上

3.4.4.2 扩展共享式以太网的覆盖范围和站点数量¶
- 以太网集线器一般具有8~32个接口,如果要连接的站点数量超过了单个集线器能够提供的接口数量,就需要使用多个集线器,这样就可以连接成覆盖更大范围、连接更多站点的多级星型以太网
- 采用多个集线器连接而成的多级星型以太网,在扩展了网络覆盖范围和站点数量的同时,也带来了一些负面因素。


在物理层扩展的共享式以太网仍然是一个碰撞域,不能连接太多的站点,否则可能会出现大量的碰撞,导致平均吞吐量太低。
3.4.5 在数据链路层扩展以太网¶
3.4.5.1 使用网桥在数据链路层扩展以太网¶

- 网桥(bridge)工作在数据链路层(包含其下的物理层),因此网桥具备属于数据链路层范畴的相关能力。
- 网桥可以识别帧的结构
- 网桥可以根据帧首部中的目的MAC地址和网桥自身的帧转发表来转发或丢弃所收到的帧
3.4.5.2 网桥的主要结构和基本工作原理¶






3.4.5.3 透明网桥的自学习和转发帧的流程¶
- 透明网桥通过自学习算法建立转发表。
- 透明网桥中的“透明”,是指以太网中的各站点并不知道自己所发送的帧将会经过哪些网桥的转发,最终到达目的站点。也就是说,以太网中的各网桥对于各站点而言是看不见的。
- 透明网桥的标准是IEEE 802.1D,它通过一种自学习算法基于以太网中各站点间的相互通信逐步建立起自己的转发表。





- 网桥收到帧后进行登记(即自学习),登记的内容为帧的源MAC地址和进入网桥的接口号。
- 网桥根据帧的目的MAC地址和网桥的转发表对帧进行转发,包含以下三种情况:
- 明确转发:网桥知道应当从哪个接口转发帧。
- 盲目转发:网桥不知道应当从哪个接口转发帧,只能将其通过除进入网桥的接口外的其他所有接口转发。
- 丢弃:网桥知道不应该转发该帧,将其丢弃
Info
注意:
- 如果网桥收到有误码的帧则直接丢弃
- 如果网桥收到一个无误码的广播帧,则不用进行查表,而是直接从除接收该广播帧的接口的其他接口转发该广播帧
- 转发表中的每条记录都有其有效时间,到期自动删除!这是因为各站点的MAC地址与网桥接口的对应关系并不是永久性的,例如某个站点更换了网卡,其MAC地址就会改变
3.5 交换式以太网¶
3.5.1 交换式以太网¶
- 网桥的接口数量很少,通常只有2~4个,一般只用来连接不同的网段
- 1990年面世的交换式集线器(Switching Hub),实质上是具有多个接口的网桥,常称为以太网交换机(Switch)或二层交换机。
- “二层”是指以太网交换机工作在数据链路层(包括物理层)。
- 与网桥相同,交换机内部的转发表也是通过自学习算法,基于网络中各主机间的通信,自动地逐步建立起来的。
- 另外,交换机也使用生成树协议STP,来产生能够连通全网但不产生环路的通信路径。
- 仅使用交换机(而不使用集线器)的以太网就是 交换式以太网


3.5.2 以太网交换机¶
- 以太网交换机(以下简称交换机)本质上就是一个多接口的网桥:交换机 自学习和转发帧 的流程与网桥是相同的
- 交换机的每个接口可以连接计算机,也可以连接集线器或另一个交换机。
- 当交换机的接口与计算机或交换机连接时,可以工作在全双工方式,并能在自身内部同时连通多对接口,使每一对相互通信的计算机都能像独占传输媒体那样,无碰撞地传输数据,这样就不需要使用CSMA/CD协议了
- 当交换机的接口连接的是集线器时,该接口就只能使用CSMA/CD协议并只能工作在半双工方式。
- 现在的交换机和计算机中的网卡都能自动识别上述两种情况,并自动切换到相应的工作方式。

- 交换机一般都具有多种速率的接口,例如10Mb/s、100Mb/s、1Gb/s甚至10Gb/s的接口,大部分接口支持多速率自适应
【练习题】交换机自学习和转发帧的流程(参考网桥自学习和转发帧的流程)

解析:

- 一般的交换机都采用“存储转发”方式,为了减小交换机的转发时延,某些交换机采用了直通(Cut-Through)交换方式。
- 采用直通交换方式的交换机,在接收帧的同时就立即按帧的目的MAC地址决定该帧的转发接口,然后通过其内部基于硬件的交叉矩阵进行转发,而不必把整个帧先缓存后再进行处理。
- 直通交换的时延非常小。
- 直通交换不检查差错就直接将帧转发出去,有可能会将一些无效帧转发给其他主机。
【2013年 题38】对于100Mbps的以太网交换机,当输出端口无排队,以直通交换(cut-through switching)方式 转发一个以太网帧(不包括前导码)时,引入的转发延迟至少是( )
A. 0μs B. 0.48μs C. 5.12μs D. 121.44μs
解析:

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

假设交换机的转发表已经学习到了所有主机与自己各接口的对应关系




交换式以太网的网络性能远高于共享式以太网,集线器早已被交换机取代。
【2015年 题37】下列关于交换机的叙述中,正确的是( )。
A. 以太网交换机本质上是一种多端口网桥
B. 通过交换机互连的一组工作站构成一个冲突域
C. 交换机每个端口所连网络构成一个独立的广播域
D. 以太网交换机可实现采用不同网络层协议的网络互联
解析
选A
D的解释
以太网交换机工作在数据链路层(包含其下的物理层),因此以太网交换机具备属于数据链路层范畴的相关能力。但不同网络层协议的网络互联属于网络层范畴,以太网交换机无法处理。
3.6 以太网V2的MAC帧格式¶

- 目的地址与源地址 : 用来填入帧的目的MAC地址和源MAC地址
- 类型字段 : 其值用来指明数据载荷中的内容是由上一层的哪个协议封装的,以便将收到的MAC帧的数据载荷上交给上一层的这个协议


- 数据载荷最小46B , 满足最小帧长为64B的要求( 6B + 6B + 2B + 46B + 4B = 64B ),数据载荷的最大长度被限制为1500B

- 接收方可能收到的无效MAC帧包括以下几种:
- MAC帧的长度不是整数个字节
- 通过MAC帧的FCS字段的值检测出帧有误码
- MAC帧的长度不在64~1518字节之间
接收方收到无效的MAC帧时,就简单将其丢弃,以太网的数据链路层没有重传机制
3.7 虚拟局域网VLAN¶
3.7.1 虚拟局域网VLAN的诞生背景¶
- 将多个站点通过一个或多个以太网交换机连接起来就构建出了交换式以太网。
- 交换式以太网中的所有站点都属于同一个广播域。
- 随着交换式以太网规模的扩大,广播域也相应扩大
- 巨大的广播域会带来一系列问题
- 广播风暴(广播风暴会浪费网络资源和各主机的CPU资源)
- 难以管理和维护,带来潜在的安全问题。

- 分割广播域的方法
- 使用路由器可以隔离广播域(成本较高)


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


- 属于同一VLAN的站点之间可以直接进行通信,而不同VLAN中的站点之间不能直接通信。
- 网络管理员可对局域网中的各交换机进行配置来建立多个逻辑上独立的VLAN。
- 连接在同一交换机上的多个站点可以属于不同的VLAN,而属于同一VLAN的多个站点可以连接在不同的交换机上。
Info
虚拟局域网VLAN并不是一种新型网络,它只是局域网能够提供给用户的一种服务
3.7.3 虚拟局域网VLAN的实现机制¶
- 虚拟局域网VLAN有多种实现技术,最常见的就是基于以太网交换机的接口来实现VLAN。这就需要以太网交换机能够实现以下两个功能:
- 能够处理带有VLAN标记的帧,也就是IEEE 802.1Q帧。
- 交换机的各接口可以支持不同的接口类型,不同接口类型的接口对帧的处理方式有所不同。
- IEEE 802.1Q帧也称为Dot One Q帧,它对以太网V2的MAC帧格式进行了扩展:在源地址字段和类型字段之间插入了4字节的VLAN标签(tag)字段。


- 标签协议标识符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帧时也有可能不进行“去标签”处理,是否进行“去标签”处理取决于交换机的接口类型。
- 根据接口在接收帧和发送帧时对帧的处理方式的不同,以及接口连接对象的不同,以太网交换机的接口类型一般分为Access和Trunk两种。
- 当以太网交换机上电启动后,若之前未对其各接口进行过VLAN的相关设置,则各接口的接口类型默认为Access,并且各接口的缺省VLAN ID为1,即各接口默认属于VLAN1。
- 对于思科交换机,接口的缺省VLAN ID称为本征VLAN(Native VLAN)。
- 对于华为交换机,接口的缺省VLAN ID称为端口VLAN ID(Port VLAN ID),简记为PVID。
- 交换机的每个接口有且仅有一个PVID
【例1】在一个交换机上不进行人为的VLAN划分,交换机各接口默认属于VLAN1且类型为Access的情况。


【例2】在一个交换机上划分两个不同VLAN的情况。





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


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




3.8 以太网的发展¶

- 100BASE-T以太网
- 是指在双绞线上传输基带信号的速率为100Mb/s的以太网,也称为快速以太网(Fast Ethernet)
- 100BASE-T以太网与10Mb/s标准以太网(传统以太网)一样,仍然使用IEEE 802.3的帧格式和CSMA/CD协议。
- 100BASE-T以太网为了与10Mb/s标准以太网保持兼容,需要以太网最小帧长保持不变,即仍为64字节。
- 网段的最大电缆长度从1000m减小到100m
- 争用期缩短为5.12μs
- 帧间最小间隔缩短为0.96μs
Info
100BASE-T以太网还可以使用以太网交换机来提供比集线器更好的服务质量,即在全双工方式下无碰撞工作。因此,使用交换机的100BASE-T以太网,工作在全双工方式下,并不使用CSMA/CD协议。
- 除100BASE-T以太网外,百兆以太网有多种不同的物理层标准:

- 吉比特以太网
- 吉比特以太网也称为千兆以太网(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,因此只有减小网段最大长度或增大最小帧长,才能使3.4.2节中介绍的以太网的参数a(τ∕T_0)保持为较小的数值。
- 若将网段最大长度减小到10m,则网络基本失去了应用价值。
- 若将最小帧长增大到640字节,则当上层交付的待封装的协议数据单元PDU很短时,开销就会太大。
Info
千兆以太网的网段最大长度仍保持为100m,最小帧长仍保持为64字节(与10BASE-T和100BASE-T兼容)
- 这就需要使用载波延伸(Carrier Extension)的办法,将争用期增大为512字节的发送时间而保持最小帧长仍为64字节。
- 只要发送的MAC帧的长度不足512字节时,就在MAC帧尾部填充一些特殊字符,使MAC帧的长度增大到512字节。

- 在使用载波延伸的机制下,如果原本发送的是大量的64字节长的短帧,则每一个短帧都会被填充448字节的特殊字符,这样会造成很大的开销。
- 因此,千兆以太网还使用了分组突发(Packet Bursting)功能。也就是当有很多短帧要连续发送时,只将第一个短帧用载波延伸的方法进行填充,而其后面的一系列短帧不用填充就可一个接一个地发送,它们之间只需空开必要的帧间最小间隔即可。
- 这样就形成了一连串分组的突发,当累积发送1500字节或稍多一些为止。
- 当千兆以太网工作在全双工方式时,不使用CSMA/CD协议,也不会使用载波延伸和分组突发

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

- 10吉比特以太网
- 10GE也称为万兆以太网。
- 万兆以太网并不是将千兆以太网的速率简单地提高了10倍。万兆以太网的目标是将以太网从局域网范围(校园网或企业网)扩展到城域网与广域网,成为城域网和广域网的主干网的主流技术之一。
- IEEE 802.3ae万兆以太网的主要特点有
- 速率为10Gb/s
- 使用IEEE 802.3标准的帧格式(与10Mb/s、100Mb/s和1Gb/s以太网相同)
- 保留IEEE 802.3标准对以太网最小帧长和最大帧长的规定。这是为了用户升级以太网时,仍能和较低速率的以太网方便地通信
- 只工作在全双工方式而不存在争用媒体的问题,因此不需要使用CSMA/CD协议,这样传输距离就不再受碰撞检测的限制
- 增加了支持城域网和广域网的物理层标准
- 万兆以太网交换机常作为千兆以太网的汇聚层交换机,与千兆以太网交换机相连,还可以连接对传输速率要求极高的视频服务器、文件服务器等设备。

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

- 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标准的帧格式并遵守最小帧长和最大帧长的规定。
3.9 802.11无线局域网¶
3.9.1 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无线局域网

- 如图是802.11无线局域网的有固定基础设施的组网方式,采用星型网络拓扑,位于其中心的基站被称为接入点(Access Point,AP)。
- 802.11无线局域网的最小构件称为基本服务集(Base Service Set,BSS)。在一个基本服务集中包含一个接入点和若干个移动站。
一个BSS可以是孤立的,也可以通过一个分配系统(Distribution System,DS)与其他BSS连接,这样就构成了一个扩展的服务集(Extended Service Set,ESS)

- DS最常用的是以太网,也可使用点对点链路或其他无线网络。DS的作用是使ESS对上层的表现就像一个BSS一样。也就是说,ESS对上层所呈现的仍然是一个局域网。另外,ESS还可为无线用户提供到其他非802.11无线局域网的接入,例如到有线连接的因特网。
- 图中,BSS1中的移动站A如果要给BSS2中的移动站B发送数据,其通信路径为A→AP1→AP2→B,也就是必须经过接入点AP1和AP2以及它们之间作为DS的以太网。注意,在一个ESS内的几个不同的BSS的信号覆盖范围也可能会有重叠。
- 图中还展示了移动站A从BSS1漫游到BSS2的情况。在漫游过程中,移动站A的接入点从BSS1中的AP1改为了BSS2中的AP2,但移动站A仍然可保持与移动站B的通信。
- 802.11标准并没有定义实现漫游的具体方法,仅定义了以下一些基本服务。
- 关联(Association)服务:移动站与接入点AP建立关联的方法有以下两种:
- 被动扫描

- 主动扫描

2. 重建关联服务和分离服务
如果一个移动站要把与某个接入点AP的关联转移到另一个AP,就可以使用重建关联服务;若要终止关联服务,就应使用分离服务
- 无固定基础设施的802.11无线局域网
- 自组织网络(ad hoc Network)

自组织网络组网方便,不需要基站,并且具有非常好的生存性,这使得自组织网络在军用和民用领域都有很好的应用前景。
3.9.2 802.11无线局域网的物理层¶
- 802.11无线局域网的物理层非常复杂,依据工作频段、调制方式、传输速率等,可将其分为多种物理层标准

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

3.9.3 802.11无线局域网使用CSMA/CA协议的原因¶
- 为了解决各站点争用总线的问题,共享总线以太网使用了一种专用协议CSMA/CD。同样使用广播信道的无线局域网能不能也使用CSMA/CD协议呢?
- 对于802.11无线局域网,其使用无线信道传输数据,这与共享总线以太网使用有线传输介质不同。因此,802.11无线局域网不能简单照搬共享总线以太网使用的CSMA/CD协议
- 802.11无线局域网采用了另一种称为CSMA/CA的协议,也就是载波监听多址接入/碰撞避免(Carrier Sense Multiple Access/Collision Avoidance,CSMA/CA)。
- CSMA/CA协议仍然采用CSMA/CD协议中的CSMA,以“先听后说”的方式来减少碰撞的发生,但是将“碰撞检测CD”改为了“碰撞避免CA”。
- 尽管CA表示碰撞避免,但并不能避免所有的碰撞,而是尽量减少碰撞发生的概率
- 802.11无线局域网不采用“碰撞检测CD”的原因如下:
- 由于无线信道的传输环境复杂且信号强度的动态范围非常大,在802.11无线网卡上接收到的信号强度一般都远远小于发送信号的强度,信号强度甚至相差百万倍。因此,如果要在802.11无线网卡上实现碰撞检测,对硬件的要求非常高
- 即使能够在硬件上实现碰撞检测功能,但由于无线电波传播的特殊性(存在 隐蔽站 问题),还会出现无法检测到碰撞的情况,因此实现碰撞检测并没有意义


在理想情况下,无线电波的传播范围是以发送站为圆心的一个圆形面积。假设无线移动站A和B同时向AP发送数据,A的无线信号无法到达B,B的无线信号也无法到达A。因此A和B都无法检测到对方的无线信号,也就误认为当前无线信道是空闲的,于是都向AP发送数据,这必然会造成AP收到的信号是A和B产生的碰撞信号。这种问题称为隐蔽站问题(Hidden Station Problem)。图中A和B互为隐蔽站,它们彼此都检测不到对方发送的信号。请读者注意,即使A和B相距很近,若它们之间有障碍物,也有可能出现隐蔽站问题。
Info
无线局域网不能简单照搬共享总线以太网(有线局域网)使用的CSMA/CD协议,而是不再实现碰撞检测CD功能,但在CSMA的基础上增加碰撞避免CA功能,即使用CSMA/CA协议
3.9.4 CSMA/CA协议的基本工作原理¶

- 当源站要发送它的第1个数据帧时,若检测到信道空闲,则在等待DIFS间隔后就可发送。等待DIFS间隔是考虑到可能有其他的站有高优先级的帧要发送。现在假设没有其他高优先级帧要发送,因而源站就发送了自己的数据帧。
- 目的站若正确收到该帧,则经过SIFS间隔后,向源站发送确认帧(ACK)。若源站在重传计时器设置的超时时间内没有收到ACK,就必须重传之前已发送的数据帧,直到收到ACK为止,或者经过若干次的重传失败后放弃发送。
- 图中还展示了其他站通过虚拟载波监听调整自己的网络分配向量(NAV,即信道被占用时长)的情况。在NAV这段时间内,若其他站也有帧要发送,就必须推迟发送。在NAV这段时间结束后,再经过一个DIFS间隔,然后还要退避一段随机时间后才能发送帧。
- 帧间间隔
802.11无线局域网规定,每个站点必须在持续检测到信道空闲一段指定的时间后才能发送帧,这段时间称为帧间间隔(Interframe Space,IFS)。IFS的长短取决于站点要发送的帧的类型。低优先级的帧需要等待较长的时间,而高优先级的帧需要等待的时间较短,因此高优先级的帧可优先获得发送权。若低优先级的帧还没来得及发送,而其他站的高优先级的帧已发送到信道上,则信道变为忙态,因而低优先级的帧就只能再推迟发送了,这样就可减少发生碰撞的概率。各种帧间间隔的具体长度,取决于所使用的物理层特性。最常用的两种帧间间隔如下:
- <strong>短帧间间隔SIFS(Short IFS)</strong>。SIFS的长度为<strong>28us</strong>,它是最短的帧间间隔,<strong>用来分隔开属于一次对话的各帧</strong>。<strong>一个站点应当能够在这段时间内从发送方式切换到接收方式</strong>。使用SIFS的帧类型有<strong>ACK帧、CTS帧</strong>、由过长的MAC帧分片后的数据帧,以及所有回答AP探询的帧和在PCF方式中AP发送出的任何帧。
- <strong>DCF帧间间隔DIFS(DCF IFS)</strong>。DIFS的长度为<strong>128us</strong>,它比SIFS要长很多。在DCF方式中,<strong>DIFS用来发送数据帧和管理帧。(如上图,在发送数据帧之前等待DIFS间隔是考虑到可能有其他的站有高优先级的帧要发送)</strong>
- 虚拟载波监听
- 802.11无线局域网还采用了虚拟载波监听(Virtual Carrier Sense)机制,目的就是让源站把它要占用信道的时间(包括目的站发回确认帧所需的时间)及时通知给所有其他站,以便使其他所有站在这一段时间都停止发送帧,这样就大大减少了碰撞概率。
- 当某个站检测到正在信道中传送的帧首部中的“持续时间”字段时,就调整自己的网络分配向量(Network Allocation Vector,NAV)。NAV指出了必须经过多长时间才能完成帧的这次传输、才能使信道转入空闲状态。因此,某个站认为信道处于忙态就有以下两种可能:
- 由于其物理层的载波监听检测到信道忙
- 由于MAC层的虚拟载波监听机制指出了信道忙。
-
确认机制
尽管802.11无线局域网中的各站点使用CSMA/CA协议来争用信道(其中CA的意思是碰撞避免),但并不能完全避免碰撞,而是尽量减少碰撞发生的概率。另外,<strong>由于无线信道的误码率较高,CSMA/CA还需使用停止-等待的确认机制来实现 可靠传输 ,这与使用CSMA/CD的共享式以太网不同</strong>。使用CSMA/CD的共享式以太网实现的是不可靠传输,发送方把数据发送出去就不管了(若检测到碰撞还是必须要重传的),而可靠传输由高层负责。 -
退避算法
1)为了尽量避免碰撞,CSMA/CA采用了一种不同于CSMA/CD的退避机制。
- 对于CSMA/CA,当某个要发送帧的站检测到信道从忙态变为空闲时,除了要等待一个DIFS的间隔,还要退避一段随机的时间以后再次重新试图接入到信道。
- 对于CSMA/CD,当某个要发送帧的站监听到信道变为空闲且持续96个比特时间后,就立即发送帧,同时进行碰撞检测。如果检测到碰撞,才执行退避算法。当某个站点在发送帧时,很可能有多个站都在监听信道并等待发送帧,一旦信道空闲,这些站几乎同时发送帧而产生碰撞。
- CSMA/CD通过碰撞检测能及时停止发送遭遇碰撞的无效帧,这样就可立即使信道恢复到空闲状态,被浪费的网络资源很少。
- CSMA/CA并没有像CSMA/CD这样的碰撞检测机制,因此在信道从忙态转为空闲时,为了避免多个站同时发送帧,所有要发送帧的站就都要执行退避算法。这样做不仅可以大大减少发生碰撞的概率,而且还可避免某个站长时间占用无线信道。

2)退避算法的执行
在CSMA/CA协议中,当要发送帧的站检测到信道从忙态转为空闲时,就要执行退避算法。
- 在执行退避算法时,各站都会给自己的退避计时器(BackoffTimer)设置一个随机的退避时间 :
- 当退避时间减小到零时,就开始发送帧。
- 当退避时间还未减小到零而信道又转变为忙态时,就冻结退避计时器的退避时间,重新等待信道变为空闲,再经过DIFS的间隔后,继续启动退避计时器,退避计时器从剩余时间开始继续倒计时。
- 在进行第\(i\)次退避时,退避时间在时隙编号{\(0,1,… ,2^{2+i}−1\)}中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。当时隙编号达到255时(对应于第6次退避)就不再增加了

注意,当某个站要发送数据帧时,仅有一种情况下不使用退避算法,即检测到信道空闲,并且该数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧。除此之外的以下情况,都必须使用退避算法:
- <strong>在发送帧之前检测到信道处于忙态时</strong>
- <strong>在每一次重传一个帧时。</strong>
- <strong>在每一次成功发送后要连续发送下一个帧时。</strong>
3)退避时间的选择
CSMA/CA使用的退避算法与CSMA/CD类似,都是二进制指数退避算法,但CSMA/CA将随机选择退避时间的范围扩大了。也就是: 第i次退避就在\(2^{2+i}\)个时隙中随机地选择一个。例如,第1次退避是在8个时隙(而不是2个)中随机选择一个,而第2次退避是在16个时隙(而不是4个)中随机选择一个。
- 信道预约
为了进一步降低发生碰撞的概率,802.11无线局域网允许源站对信道进行预约。
- 源站在发送数据帧之前先发送一个短的控制帧,称为请求发送(RequestToSend,RTS)。RTS帧包括源地址、目的地址和本次通信(包括目的站发回确认帧所需的时间)所需的持续时间。请读者注意,源站在发送RTS帧之前,必须先检测信道。若信道空闲,则等待DIFS间隔后,就能够发送RTS帧了。
- 若目的站正确收到源站发来的RTS帧,且媒体空闲,等待SIFS间隔后就发送一个响应控制帧,称为允许发送(Clear To Send,CTS)。CTS帧也包括本次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)。
- 源站收到CTS帧后,再等待SIFS间隔后,就可发送数据帧。
- 若目的站正确收到了源站发来的数据帧,则等待SIFS间隔后,就向源站发送确认帧。
- 除源站和目的站的其他各站,在收到CTS帧或数据帧后就推迟访问信道。这样就确保了源站和目的站之间的通信不会受到其他站的干扰。

图中,除源站和目的站的其他各站,在收到CTS帧或数据帧后就推迟访问信道。这样就确保了源站和目的站之间的通信不会受到其他站的干扰。若RTS帧发生碰撞,源站就不可能收到CTS帧,源站会执行退避算法重传RTS帧。
很显然,使用RTS帧和CTS帧进行信道预约会带来额外的开销。但由于RTS帧和CTS帧都很短,所以发生碰撞的概率、碰撞产生的开销以及本身的开销都很小。对于一般的数据帧,其发送时延往往远大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。尽管如此,802.11无线局域网仍为用户提供了以下三种选择:
- <strong>使用RTS帧和CTS帧</strong>。
- <strong>只有当数据帧的长度超过某个数值时才使用RTS帧和CTS帧</strong>(很显然,若数据帧本身很短,再使用RTS帧和CTS帧的意义就不大了)。
- <strong>不使用RTS帧和CTS帧</strong>。
由于RTS帧和CTS帧都会携带通信需要持续的时间,这与之前介绍过的数据帧可以携带通信所需持续时间的虚拟载波监听机制是一样的,因此使用RTS帧和CTS帧进行信道预约,也属于虚拟载波监听机制。
利用虚拟载波监听机制,站点只要监听到数据帧、RTS帧或CTS帧中的任何一个,就能知道信道将被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。如下图互为隐蔽站的A和B,虽然B监听不到A发送给AP的RTS帧,但却能监听到AP应答给A的CTS帧,B根据CTS帧中的持续时间修改自己的网络分配向量(NAV),在NAV指示的时间内虽然B监听不到A发送给AP的帧,但B也不会发送帧干扰A和AP的通信。


3.9.5 802.11无线局域网的MAC帧¶

802.11无线局域网的数据帧格式

- 帧头:共30字节,包含相关控制信息和地址信息
- 数据:0~2312字节,这是帧的数据部分,主要用来存放上层交付下来的待传送的协议数据单元。尽管数据载荷的最大长度为2312字节,但通常802.11无线局域网的数据帧的长度都不超过1500字节。
- 帧尾:共4字节,用于存放帧检验序列,采用CRC检验码。
对于帧头
- 持续期:用于实现CSMA/CA的虚拟载波监听和信道预约机制。在数据帧、RTS帧和CTS帧中用该字段指出将要持续占用信道的时长
- 序号控制:用来实现802.11的可靠传输,对数据帧进行编号
- 其他:


在有固定基础设施(即AP)的基本服务集中,不管站点要与本BSS内的站点通信,还是要与本BSS外的站点通信,都必须通过本BSS的AP进行转发,而源站点并不知道目的站点是否与自己在同一个BSS内。
下图展示的是BSS1中的站点A给B发送数据帧的情况。

- A需要把数据帧发送给AP1,数据帧首部中的帧控制字段中的“去往DS”和“来自DS”位的值分别设置为1和0,并且地址1字段的值设置为AP1的MAC地址(AP的MAC地址在802.11标准中称为基本服务集标识符BSSID),地址2字段的值设置为A的MAC地址,地址3字段的值设置为B的MAC地址,而地址4字段未被使用。
- AP1收到来自A的数据帧后,会将数据帧转发给B。数据帧首部中的帧控制字段中的“去往DS”和“来自DS”位的值分别设置为0和1,并且地址1字段的值设置为B的MAC地址,地址2字段的值设置为AP1的MAC地址,地址3字段的值设置为A的MAC地址,而地址4字段也未被使用。


上图中,若站点A要向位于DS的路由器R发送数据帧,这与站点A向B发送数据帧的情况类似。

- A需要把数据帧发送给AP1,由于DS是以太网,因此AP1会将802.11帧转换为以太网帧转发给R。这时以太网帧中的源地址和目的地址分别是A和R的MAC地址。
- 当R给A发回响应帧时,以太网帧中的源地址和目的地址分别是R和A的MAC地址(注意没有AP1的MAC地址),AP1收到该以太网帧后会将其转换成802.11帧转发给A。可见,AP具有网桥功能。

注意
- 802.11帧中必须要携带AP的MAC地址,而以太网帧中却不需要携带AP的MAC地址。在以太网中,AP与透明网桥一样,对各站点是透明的,因此以太网帧中就不需要指出AP的MAC地址。然而在802.11无线局域网中,在站点的信号覆盖范围内可能会有多个AP共享同一个物理信道,但站点只能与其中的一个AP建立关联,因此802.11帧中就必须携带AP的MAC地址(即站点所在BSS的BSSID)来明确指出转发该帧的AP。
- 帧控制字段中的“去往DS”和“来自DS”位的值都为0的情况,被用于802.11的自主网络模式。当通信的两个站点位于同一个独立的BSS时,它们之间可以直接通信而不需要AP的转发。数据帧首部中的地址1字段的值设置为目的站的MAC地址,地址2字段的值设置为源站的MAC地址,地址3字段的值设置为这些站点所属同一个BSS的ID,即BSSID。
- 帧控制字段中的“去往DS”和“来自DS”位的值都为1的情况,被用于连接多个BSS的分配系统(DS)也是一个802.11无线局域网的情况。例如,在上图中,若DS也是802.11无线局域网,位于BSS1的站点A发送数据帧给位于BSS2的站点C,当AP1通过无线DS将数据帧转发给AP2时,帧控制字段中的“去往DS”和“来自DS”位的值都被设置为1,并且地址1字段的值设置为AP2的MAC地址,地址2字段的值设置为AP1的MAC地址,地址3字段的值设置为站点C的MAC地址,地址4字段的值设置为站点A的MAC地址。但是,若DS是以太网,则AP1转发给AP2的就是以太网帧,帧中仅携带站点A和C的MAC地址,而不携带AP1和AP2的MAC地址。
