[计网]数据链路层 湖科大第三章

数据链路层

概述

链路(link):从一个结点到相邻节点的一段物理线路,而中间没有任何其他的交换结点。

数据链路(Data Link) :是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。

数据链路层以帧为单位传输和处理数据

意义:在物理层提供服务的基础上向网络层提供服务。

数据链路层的功能:加强物理层传输原始比特流的功能,将可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

数据链路层的三个信道:

1.点对点信道(我们在介绍时一般使用)

2.交换式局域网

3.共享式局域网(使用广播信道的数据链路层)

交换式局域网在有线领域已经完全取代了共享式。

由于无线信道的广播天性,无线局域网使用的仍然是共享信道技术。

使用点对点信道的数据链路层

三个重要问题:

  • 封装成帧:在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。一个作用是帧定界。

  • 差错检测:判断传输过程中是否出现误码(1变0,0变1)

  • 可靠传输:实现发送方发送什么,接收方就能收到什么

使用点对点信道的数据链路层

两个重要问题:

  • 共享式以太网的媒体接入控制协议CSMA/CD

  • 802.11局域网的媒体接入控制协议CSMA/CA

数据链路层的互连设备

  • 网桥和交换机的工作原理

  • 集线器(物理层互连设备) 与交换机的区别

封装成帧

封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

  • 帧头和帧尾中含有重要的控制信息

  • 帧头帧尾的作用之一就是帧定界 (变成比特传输后据此区分每个帧的起始和结束)

  • 为了提高帧的传输效率,应当使帧的数据部分长度尽可能大

  • 考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maximum Transfer Unit)


前导码

但比不是每一种数据链路层协议的帧都包含有帧定界标志,也可以使用前导码:

前导码

  • 前同步码:作用是使接收方的时钟同步

  • 帧开始定界符:表明其后面紧跟着的就是MAC帧

另外以太网还规定了帧间间隔为96比特时间,因此,MAC帧不需要帧结束定界符

透明传输

透明:指某一个实际存在的事物看起来却好像不存在一样。

透明传输是指数据链路层对上层交付的传输数据没有任何限制,好像数据链路层不存在一样。

帧界定标志也就是个特定数据值,如果在上层交付的协议数据单元中, 恰好也包含这个特定数值,接收方就不能正确接收。

所以必须要确保帧的唯一性

解决方法

  • 面向字节的物理链路使用字节填充 (byte stuffing) (又称字符填充 character stuffing)。

    发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B)。

    接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。

    如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

  • 面向比特的物理链路使用比特填充的方法实现透明传输。

    例如,假设帧是0111110 ,发送前对数据单元进行扫描,每5个连续的1后面提前插入一个0。接收方在接受时,将那个增补的0剔除即可。

差错检测

  • 实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能变成0,0可能变成1。这叫比特差错

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

    错误比特/总比特 的比率即误码率

  • 使用差错检测码(如Mac帧尾的FCS)来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一、

奇偶校验码

在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中"1"的个数为奇数(奇校验)或为偶数(偶校验)

比如发送数据001

  • 若是奇校验,则在数据后添加0,使其成为0001,1的个数为奇数。

    如果传输过程中发生了1位误码,则1的个数会变成偶数,据此判断是否发生误码;但是若发生了2个误码,1的个数依然为奇数,因此检查不出来

  • 若为偶校验,则在数据后添加1,使其成为1001,1的个数为偶数,其他情况与奇校验类似

但不管是奇校验还是偶校验,如果有奇数个位发生误码,则可以检查出误码,因为奇偶性发生变化; 如果有偶数个位发生误码,则不能检查出误码(漏检),因为奇偶性不发生变化。

循环冗余码CRC

  • 收发双方约定好一个生成多项式G(x)

  • 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输

  • 接收方通过生成多项式来计算收到的数据是否产生了误码

CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但易于用硬件实现,因此被广泛应用于数据链路层

检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。 要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。

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

可靠传输

不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做 可靠传输:想办法实现发送端发送什么,接收端就收到什么

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

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

  • 比特差错只是传输差错中的一种,从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。

  • 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输

  • 可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求

停止等待协议SW(stop-wait)

发送方发送数据DATA,接收方接收时进行差错检测 ①如果没有出现误码,则接收信息并返回ACK确认分组给发送方,发送方收到ACK后,一次通信结束 ②如果出现误码,则丢弃信息并返回NAK拒绝分组给发送方,发送方收到NAK后,重传DATA,直至出现步骤①的情况

发送方没有收到ACK确认分组,就不会进行下一次通信。故名“停止等待“。

机制补充:

  • 如果DATA传送过程中丢失了,即接收端一直等DATA,发送端一直等ACK,造成死锁,如何解决呢?

