计算机网络学习笔记第三章(数据链路层)超详细整理
Posted 林深时不见鹿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络学习笔记第三章(数据链路层)超详细整理相关的知识,希望对你有一定的参考价值。
目录
3.1、数据链路层概述
1、概述
链路是从一个结点到相邻结点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)
网络中的主机、路由器等都必须实现数据链路层
局域网中的主机、交换机等都必须实现数据链路层
从层次上来看数据的流动
仅从数据链路层观察帧的流动
主机H1 到主机H2 所经过的网络可以是多种不同类型的
注意:不同的链路层可能采用不同的数据链路层协议
数据链路层使用的信道
数据链路层属于计算机网路的低层。数据链路层使用的信道主要有以下两种类型:
- 点对点信道
- 广播信道
局域网属于数据链路层
局域网虽然是个网络。但我们并不把局域网放在网络层中讨论。这是因为在网络层要讨论的是多个网络互连的问题,是讨论分组怎么从一个网络,通过路由器,转发到另一个网络。
而在同一个局域网中,分组怎么从一台主机传送到另一台主机,但并不经过路由器转发。从整个互联网来看,局域网仍属于数据链路层的范围
2、三个重要问题
数据链路层传送的协议数据单元是帧
2.1、封装成帧
- 封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。添加帧头和帧尾的目的,都是为了在链路以帧为单位来传送数据,也就是为了实现数据链路层本身的功能。
- 首部和尾部的一个重要作用就是进行帧定界。
2.2、差错控制
发送方将封装好的帧通过物理层发送到传输媒体,帧在传输过程中遭遇干扰后可能会出现误码,也就是比特0可能会变成 1, 反之亦然。
接收方如何判断出现了误码那?这可以通过检错码来发现。
接收方根据帧尾中的检测码检测帧中是否有误码。
2.3、可靠传输
接收方主机收到有误码的帧后,是不会接受该帧的,会将它丢弃
如果数据链路层向其上层提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施
如果数据链路层向其上层提供的是可靠服务,那就还需要其他措施,来确保接收方主机还可以重新收到被丢弃的这个帧的正确副本
以上三个问题都是使用点对点信道的数据链路层来举例的
如果使用广播信道的数据链路层除了包含上面三个问题外,还有一些问题要解决
如图所示,主机A,B,C,D,E通过一根总线进行互连,主机A要给主机C发送数据,代表帧的信号会通过总线传输到总线上的其他各主机,那么主机B,D,E如何知道所收到的帧不是发送给她们的,主机C如何知道发送的帧是发送给自己的
可以用编址(地址)的来解决
将帧的目的地址添加在帧中一起传输
这是以太网V2的MAC帧
除了编址问题外,再来看下面这个问题。当总线上多台主机同时使用总线来传输帧时,传输信号就会产生碰撞。以太网采用的协调方法是使用一种特殊的协议CSMA/CD也就是载波监听多点接入/碰撞检测。
随着技术的发展,交换技术的成熟,
在 有线(局域网)领域 使用点对点链路和链路层交换机的交换式局域网取代了
共享式局域网在无线局域网中仍然使用的是共享信道技术
3、小结
3.2、封装成帧
1、介绍
封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧
- 帧头和帧尾中包含有重要的控制信息
发送方的数据链路层将上层交付下来的协议数据单元封装成帧后,还要通过物理层,将构成帧的各比特,转换成电信号交给传输媒体,那么接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧?
答:需要帧头和帧尾来做帧定界
但比不是每一种数据链路层协议的帧都包含有帧定界标志,例如下面例子
前导码
- 7个字节是前同步码,作用是使接收方的时钟同步
- 之后的一字节为帧开始定界符,表明其后面紧跟着的就是MAC帧
另外以太网还规定了帧间间隔为96比特时间,因此,MAC帧不需要帧结束定界符
2、透明传输
透明
指某一个实际存在的事物看起来却好像不存在一样。
透明传输是指数据链路层对上层交付的传输数据没有任何限制,好像数据链路层不存在一样
帧界定标志也是个特定数据值,如果在上层交付的协议数据单元中, 恰好也包含这个特定数值,接收方就不能正确接收。接收方在收到第一个帧定界标志时,认为这是帧的开始。这并没有错误,当接收方再次接收到帧定界标志时,会误认为帧结束了,如果数据链路层不采取任何措施,来避免接收方对帧是否结束的误判,就不能称为透明传输。所以数据链路层应该对上层交付的数据有限制,其内容不能包含帧定界符的值。
解决透明传输问题
- 解决方法:在发送帧之前,对帧的数据部分进行扫描,每出现一个帧定界符,就在前面插入一个转义字符。
- 面向字节的物理链路使用字节填充 (byte stuffing) 或字符填充 (character stuffing),面向比特的物理链路使用比特填充的方法实现透明传输
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B)。
- 接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
- 如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
帧的数据部分长度
3、小结
每五个连续1后面插入一个比特0
练习题
3.3、差错检测
1、介绍
**FCS字段:**帧检验序列
2、奇偶校验
由于奇偶校验的漏检率比较高,因此数据链路层一般不会采用这种检测方法。
3、循环冗余校验CRC(Cyclic Redundancy Check)
例题1
总结
循环冗余校验 CRC 是一种检错方法,而帧校验序列 FCS 是添加在数据后面的冗余码
3.4、可靠传输
1、基本概念
检测出现了比特差错
其他传输差错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3jFBee2D-1621083708951)(计算机网络第三章(数据链路层).assets/image-20201012153811724.png)]
- 分组丢失
由于R5路由器输入队列快满了,主动丢弃收到的分组
- 分组失序
数据并未按照发送顺序依次到达接收端,也就是说最先发送的分组未必最先到达
- 分组重复
由于某些原因,有些分组在网络中滞留了,没有及时到达接收端,这可能会造成发送端对该分组的重发,重发的分组到达接收端,但一段时间后,滞留在网络的分组也到达了接收端,这就造成分组重复的传输差错。
小结
2、三种可靠协议
- 停止-等待协议SW
- 回退N帧协议GBN
- 选择重传协议SR
这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到计算机网络体系结构的各层协议中
3、停止-等待协议
停止-等待协议可能遇到的四个问题
确认与否认
发送送给接收方发送数据分组,接收方收到后对其进行差错检测,若没有误码,则接收该数据分组,并给发送方发送确认分组,简称为ACK。发送方收到接收方发送的确认分组后,才能发送下一个数据分组。假设数据分组在发送过程中出现了误码,接收方收到后对其进行差错检测,发现了误码,则丢弃该数据分组,并给发送方发送否认分组,简称NAK。发送发收到对所发送的数据分组的否认分组后,就知道了自己之前所发送的分组出现了差错而被接收方拒绝,于是立刻重传该数据分组。发送方每发送完一个数据分组后 ,并不能立刻将该数据分组从缓存中删除,只有收到接收方的确认分组后,才能将其从缓存中删除。
超时重传
确认丢失
既然发送方发送的数据分组可能丢失,那么接收方发送的确认或否认分组就也有可能丢失。例如发送方发送了一个数据分组,接收方正确接收该数据分组后给发送方发送确认分组,但该确认分组在传输过程中丢失了。这必然会造成发送方对之前所发送数据分组的超时重传。假设这个重传的数据分组也正确到达了接收方,那么现在问题来了,接收方如何判断该数据分组是否是一个重复的分组呢?
既然数据分组需要编号,确认分组是否需要编号?
要。如下图所示
确认迟到
来看这种情况,发送方发送零号数据分组。接收方正确接收后,给发送方发送确认分组。由于某些原因,该确认分组迟到了,这必然会导致发送方对零号数据分组的超时重传。在重传的零号数据分组的传输过程中,发送方收到了迟到的确认分组,于是发送一号数据分组。接收方收到重传的零号数据分组后发现这是一个重复的数据分组,并针对该数据分组,给发送方发送确认分组,以免发送方再次超时重传该数据分组。现在问题来了,我们可以非常清楚的看到,这是一个对零号数据分组的重复确认,但是发送方又如何知道呢?如果不采取其他措施的话,发送方会误认为这是对一号数据分组的确认。如果对确认分组也进行编号,就可以使发送方避免这种误判。
请注意,该数据分组与之前序号为零的那个数据分组不是同一个数据分组。我们用给确认分组编号的方法解决了确认迟到所导致的重复确认,需要说明的是,对于数据链路层的点对点信道往返时间比较固定,不会出现确认迟到的情况。因此,如果只在数据链路层实现停止等待协议,可以不用给确认分组编号。
注意事项
停止-等待协议的信道利用率
假设收发双方之间是一条直通的信道
- TD:是发送方发送数据分组所耗费的发送时延
- RTT:是收发双方之间的往返时间
- TA:是接收方发送确认分组所耗费的发送时延
TA一般都远小于TD,可以忽略,当RTT远大于TD时,信道利用率会非常低
练习题:
像停止-等待协议这样通过确认和重传机制实现的可靠传输协议,常称为自动请求重传协议ARQ(Automatic Repeat reQuest),意思是重传的请求是自动进行,因为不需要接收方显式地请求,发送方重传某个发送的分组
4、回退N帧协议GBN
为什么用回退N帧协议
如图所示,发送方每发送完一个数据分组就要停止发送,并等待接收方的确认分组。当收到接收方的确认分组后,才能发送下一个数据分组,如此反复进行,从图中可以看出,发送方每发送完一个数据分组,就至少要等待一个收发双方之间的往返时间,当往返时间较大时。例如卫星链路,停止等待协议的信道利用率很低,若出现超时重传,则信道利用率更低。
如图所示,如果发送方在收到接收方的确认分组之前,可以连续发送多个数据分组则可大大提高信道利用率,这是一种流水线式的传输。就本例而言,同等条件下,在相同的时间内使用停止等待协议的发送方只能发送一个数据分组,而采用流水线传输的发送方可以发送五个数据分组。
回退N帧协议在流水线传输的基础上,利用发送窗口来限制发送方可连续发送数据分组的个数
如图1所示,序号落在发送窗口内的这五个数据分组可以连续发送,而序号落在发送窗口外的数据分组不允许发送。接收窗口的尺寸即为Wr,对于回退N帧协议,其取值只能为一,这一点与停止等待协议是相同的。
如图2所示,序号落在接收窗口内的这个数据分组允许接收,而序号落在接收窗口外的数据分组不允许接收。
无差错情况流程
发送方将序号落在发送窗口内的0~4号数据分组,依次连续发送出去
他们经过互联网传输正确到达接收方,就是没有乱序和误码,接收方按序接收它们,每接收一个,接收窗口就向前滑动一个位置,并给发送方发送针对所接收分组的确认分组,在通过互联网的传输正确到达了发送方
接收方每接收一个、发送窗口就向前滑动一个位置,这样就有新的序号落入发送窗口,发送方可以将收到确认的数据分组从缓存中删除了,而接收方可以择机将已接收的数据分组交付上层处理。
累计确认
使用回退N帧协议的接收方可以采用累计确认的方式
我们来举例说明累计确认,发送方将序号落在发送窗口内的0到4号数据分组依次连续发送,他们经过互联网的传输,正确到达了接收方。接收方按序接收他们,当接收完0号和1号数据分组后,给发送方发送了一个累计确认ACK1。当接收完2到4号数据分组后,又给发送方发送了一个累计确认ACK4。假设ACK1在传输过程中丢失了,而ACK4正确到达了发送方,发送方接收ACK4后就知道了,序号为4及之前的数据分组已被接收方正确接收了。于是将发送窗口向前滑动五个位置,这样就有新的序号落入了发送窗口。发送方可以将收到确认的数据分组从缓存中删除了,而接收方可以择机将已接收的数据分组交付上层处理。
累计确认
优点:
- 即使确认分组丢失,发送方也可能不必重传
- 减小接收方的开销
- 减小对网络资源的占用
缺点:
- 不能向发送方及时反映出接收方已经正确接收的数据分组信息
有差错情况
例如
在传输数据分组时,5号数据分组出现误码,接收方通过数据分组中的检错码发现了错误
于是丢弃该分组,而后续到达的这剩下四个分组与接收窗口的序号不匹配
接收同样也不能接收它们,将它们丢弃,并对之前按序接收的最后一个数据分组进行确认,发送ACK4,每丢弃一个数据分组,就发送一个ACK4
当收到重复的ACK4时,就知道之前所发送的数据分组出现了差错,于是可以不等超时计时器超时就立刻开始重传,具体收到几个重复确认就立刻重传,根据具体实现决定
如果收到这4个重复的确认并不会触发发送立刻重传,一段时间后。超时计时器超时,也会将发送窗口内以发送过的这些数据分组全部重传
若WT超过取值范围,例如WT=8,会出现什么情况?
对于本例采用三个比特给分组编序号,WT 的最大值为2^3减1,也就是7。我们故意超过该上限,将WT 取值为8,发送方将序号落在发送窗口内的0至7号,这8个数据分组依次连续发送出去。他们经过互联网的传输,正确到达了接收方,接收方按序正确接收他们后。给发送方发回累计确认ACK7,假设ACK7在传输过程中丢失了,这将导致发送方的超时重传,重传的0至7号数据分组到达接收方。现在问题来了,接收方根据当前接收窗口内的序号,会对这8个数据分组按序接收。但是接收方之前已经接收过这8个数据分组了,现在是在重复接收,也就是说,接收方无法分辨新旧分组,进而会产生分组重复这种传输差错。因此,发送窗口的尺寸不能超过其上限。
习题
总结
- 回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议
- 在协议的工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又称为滑动窗口协议
- 由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比停止-等待协议高
5、选择重传协议SR
过程描述:
如图所示,序号落在接收窗口内的这四个数据分组允许接收,而序号落在接收窗口外的数据分组不允许接收。发送方将序号落在发送窗口内的这四个数据分组依次连续发送出,他们经过互联网的传输,陆续到达接收方,但其中的二号数据分组丢失了。只要序号落入接收窗口内,且无码的数据分组接收方都会接收。
接收方接收0号和1号数据分组,并发送0号和1号确认分组。接收窗口向前滑动两个位置,这样就有4和5这两个新的序号落入接收窗口,接收方接收3号数据分组并发送3号确认分组。但接收窗口不能向前滑动,因为3号数据分组是未按时到达的数据分组,这些确认分组经过互联网的传输,陆续到达发送方。发送方每按序收到一个确认分组发送窗口,就向前滑动一个位置,发送方接收0号和1号确认分组,发送窗口向前滑动两个位置,这样就有4和5这两个新的序号落入发送窗口。
发送方将序号落入发送窗口的4号和5号数据分组发送出去,发送方现在可以将已经收到确认的0号和1号数据分组,从发送缓存中删除了,而接收方可择机将以按需接收的0号和1号数据分组交付上层处。发送方接收3号确认分组,但发送窗口不能向前滑动,因为这是一个未按需到达的确认分组,发送方还未收到他之前的2号确认分组。不过需要记录3号数据分组已收到确认,这样该数据分组就不会超时重发。4号和5号数据分组到达接收方,接收方接收他们并发送4号和5号确认分组,但接触窗口不能向前滑动,因为他们是未按时到达的数据分组,接收方还未收到他们之前的2号数据分组,假设在4号和5号确认分组的传输过程中,发送方针对2号数据分组的重传计时器超时了,发送方重传2号数据分组,4号和5号确认分组陆续到达发送方,发送方接收他们,但发送窗口不能向前滑动,因为他们是未按时到达的确认分组,发送方还未收到他们之前的2号确认分组,不过需要记录4号和5号数据分组已收到确认。这样他们就不会超时重发,发送方之前重传的2号数据分组到达接收方,接收方接收该数据分组并发送2号确认分组,接触窗口现在可以向前滑动4个位置,这样就有6,7,0,1这4个新的序号落入接收窗口,22号确认分组经过互联网的传输到达发送方,发送方接收该确认分组,发送窗口现在可以向前滑动4个位置,这样就有6,7,0,1这4个新的序号落入发送窗口,发送方现在就可以继续将这4个序号的数据分组依次发送出去了。
总结
习题
3.5、点对点协议PPP
请大家想想看,一般的英特网用户是如何接入到英特网的呢,通常都是要通过连接到某个因特网服务提供者ISP。例如中国电信、中国联通、中国移动这三大运营商,才能接入英特网。这些ISP已经从因特网管理机构申请到了一批IP地址,用户计算机只有获取到ISP 所分配的合法IP地址后,才能成为英特网上的主机。用户计算机与ISP进行通信时,所使用的数据链路层协议通常就是PPP协议。这里需要说明的是,在1999年公布的在以太网上运行的PPP 协议,即PPP over,简称为PPPoE 它使得ISP 可以通过dsl 电路、调制解调器、以太网等宽带接入技术。以以太网接口的形式为用户提供接入服务。
- 点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议
- PPP协议是因特网工程任务组IEIF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]
- 数据链路层使用的一种协议,它的特点是:简单;只检测差错,而不是纠正差错;不使用序号,也不进行流量控制;可同时支持多种网络层协议
1、帧格式
必须规定特殊的字符作为帧定界符
真尾部中的帧检验序列FCS字段,其值是使用循环冗余校验CRC 计算出的校验位,用于检查PPP帧是否存在误码。
2、透明传输
当PPP帧的数据部分出现帧首和帧尾中的标志字段时,如果不采取措施,则会造成接收方对PPP帧是否结束的误判。因为标志字段是PPP帧的定界符,取值为十六进制的7E。
实现透明传输的方法
- 面向字节的异步链路:字节填充法(插入“转义字符”)
- 面向比特的同步链路:比特填充法(插入“比特0”)
3、差错检测
接下来我们来看看PPP协议是如何进行差错检测的,PPP 帧的尾部包含有一个两字节的帧检验序列FCS 字段,使用循环冗余校验CRC 来计算该字段的取值。采用的生成多项式如下所示:
4、工作状态
- 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
- PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
- 这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机
- 分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
- 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。
可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。
3.6、媒体接入控制(介质访问控制)——广播信道
媒体接入控制(介质访问控制)使用一对多的广播通信方式
Medium Access Control翻译成媒体接入控制,有些翻译成介质访问控制
局域网的数据链路层
- 局域网最主要的特点是:
- 网络为一个单位所拥有;
- 地理范围和站点数目均有限。
- 局域网具有如下主要优点:
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和残存性。
数据链路层的两个子层
为了使数据链路层能更好地适应多种局域网标准,IEEE 802 委员会就将局域网的数据链路层拆成两个子层:
- 逻辑链路控制 LLC (Logical Link Control)子层;
- 媒体接入控制 MAC (Medium Access Control)子层。
与接入到传输媒体有关的内容都放在 MAC子层,而 LLC 子层则与传输媒体无关。
不管采用何种协议的局域网,对 LLC 子层来说都是透明的。
1、基本概念
为什么要媒体接入控制(介质访问控制)?
共享信道带来的问题
若多个设备在共享信道上同时发送数据,则会造成彼此干扰,导致发送失败。
随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术
2、静态划分信道
信道复用
频分复用FDM (Frequency Division Multiplexing)
- 将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
- 频分复用的所有用户在同样的时间占用不同的带宽资源(请注意,这里的“带宽”是频率带宽而不是数据的发送速率)。
如图所示,这是三对用户各自使用一条独立的物理线路进行通信。如果在发送端使用复用器,在接收端,在使用分用器,这三个用户就可以共享一条物理线路进行通信。
时分复用TDM (Time Division Multiplexing)
- 时分复用则是将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙。
- 每一个用户所占用的时隙是周期性地出现(其周期就是TDM帧的长度)的。
- TDM 信号也称为等时 (isochronous) 信号。
- 时分复用的所有用户在不同的时间占用同样的频带宽度。
波分复用 WDM(Wavelength Division Multiplexing)
波分复用就是光的频分复用,使用一根光纤来同时传输多个光载波信号
光信号传输一段距离后衰减,所以要用 掺铒光纤放大器 放大光信号
码分复用 CDM (Code Division Multiplexing)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ooiamt0g-1621083708976)(计算机网络第三章(数据链路层).assets/image-20201013203459640.png)]
3、动态接入控制
受控接入
受控接入在局域网中使用得较少,本书不再讨论
随机接入
重点
4、随机接入(CSMA/CD协议)
总线局域网使用协议:CSMA/CD
4.1、基本概念
最初的以太网是将许多计算机都连接到一根总线上。易于实现广播通信。当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件。
以太网(Ethernet)是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了**以太网(Ethernet)**的技术标准
以太网采用无连接的工作方式,对发送的数据帧不进行编号,也不要求对方发回确认。目的站收到有差错帧就把它丢弃,其他什么也不做
96比特时间是指发送96比特所耗费的时间,也称为帧间最小间隔,其作用是是接收方可以检测出一个帧的结束,同时也使得所有其他站点都能有机会平等竞争信道并发送帧。
下面我们来举例说明
4.2、多址接入MA
表示许多主机以多点接入的方式连接在一根总线上。
4.3、载波监听CS
是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
假设主机B要发送帧,他首先进行监听,检测到总线空闲96比特时间后就可以发送帧了。
总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
4.4、碰撞检测CD
- “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。
- 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
- 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
- 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。
- 在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
- 每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次
假设在主机C使用总线发送帧的过程中,主机B 也要发送帧,主机B进行载波监听。发现总线忙于是持续检测总线,一旦发现总线空闲96比特时间则立即发送帧,边发送帧,,还要边检测碰撞,只要没检测到碰撞,则可继续发送帧的剩余部分。假设在主机B 发送帧的过程中,主机C 也要发送帧,主机C 进行载波监听,发现总线空闲96比特时间后立即发送帧。这必然会产生碰撞,在产生碰撞的时刻,主机B 和主机C都在边发送帧砭检测碰撞,但都检测不到碰撞,碰撞信号沿总线传播,主机C会比主机B 更早检测到碰撞并停止发送,退避一段随机时间后。重新在发送之前所发送的帧,当主机B检测到碰撞后,立即停止发送。退避一段随机时间,重新在发送之前所发送的帧。
为什么要进行碰撞检测? 因为信号传播时延对载波监听产生了影响
A 需要单程传播时延的 2 倍的时间,才能检测到与 B 的发送产生了冲突
4.5、CSMA/CD 协议工作流程
4.6、CSMA/CD 协议工作——争用期(碰撞窗口)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9wQaxYLP-1621083708980)(计算机网络第三章(数据链路层).assets/image-20201013223235305.png)]
4.7、CSMA/CD 协议工作——最小帧长
假设主机A 正在给主机D 发送一个很短的帧,边发送边检测碰撞,主机A 很快就将该帧发送完毕了,之后就不再针对该针检测碰撞。在该帧的传输过程中,主机C也要发送帧主机C 检测到总线空闲96比特时间后就立即发送针,尽管总线实际上并不空闲,这必然会产生碰撞。主机D 最终会收到主机A 发送的并遭遇碰撞的针,主基地会将该帧丢弃,但对于主机A 而言,他并不知道自己已发送完毕的。该针在总线上传输的过程中遭遇了碰撞,因此不会重发该针,很显然,使用CSMA/CD 协议的以太网的帧长不能太短。
4.8、CSMA/CD 协议工作——最大帧长
4.9、CSMA/CD 协议工作——截断二进制指数退避算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MpRD6Uap-1621083708982)(计算机网络第三章(数据链路层).assets/image-20201013230717856.png)]
4.10、CSMA/CD 协议工作——信道利用率
4.11、CSMA/CD 协议工作——帧接收流程
习题
4.12、CSMA/CD 协议的重要特性
- 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早起版本中。
现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CS协议
4.13、总结
5、随机接入(CSMA/CA协议)
无线局域网使用的协议:CSMA/CA
5.1、为什么无线局域网要使用CSMA/CA协议
5.2、帧间间隔IFS(InterFrame Space)
5.3、CSMA/CA协议的工作原理
如图所示,这些是无线站点,横坐标为时间。假设无线信道是空闲的,原站有数据真要发送,当原站检测到新的空闲,则在等待中间间隔DIFS 后发送该数据帧。目的站若正确收到该数据帧,则经过中间间隔SIFS后向原站发送确认真ACK。需要说明的是,若原站在规定时间内没有收到确认帧ACK。由重传计时器控制这段时间,就必须重传该数据帧,直到收到确认为止,或者经过若干次的重传失败后放弃发送。
源站为什么在检测到信道空闲后还要再等待一段时间DIFS?
- 考虑到可能有其他的站有高优先级的帧要发送。若有,就要让高优先级帧先发送
目的站为什么正确接收数据帧后还要等待一段时间SIFS才能发送ACK帧?
- SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧,在这段时间内,一个站点应当能够从发送方式切换到接收方式
信道由忙转为空闲且经过DIFS时间后,还要退避一段随机时间才能使用信道?
防止多个站点同时发送数据而产生碰撞
使用退避算法的时机
5.4、CSMA/CA协议的退避算法
退避算法的示例
如图所示,A,B,C,D,E是五个无线站点,横坐标为时间。
5.5、CSMA/CA协议的信道预约和虚拟载波监听
虚拟载波监听机制能减少隐蔽站带来的碰撞问题的示例
习题练习
小结
3.7、MAC地址、IP地址以及ARP协议
1、MAC地址
如图所示,两台主机通过一条链路通信,很显然他们不需要使用地址就可以通信,因为连接在信道上的主机只有他们两个。
- 使用点对点信道的数据链路层不需要使用地址
- 使用广播信道的数据链路层必须使用地址来区分各主机
再来看使用共享信道的总线型局域网,总线上的某台主机要给另一台主机发送帧,表示帧的信号通过总线会传送到总线上的其他所有主机,那么这些主机如何判断该帧是否是发送给自己的呢?很显然,使用广播信道的数据链路层必须使用地址来区分各主机,也就是说,当多个主机连接在同一个广播信道上。要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址。
1.1、广播信道的数据链路层必须使用地址(MAC)
MAC地址又称为硬件地址或物理地址。请注意:不要被 “物理” 二字误导认为物理地址属于物理层范畴,物理地址属于数据链路层范畴
1.2、IEEE 802局域网的MAC地址格式
组织唯一标识符OUI
- 生产网络设备的厂商,需要向IEEE的注册管理机构申请一个或多个OUI
网络接口标识符
- 由获得OUI的厂商自行随意分配
EUI-48以上是关于计算机网络学习笔记第三章(数据链路层)超详细整理的主要内容,如果未能解决你的问题,请参考以下文章