可以引入超时重传机制。可以在发送端设置一计时器(大约发送接收的平均时间),当发送端在这个时间内没有收到ACK或NAK时,就会判断DATA丢失,从而再次发送DATA,打破死锁

  • 如果ACK发送中丢失了,即接收方收不到ACK就将数据重新发送,而数据实际上接收方已经有了,因此重复接收,并返回ACK,造成错误,怎么办?

可以对每次发的DATA都加上序号,这样接收端就可以判断当前的数据是否有接收过,从而决定其去留

  • 如果发送端发送DATA 0,如果ACK由于某些原因使其到达接收端的时间变长了,那么根据超时重传,DATA 0会再次发送,而此时ACK到达,则发送方会认为这是后一次DATA 0的确认分组,于是马上发送DATA 1。而第二次发送的DATA 0此时返回ACK,发送方误以为是DATA 1的ACK,因此又会发送DATA2,而实际上DATA 1的是否误码等情况还不知道,因此出现了错误,这种情况怎么办?

可以为ACK加上编号。则每个ACK的相互作用就不会互串了。【对于数据链路层点对点信道,往返时间比较固定,不会出现确认迟到的情况,因此可以不给确认分组编号】

[计网]数据链路层 湖科大第三章_第1张图片

[计网]数据链路层 湖科大第三章_第2张图片

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

背景

停止-等待协议的信道利用率太低了,如果加上超时重传,利用率更低了!

之所以低还是因为”停止等待“。

所以GBN采用流水线传输,一次分组传输多个信息。

回退N帧:成批发送数据分组。但当一批数据分组到达接收方后,其中一个分组出现误码,其他的正确分组也会受到牵连。

所以通信线路质量不好时,GBN的信道利用率不比SW好多少

三个关键信息

  • 比特数目:比特数目决定允许一次发送的序号数量。

    如,3个比特可以表示序号 0~7 。

  • 发送窗口尺寸WT取值:l

    n 即比特数

  • 接收窗口尺寸WR取值:Wr = 1

    如果是2及以上,就变成选择重传了。

[计网]数据链路层 湖科大第三章_第3张图片

注意:Wt、Wr 是独立于发送序号的,且受发送需要的限制(必须小于序号个数-1).

累计确认

接收方对收到的数据分组不一定要逐个发送确认,而是可以在收到几个数据分组后 (由具体实现决定)按序到达的最后一个数据分组发送确认

即:ACKn表示序号为n及以前的所有数据分组都已正确接收。

优点:

  1. 节省资源

  2. 即使确认分组丢失,发送方也可能不必重传。

    注意是确认分组,不是数据。不要混淆。

缺点:不能向发送方及时反映出接收方已经接受的正确分组信息。

机制补充:

  • 发送的数据出现问题?

    接收方通过检错码,发现有数据出错,则丢弃该数据分组。继而向发送方发送之前接受的正确分组序号x 。

    错误分组之后的数据,有多少个,就向发送方发送多少个确认 x 的ACK。

    于是发送方收到重复确认就知道出现了差错,即可越过超时计时器,立即重传。

    (收到几个重复确认就立即重传由具体实现决定)

  • 若Wt超过取值范围,例如Wr=8,会出现什么情况?

    接收方无法分辨新旧数据分组!

    假设第一次发送数据,接收方成功接收。但接受确认ARK丢失了。这时发送方超时重传,接收方接受到数据分组后,因为Wr超过范围,使窗口内数据序号前后重合了,则接收方难以判断本次数据是第一次发送的还是第二次发送的。

[计网]数据链路层 湖科大第三章_第4张图片

选择重传协议SR(Selective Repeat)

背景:

  • 回退N帧协议的接收窗口尺寸Wr只能等于1,因此接收方只能按序接收正确到达的数据分组。

  • 一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃 (尽管它们 无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,这是对通信资源的 极大浪费

选择重传协议

为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸WR不应再等于1 (而应大于1),以便接收方先收下失序到达但无误码并且席号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。

这就是选择重传协议。

注意:选择重传协议为了使发送方仅重传出现差错的分组,接收方不再采用累积确认,而需对正确接收到的数掘分组进行逐一确认。

三个关键信息

  1. 比特数目:比特数目决定允许一次发送的序号数量。

    如,3个比特可以表示序号 0~7 。

  2. 发送窗口尺寸WT取值:l

    若 Wt = 1 :与停止等待协议相同

    若 Wt > 2^(n-1) :造成接收方无法分辨新、旧数据分组的问题

  3. 接收窗口尺寸WR取值:Wr = Wt 一般情况与发送窗口尺寸相同。

    若 Wr = 1 :与回退N帧协议相同

    若 Wr > 2^(n-1) :没意义,没用处。和不超出一样。

  • 发送方收到一个确认分组就往后滑动一位。除非该滑动分组前有未确认分组。

    如果收到确认分组却未滑动,则标记该分组为已成功发送,等待发送该分组前未确认发送的分组。

  • 接收方收到一个正确分组就往后滑动一位。除非该滑动分组前有错误(未接收)分组。

    如果收到正确分组却未滑动,则标记该分组为已成功接收,等待发送该分组前未成功接收的分组。

机制补充:

  • 为什么Wt的最大值是2^(n-1)而不是和GBN中的 (2^n)-1 一样?

    因为无论是GBN还是SR,都要求接收方接受数据分组时能分辨新旧数据分组。

    而GBN中的接收窗口固定为1,SR中的接收窗口不定。


    这里的2^(n-1) 可以拆分成 发送窗口+接受窗口 <= 2^n

    默认发送窗口和接收窗口大小一样的情况下,Wt = Wr <= 2^(n-1)

    此时 Wt + Wr <= 2^(n-1) + 2^(n-1) = 2^n。

    即使不一样的情况下,也要求Wt + Wr <= 2^n。


    那为什么满足这个条件就能保证新旧数组的区分呢?

    • 分辨新旧数据分组的关键在于,新分组和旧分组的序号不一致(不相同)

    接收方对旧分组的接受确认ARK丢失,再次接受发送方超时重传的数据时,只有发现序号不一致,才能发现ARK丢失,从而重新发回接受确认ARK,方便下一步传输。

    而 Wt + Wr > 2^n 的情况下,由于窗口内序号个数 > 总的序号表示个数,势必会发生序号相同的情况,也就难以分辨了。

[计网]数据链路层 湖科大第三章_第5张图片

PPP协议 (Point to Point Protocol

本身是一种数据链路层协议,用于规定帧格式。

应用场景:

一般用户接入因特网,需要通过连接某个因特网服务提供者 ISP(Internet Service Provider)来进入因特网。

中国 ISP (运营商): 中国联通,中国电信,中国移动。

因为这些 ISP 已经从因特网管理机构申请到了一批 IP 地址。用户的计算机只有获取到 ISP 所分配的合法 IP 地址后,才能成为 internet 上的主机。

用户计算机与 ISP 进行通信时,所使用的数据链路层协议就是 PPP 协议。

1999年公布的再以太网上运行的PPP协议,即 PPP over Ethernet ,简称 PPPoE 。它使得 ISP 可以通过 DSL、电路调制解调器、以太网等宽带接入技术,以以太网接口的形式为用户提供接入服务。

点对点服务PPP 也广泛应用于广域网路由器之间的专用线路。

PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:

  • 封装成帧:对各种协议数据报的封装方法。

  • 链路控制协议LCP:用于建立、配置以及测试数据链路的连接。

  • 一套网络控制协议NCPs : 其中的每一个协议支持不同的网络层协议。

    支持不同类型网络层协议:TCP/IP 中的IP、Novell NetWare 网络OS中的 IPX、苹果公司的Apple Talk。

    支持在多种类型的点对点链路(物理层)上运行:面向字节的异步链路、面向比特的同步链路。

帧格式

[计网]数据链路层 湖科大第三章_第6张图片

透明传输

  1. 字节填充法

    面向字节的异步链路采用插入转义字符的字节填充法

    • 如PPP帧的标志字段取值为7E(16进制),如果数据中出现7E则需要在数据前插入转义字符7D(16进制),并将原来的7E减20(16进制),所以7E在数据中最终会变成7D5E。

    • 如果数据中有转义字符7D怎么办呢?可以在转义字符7D前再加一个转义字符7D,并将数据的7D减20(16进制),于是转义字符7D在数据中最终会变成7D5D。

    • 数据中出现的每一个ASCII码控制字符【数值小于20(16进制)的字符】,则在该字符前插入一个7D,同时将该字符的编码加上20(16进制)。

    • 接收方只需要反变换即可恢复出原来的帧的数据部分。

  2. 比特填充法

    面向比特的同步链路采用插入比特0的比特填充法

    • 发送方:对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,则立即填充1个比特0。

    • 接收方:对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,就把其后的1个比特0删除

差错检测

接收方每收到一个PPP帧,就进行CRC检验(多项式)。若CRC检验正确,就收下这个帧;反之就丢弃这个帧(不可靠传输服务)。检验由尾部的FCS实现

用于检验的多项式为X16 + X12+X5+1

RFC1662 的附录部分,给了FCS的C语言实现(查表法)

[计网]数据链路层 湖科大第三章_第7张图片

最后,以拨号接入为例,介绍PPP协议的工作状态。

这里看书或者看原视频。


媒体接入控制

场景:以总线型局域网为例,一根同轴电缆上的多台主机同时发送数据,肯定会发生碰撞。

共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)

集中控制有多点轮询协议,分散控制有令牌传递协议。

静态划分信道

复用(Multiplexing):通过一条物理线路同时传输多路用户的信号。 当网络中传输媒体的传输容量大于多条单一信道的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。

分为四类:频分、时分、码分、波分。

频分:一条路同一时间走两种车;车与车之间间隔区分。

时分:一条路一种车只能在属于他的时间间隙经过;也就是依次按序串行。

波分、码分:给两种车分别编号(编码),到了终点再根据编号区分;

TDMA,FDMA,CDMA是常见的物理层信道复用技术,属于静态划分信道,用于多用户共享信道,不会发生冲突。

  • 频分复用FDM 将传输线路的频带资源划分成多个子频带,形成多个子信道。各子信道之间留出隔离频带,以免造成子信道间干扰。

    当多个信号输入一个多路复用器时,这个复用器将每一个信号调制到不同频率的载波上,接收端由相应的分用器通过滤波将各路信号分隔开,将合成的复用信号恢复成原始的多路信号。

    [计网]数据链路层 湖科大第三章_第8张图片

  • 时分复用TDM 将时间划分为一个个时隙,将带宽资源按照时隙轮流分配给不同的用户,每对用户只在所分配时隙里使用线路传输数据。

    时分复用技术将时间划分为一段段等长的时分复用帧,每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙。每个用户所占的时隙是周期性出现的,其周期就是时分复用帧的长度

    [计网]数据链路层 湖科大第三章_第9张图片

  • 波分复用WDM 波分复用其实就是光的频分复用。经过光复用器(合波器)的光调制,分别将光载波变换到不同波长。这些光波经过光复用器就可以在一根光纤中传输。到达终点后用光分用器将不同波长的光进行还原得到信息

    光信号传输一段距离后会衰减,对衰减的光信号必须进行放大才能继续传输。放大的工具是掺镇光纤放大器EDFA。

    [计网]数据链路层 湖科大第三章_第10张图片

  • 码分复用CDM

    CDM的每一个用户可以在同样的时间使用同样的频带进行通信,这是因为各用户使用了经过特殊挑选的不同码型,因此各用户之间不会造成干扰。

    频谱类似白噪声,抗干扰能力强。最初用于军事通信。后来技术发展成本低了,也用于民用通信。

    码片(chip):

    在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片。通常m的值是64或128; 使用CDMA的每一个站被指派一个唯一的m bit码片序列。

    1. 一个站如果要发送比特1,则发送它自己的m bit码片序列;

    2. 一个站如果要发送比特0,则发送它自己的m bit码片序列二进制反码。a

    这种通信方式又称”直接序列扩频DSSS“

    [计网]数据链路层 湖科大第三章_第11张图片

    [计网]数据链路层 湖科大第三章_第12张图片

[计网]数据链路层 湖科大第三章_第13张图片

[计网]数据链路层 湖科大第三章_第14张图片

复用和分址:

由于码分复用主要用于多址接入,人们更常用的名词是码分多址CDMA。

频分复用FDM和时分复用TDM同样可用于多址接入,

相应的名词是频分多址FDMA(Frequency Division Multiple Access)和时分多址TDMA(Time Division Multiple Access)。

  • 复用:将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。

  • 多址(多点接入):处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的 (对于无线广播或电视广播站就是这样)。

多址可以理解为并发,复用即并行。

CSMA/CD协议(随机接入)

总线局域网使用。

载波监听多址接入/碰撞检测 CSMA/CD (Carrier Sense Multiple Access/Collision Detection)

CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中 现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。

  • 多址接入MA:多个站连接在一条总线上,竞争使用总线。

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

    若检测到总线空闲96比特时间则发送这个帧; 若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。

    96比特时间是指发送96比特所耗费的时间,也称帧间最小间隔。

    作用是使接收方可以检测出一个帧的结束,同时也使得所有其他站点都能有机会平等竞争信道并发送帧。

  • 碰撞检测:每一个正在发送帧的站边发送边检测碰撞 (“边说边听”) 。

    一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送 (“一旦冲突,立即停说等待时机,重新再说”)

[计网]数据链路层 湖科大第三章_第15张图片

因为主机B先发送一段时间,所以主机C比主机B更早检测到碰撞。

争用期

最小帧长 为什么需要规定最小帧长?

假设A向D发送帧,如果帧很短的话,在2 τ (tau)内就会将帧发送完毕,帧发送完毕后不会进行碰撞检测而此时依然有发生碰撞的可能。所以必须保证在2 τ 时间内帧不会被发送完,在这段时间里能够保持碰撞检测。

  • 以太网规定最小帧长为64字节,即512比特(512比特即争用期)

    如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节

  • 以太网的最小帧长保证了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞

    这保证了两点:

    • 如果在争用期没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞。

    • 如果在争用期检测到碰撞就立即中止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的帧都是由于碰撞检测而异常中止的无效帧。

根据网络跨距(端到端传播时延tau)和数据传输速率限定最小帧长。

争用期 * 数据传输速率 = 最小帧长

最大帧长

为什么需要规定最大帧长?

当帧过长时,其他线路会迟迟得不到资源,同时也可能导致接收方缓冲区溢出,因此帧的最大长度也有规定。

[计网]数据链路层 湖科大第三章_第16张图片

退避算法

当帧发送碰撞后会停止发送,隔一段时间后再次发送,而具体隔多少时间再发送需要根据退避算法得出

信道利用率

每帧的发送时延为T0 ,传播时延为τ ,占用信道的时间为T0+τ 。

[计网]数据链路层 湖科大第三章_第17张图片

帧接收流程

[计网]数据链路层 湖科大第三章_第18张图片

不能用于无线网络

原因:

  1. 无线信道上冲突检测代价大

  2. 存在信号衰减问题

  3. 存在隐藏站点问题

  4. 存在暴露站点问题

CSMA/CA协议(随机接入)

无线局域网使用。

载波监听多址接入/碰撞避免 CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)

背景:

既然CSMA/CD协议已经成功地应用于使用广播信道的有线局域网,那么同样使用广播信道的无线局域网能不能也使用CSMA/CD协议呢?

对于CSMA:

在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以避免碰撞

对于CD:

在无线局域网中,不能使用碰撞检测CD,原因如下:

  1. 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求特别高。

  2. 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站的问题),进行碰撞检测的意义也不大(如下)。

而有线网络中信号会随着总线到达各个地方,不会出现隐蔽站。

[计网]数据链路层 湖科大第三章_第19张图片

引入:

CSMA/CA是指载波监听多址接入/碰撞避免,是802.11局域网采用的无线信道访问控制协议。

802.11局域网在使用CSMA/CA的同时,还使用停止-等待协议。这是因为无线信道的通信质量远不如有线信道,因此无线站点每发送完一个数据帧后,要等到收到对方的确认帧后才能继续发送下一帧;

所以由于不可能避免所有的碰撞并且无线信道误码率较高,802.11标准使用了数据链路层确认机制 (停止-等待协议) 来保证数据被正确接收。

802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能而不再实现碰撞检测功能。

802.11的MAC层 标准定义了两种不同的媒体接入控制方式

  • 分布式协调功能DCF(Distributed Coordination Function)。

    在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方式

  • 点协调功能PCF(Point Coordination Function)。

    PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用

帧间间隔IFS

802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS。

帧间间隔的长短取决于该站点要发送的帧的类型

  • 高优先级帧需要等待的时间较短,因此可优先获得发送权

  • 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这样就减少了发送碰撞的机会。

常用的两种帧间间隔如下

  • 短帧间间隔SIFS(28μm)。这是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型由ACK帧、CTS帧、由过长的MAC帧分片后的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧

  • DCF帧间间隔DIFS(128μs)。它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧

工作原理

[计网]数据链路层 湖科大第三章_第20张图片

  • DIFS时间 : 为什么源站检测到信道空闲后,还需要等待DIFS时间才将帧发送呢?

    因为其他站此时可能有优先级更高的帧需要发送,因此有DIFS时间进行缓冲,若这个时间内没有高优先级的帧要发送,则说明信道是真正的空闲

  • SIFS时间 : 为什么目的站接收到帧后还需要等到SIFS时间才返回ACK确认帧呢?

    SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧。这段时间内一个站点应当能够从发送方式切换到接收方式

  • 随机时间 : 当其他站要发送数据,但是发现此时信道正忙时就会退避一段时间,等信道不忙后再进行操作,接着等待DIFS时间(与①同理),但为什么等待了DIFS时间后还要退避一段随机时间呢?

    因为可能有多个站点在信道忙时都想发送帧,因此它们都会被搁置直至信道不忙,在DIFS时间后他们会同时发送,而实际上多个站点同时发送数据会碰撞。因此需要一个随机时间将他们进行错峰发送

退避算法

多个站点发送冲突时,各个站点需要退避一段随机时间再进行操作

以下情况必须使用退避算法

  • 在发送数据帧之前检测到信道处于忙状态时;

  • 在每一次重传一个数据帧时;

  • 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用通道)

过程

[计网]数据链路层 湖科大第三章_第21张图片

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

    • 当退避计时器的时间减小到0,就开始发送数据

    • 当退避计时器的时间还未减小到0时信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过DIFS后,继续启动退避计时器

  • 在进行第i次退避时,退避时间在时隙编号{0,1,2,4, ... , 2i+1-1}中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。这样做时为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255时(对应第6次退避)就不再增加了。

信道预约

为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约

[计网]数据链路层 湖科大第三章_第22张图片

下面我们分五步讨论信道预约的过程

  1. 源站在发送数据帧之前先发送一个短的控制帧,称为请求发生RTS,它包括源地址、目的地址以及这次通信(包括相应的确认帧)所需的持续时间

  2. 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS,它也包括这次通信所需的持续时间从RTS帧中将此持续时间复制到CTS帧中。

  3. 源站收到CTS帧后,再等待一段时间SIFS后,就可发送其数据帧

    • 如果RTS帧发送碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧。

    • 由于RTS帧和CTS帧很短,发生碰撞的概率、碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发就会浪费很多时间,因此用很小的代价对信道进行预约往往是值得的。

    802.11标准规定了3种情况供用户选择:

    • 使用RTS帧和CTS

    • 不使用RTS帧和CTS

    • 只有当数据帧的长度超过某一数值时才使用RTS帧和CTS

  4. 若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK

  5. 除源站和目的站以外的其他各站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会收到其他站的干扰。

虚拟载波监听

除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制

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

  • 如下图,AC虽然互相覆盖不到,但是C可收到B发出的关于A的CTS帧,从而得知A需要占用信道的时间。在这段时间里,C不发送数据,从而解决隐蔽站带来的碰撞问题

[计网]数据链路层 湖科大第三章_第23张图片


MAC地址、IP地址和ARP协议

  • MAC地址是以大网的MAC子层所使用的地址;

  • IP地址是TCP/IP体系结构网际层所使用的地址;

  • ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址。

MAC地址属于数据链路层

IP地址和ARP协议属于网际层

尽管IP地址和ARP协议属于TCP/IP体系结构的网际层(而不属于数据链路层),但是它们与MAC地址存在一定的关系,并且我们日常的网络应用都离不开MAC地址、IP地址以及ARP协议因此,我们将这三者放在一起讨论。

MAC地址

应用场景

  • 只有一条路径的信道不需要地址,因为没得选。

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

  • 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址

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

  • MAC地址有时也被称为物理地址。但是MAC地址不属于物理层而是属于数据链路层

  • 一般情况下,用户主机会包含两个网络适配器:

    1. 有线局域网适配器(有线网卡)

    2. 无线局域网适配器(无线网卡)

    每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。

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

    [计网]数据链路层 湖科大第三章_第24张图片

[计网]数据链路层 湖科大第三章_第25张图片

单播地址、广播地址与多播地址

  • 单播MAC地址:明确的目的MAC地址。将此地址填入帧的目的地址栏中,接收到该帧的主机将此地址与自身MAC地址进行匹配,若相同则接收,不同则丢弃。

  • 广播MAC地址:FF-FF-FF-FF-FF-FF,将此地址填入帧的目的地址栏中,接收到该帧的主机检索该地址发现是广播地址,因此接收该帧。

  • 多播地址:

    • MAC地址的第一字节第一位:取0为单播,取1为多播(组播)。

    • 第一字节第二位:取0为全球管理(全球唯一),取1为本地管理。

      所以MAC地址中第一字节后4比特为(1,3,5,7,9,B,D,F)时,MAC地址是多播地址。(第一位十六进制数不能除二时)

      将此地址填入帧的目的地址栏中,接收到该帧的主机将此多播地址与自己多播组列表中的地址进行逐一配对,如果有匹配的项,则接收,否则丢弃。

      每个用户都会给自己的主机配置多播组列表。

    • 注意:给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址。

所以一共有四种类型的多播地址:

  1. 全球管理-单播地址:厂商生产网络设备时给设备的各网络接口固化的MAC地址。

  2. 全球管理-多播地址:是标准网络设备所应支持的多播地址,用于特定功能。

    例如交换机生成树协议所需要的多播地址。

  3. 本地管理-单播地址:有网络管理员分配,会覆盖网络接口的全球管理单播地址(优先级高)。

  4. 本地管理-多播地址:用户对主机进行软件配置,以表明其属于哪些多播组。

    注意:剩余46位全为1时,就是广播地址FF-FF-FF-FF-FF-F F

MAC地址由48个比特构成,所以总地址数量:248,这四类MAC地址各占四分之一。

[计网]数据链路层 湖科大第三章_第26张图片

随机MAC地址

IP地址

应用场景:

MAC地址只能区分同一网络中的不同主机,不具备区分不同网络的功能,而IP地址可以通过网络号做到。

如果只是一个单独网络,不接入因特网,则使用MAC地址就足够了(这不是一般用户的应用方式) 如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用

IP地址是TCP/IP体系结构的网际层所使用的的地址。

IP地址是Internet上的主机和路由器所使用的的地址,由两部分信息构成

  • 网络编号:标识因特网上数以百万计的网络

  • 主机编号:标识同一网络上不同主机(或路由器各接口)

[计网]数据链路层 湖科大第三章_第27张图片

  • 数据报转发过程中源IP地址目的IP地址保持不变。

  • 数据包转发过程中源MAC地址目的MAC地址(由ARP协议获得)逐个链路改变。

  • 路由器上有路由表,记录了要到目的IP地址,先要走哪些路(即下一跳位置)。所以H1起初只带有目的IP地址,查询路由表后路由器指路,从而知道下一步该往哪里走,从而不断转发直至到达目的地。

ARP协议

地址解析协议ARP属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址

  • 数据的发送需要经过链路,仅仅知道IP地址是无法在数据链路层实现传输的,因此我们需要得到IP地址与MAC地址的对应关系,即地址解析。

  • 每台主机都会有一个ARP高速缓存表,记录有IP地址与MAC地址的对应关系

  • 初始ARP高速缓存表为空,假设此时B知道CIP地址,准备发送信息,但是由于不知道C的MAC地址,因此无法封装数据帧,所以此时会广播一个ARP请求报文(封装在MAC帧中,目的地址为广播地址FF-FF-FF-FF-FF-FF),内容如下:

    • 我的IP地址是:xxx ;我的MAC地址是:XXX;我想知道C主机的MAC地址是多少?

      这个广播帧会被该广播域的所有主机收到

    • A主机收到后交由上层处理,发现B问的不是他,所以不予理会

    • C收到后交由上层处理,发现这个IP地址正是自己,因此:

      首先将B的MAC地址和IP地址的对应关系记录到自己的高速缓存表中

      接着给 B返回ARP响应报文(封装在MAC帧中,目的地址为B的MAC地址),其中包含自己的MAC地址。

  • ARP高速缓存条目有静态与动态两种类型:

    • 动态代表是通过广播自动获取的条目,生命周期默认为两分钟

      IP 与 MAC 的对应关系不是永久的。该主机可能更换网卡。

    • 静态是手工设置的条目,不同操作系统下的生命周期不同。

  • ARP协议只能在一段链路或一个网络上使用。


集线器与交换机的区别

场景:

早期的总线型以太网使用细同轴电缆,普遍使用无源电缆线。

但电缆线和大量机械接口的总线型以太网并不可靠。

使用双绞线和集线器HUB的星型以太网,可靠性更高,双绞线也更便宜。

双绞线电缆中的 RJ-45 接头是我们熟知的水晶型接头

[计网]数据链路层 湖科大第三章_第28张图片

集线器

集线器HUB的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。

  • 使用集线器的以太网在逻辑上仍是一个总线网,各站共享总线资源,使用的还是CSMA/CD协议

  • 集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测(由各站网卡检测)

  • 集线器一般都有少量的容错能力和网络管理功能。例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网仍然能正常工作

  • 集线器是半双工模式,收发不能同时进行,收到帧后会广播到除本身接口外的各个接口

集线器可以在物理层扩展以太网,也就是扩大碰撞域。

交换机

交换机是一种负责转发信号的网络设备,可以为接入交换机的任意两个网络节点提供独享的电信号通路

  • 以太网交换机通常有多个接口,每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工方式

  • 以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞(不使用CSMA/CD协议)

    以太网交换机一般都具有多种速率的接口。

  • 以太网交换机工作在数据链路层(也包括物理层),它收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。

  • 以太网交换机是一种即插即用的设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的

  • 帧的两种转发方式

    • 存储转发:先缓存再处理。

    • 直通交换:采用基于硬件的交叉矩阵(交换时延非常小,但不检查是否有差错而直接发出去)。

  • 交换机每个接口是一个独立的碰撞域

综上:集线器扩大广播域的同时,扩大了碰撞域。

交换机扩大广播域的同时,隔离碰撞域。

工作在数据链路层的交换机,性能远超过工作在物理层的集线器。

以太网交换机自学习和转发帧的过程:

[计网]数据链路层 湖科大第三章_第29张图片

  • MAC地址表中的每条记录都有自己的有效时间,到期自动删除。这是因为MAC地址与交换机接口的对应关系并不是永久性的。

  • 如果刚刚学习到的MAC地址G来自接口1,同时交换机发现接口1也是来源,就会丢弃该帧。

    [计网]数据链路层 湖科大第三章_第30张图片

STP生成树协议

STP可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题

应用场景:

当交换机之间链路较少时,某一条链路发送故障,会导致其中有些主机无法通信,即链路不可靠。 如下图,AB之间的链路发送故障后,H1便无法与H2H3进行通信

[计网]数据链路层 湖科大第三章_第31张图片

解决方法是添加冗余链路,如在B与C之间多拉一条链路,这样即使A与B之间的链路发送故障,H1H2H3之间还是能够相互通信。但如下图所示,出现了新的问题:

[计网]数据链路层 湖科大第三章_第32张图片

帧会在交换机中不停转发,究其原因是因为网络形成了环路,网络环路会带来以下问题

  • 广播风暴

    • 大量消耗网络资源,使得网络无法正常转发其他数据帧

  • 主机收到重复的广播帧

    • 大量消耗主机资源

  • 交换机的帧交换表震荡(内容不断更新)

解决方法:以太网交换机使用生成树协议STP(Spanning Tree Protocol)。

可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题。

生成树原理:

  • 不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路)

  • 最终生成树的逻辑拓扑要确保连通整个网络

  • 当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树重新计算

VLAN虚拟局域网

一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求,每个VLAN就是一个独立的广播域

应用场景:

随着交换式以太网规模的扩大,广播域相应扩大,而巨大的广播域会带来很多弊端

  • 广播风暴

    如数台交换机连接了数台主机,当主机A要向主机B发送数据帧,此时各交换机的MAC表均为空,因此帧每到一个交换机就会进行泛洪,由于网络巨大,因此泛洪的范围也巨大

  • 难以管理和维护

  • 潜在的安全风险

即便如此,网络中还是会频繁出现广播信息

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

    • 地址解析协议ARP(已知IP地址,找出其相应的MAC地址)

    • 路由信息协议RIP(一种小型的内部路由协议)

    • 动态主机配置协议DHCP(用于自动配置IP地址)

  • NetBEUl:Widnows下使用的广播型协议

  • IPX/SPX:Novell网络的协议栈

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

解决方法:分割广播域

两种方法:

  1. 路由器隔离广播域

    由于路由器属于网络层设备,默认情况下不对广播数据包进行转发,因此自然达到隔离的效果。但是成本较高,局域网内部全靠路由器分割广播域是不现实的

  2. 虚拟局域网 VLAN(Virtual Local Area Network) 技术:将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。

    [计网]数据链路层 湖科大第三章_第33张图片

实现机制:

1.帧格式

2.交换机端口类型

帧格式

[计网]数据链路层 湖科大第三章_第34张图片

  • VLAN标记的最后12比特称为VLAN标识符VID,它唯一地标志了以太网帧属于哪一个VLAN

    • VID的取值范围是0~4095

    • 0和4095都不用来表示VLAN,因此用于表示VLAN的VID的有效范围是1~4094

  • 802.1Q帧时由交换机来处理的,而不是用户主机来处理的

    • 当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转变为802.1Q,简称“打标签”

    • 当交换机转发802.1Q帧时,可能会删除其4字节VLAN标记转变为普通以太网帧,简称“去标签”

端口类型

  • Access

  • Trunk

  • Hybrid(思科交换机没有这个端口)

交换机个端口的缺省 VLAN ID:

  • 在思科交换机上称为Native VLAN,即本征VLAN

  • 在华为交换机上称为Port VLAN ID,即端口VLANID,简记为PVID

    交换机每个端口有且仅有一个PVID。

  1. Access 接口

    Access端口一般用于终端设备与交换机之间

    注意:交换机与路由器连接的接口也需要使用access接口。这是因为路由器中的消息也不带VLAN标签,就像终端一样,保证路由器的数据能够进入交换机领域,数据由路由器进入交换机是会被打上默认标签,接着猜按照交换机间VLAN的规则行走。简单理解就是把路由器当作终端。

    • 交换机初始端口类型是Access

    • Access端口只能属于一个VLAN

    • Access端口的PVID值与端口所属VLAN的ID相同(默认为1)

    • Access端口接收方法

      一般只接收"未打标签"的普通以太网MAC帧。根据接收帧的端口PVID值给帧"打标签",即插入4字节的VLAN标记字段,字段中的VID取值与端口PVID取值相等。

    • Access端口发送处理方法

      若帧中的VID与端口的PVID相等,则"去标签"并转发该帧;否则不转发。

    [计网]数据链路层 湖科大第三章_第35张图片

  2. Trunk 接口

    Trunk端口一般用于交换机之间或交换机与路由器之间的互连

    • Trunk端口可以属于多个VLAN

    • 用户可以设置Trunk端口的PVID值,默认情况下,Trunk端口PVID值为1

    • Trunk端口发送处理方法:

      • 对VID等于PVID的帧,“去标签,再转发”

      • 对VID不等于PVID的帧,直接转发

    • Trunk端口接收处理方法:

      • 针对"未打标签"的帧。根据接收帧的端口的PVID给帧"打标签",即插入4字节的VLAN标记字段,字段中的VID取值与端口的PVID取值相等

      • 针对"已打标签的帧"直接接受。

  3. Hybrid 接口

    Hybrid端口既可以用于交换机之间或交换机与路由器之间的互连(同Trunk端口),也可用于交换机与用户计算机之间的互连(同Access端口)

    • Hybrid端口可以属于多个VLAN(同Trunk端口)

    • 用户可以设置Hybrid端口的PVID值。默认情况下,Hybrid端口的PVID值为1

    • Hybrid端口发送处理方法:

      • 查看帧的VID是否在端口的"去标签"列表中

      • 若存在,则"去标签"后转发

      • 若不存在,则直接转发

    • Hybrid端口接收处理方法(同Trunk):

      • 接收"未打标签"的帧,根据接收帧的端口的PVID给帧"打标签",即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等

      • 接收"已打标签的帧"

杂项

传播时延和传输时延

传输时延又称发送时延。

传播时延=距离/信号转播速率(m/s)

发送时延(传输时延)=数据块长度(比特)/发送速率(又称带宽或数据传输速率)(bit/s)

传输时延是指一个站点从开始发送数据帧到数据帧发送完毕所需要的全部时间,传播时延是指发送端开始发送数据到接收端收到数据所需要的全部时间。传输时延和发送数据帧大小有关,而传播时延和传输距离相关。

你可能感兴趣的:(网络,网络协议)