数据链路层
- 结点:主机、路由器
- 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线,光纤和微博。分为有线链路、无线链路。
- 数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
- 帧:链路层的协议数据单元(PDU),封装网络层数据报。
数据链路层用于将网络层给它的数据报封装为帧,然后传输到与其通过物理链路直接相连的节点。
-
封装成帧(组帧)
将网络层的IP数据报的前后部分分别添加首部和尾部。
接收端在收到物理层上交的比特流之后,可以根据首部和尾部来从收到的比特流中识别帧。
组帧的四种方法:
- 字符计数法
- 字符(节)填充法
- 零比特填充法
- 违规编码法
-
帧同步
接收方应当能从收到的二进制比特流中区分出帧的开始和终止。
透明传输:不管所传的数据是什么样的比特组合,都应当能在链路上传送。
-
字符计数法
缺点:一步错,步步错
-
字符填充法
通过添加转义字符"ESC",避免原始数据中的比特流被错误解读为控制信息。
-
零比特填充法
-
违规编码法
之前的三种编码方法,都是考虑如何加工来自网络层的IP数据报;
违规编码法,不加工IP数据报,而是在物理层编码时采用违规的编码方式来界定帧的起始和终止。如,曼彻斯特编码不允许出现高高和低低电平,即高低和低高编码原始数据,高高编码帧起始,低低编码帧终止;
可靠传输:发送端发什么数据,接收端就接收到什么数据
传输差错
概括来说,传输过程的差错是由于噪声引起的。
-
噪声包含两类:
一方面,由于线路的电气特性所产生的随机噪声,是固有的。解决方法是提高信噪比。另一方面,由于外界特定的原因造成的冲击噪声,是产生差错的最主要原因。解决方法是采用一定的编码技术。
-
差错包含两类:
位错:【比特位出错,1变成0,0变成1】
帧错:
原始数据 【#1】-【#2】-【#3】
- 帧丢失 【#1】-【#3】
- 帧重复【#1】-【#2】-【#2】-【#3】
- 帧失序【#1】-【#3】-【#2】
解决方案:帧编号,确认重传机制
由于现在线路质量好,我们只对通信质量差的无线传输链路(上图右边两种)采用确认重传机制。
数据链路层主要解决的是位错(比特错)
检错编码:
-
奇偶校验码
添加一位校验位,使得1的个数为奇数(或偶数);如果产生了奇数个比特的翻转,可以发现错误。
-
CRC循环冗余码
CRC可以判断帧内是否出现位错,但无法确认是哪一位出错。经过CRC后所接收的帧是正确的,但还没有实现可靠传输,因为它丢弃了错误的帧。
纠错编码:海明码
发现双比特错,纠正单比特错
海明不等式:\(2^r - 1\geqslant k+r\) (r为冗余信息位,k为信息位)
要发送的数据:\(D=101101\)
流量控制:控制发送端发送数据的速率,使得接收方有足够的缓冲时间来接收每一个帧。
较高的发送速度和较低的接受能力不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
数据链路层的流量控制是点对点的,传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方收不下,就不回复确认。
传输层流量控制手段:接收方给发送方一个窗口公告。
链路层的流量控制协议有三种:
-
停止-等待协议(本质上也是滑动窗口,发送窗口=接收窗口=1)
-
滑动窗口协议
包含两种:
- 后退N帧协议(GBN)
- 选择重传协议(SR)
停止-等待协议
每发送完一个分组(or 帧)就停止发送,等待对方确认,在收到确认后再发送下一个分组。
分为:无差错 和 有差错 两种情况
-
无差错情况
-
有差错情况
-
数据帧丢失或检测到帧出错
如果帧丢失或帧出错,接收方都不会返回给发送方一个确认帧。此时,发送方的超时计时器等待时间超过了设定的重传时间,便会再次发送之前的帧。
这要求:
- 发完一个帧后,必须先保留它的副本
- 数据帧和确认帧必须编号:可以解决帧丢失,帧重复,帧失序等问题
-
ACK 丢失
-
ACK迟到
缺点:信道利用率低
信道利用率:发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。
-
一般在计算时,除非题目明确给出信息,都忽略确认帧时间 \(T_A\)
后退N帧协议(GBN):
发送方需要解决的事情:
接收方需要解决的事情:
- 发送方一次发送的是一组帧,如发送【#0】【#1】【#2】...【#5】
- 接收方依次接收到各个帧,依次返还确认【#0】【#1】【#2】...【#5】
- 接收方依次收到各个确认,每次窗口右移一格
出现差错的情况:
- 发送方一次发送的是一组帧,如发送【#0】【#1】【#2】【#3】【#4】
- 接受【#0】
- 交付【#0】,返还【ACK#0】,期待【#1】
- 窗口右移
- 接收【#1】
- 交付【#1】,返还【ACK#1】,期待【#2】
- 窗口右移
- 接收【#2】
- 交付【#2】,返还【ACK#2】,期待【#3】
- 窗口右移
- 接收【#4】
- 由于【#3】没有收到,返还【ACK#2】,期待【#3】
- 重发【#3】~【#7】
本质上是发送方按块发送,提高了传输效率(这是对于信道质量好的;如果信道质量过差,这么做甚至不如停止等待协议)
窗口不可过长
数据传输时的两种链路:
-
点对点链路:两个节点通过一个链路相连,没有第三者
常用于广域网
-
广播式链路:所有主机共享通信介质
常用于局域网。典型的拓扑结构:总线型、星型(逻辑总线型)
由于广播式链路存在冲突的问题,有必要采用介质访问控制
介质访问控制:采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。
包括两类:
- 静态划分信道(信道划分介质访问控制):
- 频分复用FDM
- 时分复用TDM
- 波分复用WDM
- 码分复用CDM
- 动态分配信道
- 轮询访问介质访问控制 - 令牌传递协议
- 随机访问介质访问控制 - ALOHA 协议;CSMA协议;CSMA/CD 协议;CSMA/CA 协议
- 静态划分信道(信道划分介质访问控制):
信道划分介质访问控制:将使用介质的设备与来自同一信道的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。
-
频分复用
-
时分复用
-
波分复用
本质上是光的频分复用
-
码分复用
每一个用户可以在同样的时间使用同样的频带进行通信,由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。码分复用最初用于军事通信,因为这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现,后来才广泛的使用在民用的移动通信中,它的优越性在于可以提高通信的话音质量和数据传输的可靠性,减少干扰对通信的影响,增大通信系统的容量,,降低手机的平均发射功率等,其工作原理如下:
码分多址(CDMA)是码分复用的一种方式,在CDMA中,每一个比特时间在划分为m个短的间隔,称为码片(chip),通常m的值为64或128,为了方便说明,取m为8
-
使用CDMA的每一个站被指派一个唯一的m bit码片序列,一个站如果要发送比特1,则发送它自己的m bit码片序列,如果要发送0,则发送该码片序列的二进制反码,按照惯例将码片中的0写成-1,将1写成+1
-
CDMA给每一个站分配的码片序列不仅必须各不相同,并且还必须互相正交,用数学公式表示,令向量S表示站S的码片向量,再令T表示其他任何站的码片向量。两个不同站的码片序列正交,就是向量S和T的规格化内积都是S * T = 0
-
任何一个码片向量和该码片向量自己的规格化内积都是S * S = 1
-
任何一个码片向量和该码片的反码的向量的规格化内积都是-1
所有其他站的信号都被过滤,而只剩下S站发送的信号。当S站发送比特1时,在X站计算内积结果为+1;当S站发送比特0时,内积结果为-1;当S站不发送时,内积结果为0,S与X正交。
-
局域网(LAN),是指在某一区域内由多台计算机互连成的计算机组,使用广播信道。
特点:
- 范围小,几千米内
- 使用专门铺设的传输介质(双绞线,同轴电缆)进行联网,数据传输速率高(10Mb/s~10Gb/s)
- 通信延迟短,误码率低,可靠性高
- 各个站点平等,共享传输信道
- 多采用分布式控制和广播式通信,能进行广播或组播
总结为三个要素:网络拓扑,传输介质,介质访问控制方法
拓扑结构
总线型拓扑最好
传输介质:
- 有限局域网:双绞线、同轴电缆、光纤
- 无线局域网:电磁波
局域网介质访问控制方法:CSMA/CD协议
载波监听多点接入/碰撞检测
- CS:carrier sense,载波监听,每一个站点在发送数据前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。
- MA:multiple access,多点接入,表示多台计算机连接在一根总线上
- CD:collision detection,碰撞检测,适配器边发送数据边检测信道上电压的变化情况,以便判断自己在发送数据时其他站点是否也在发送数据。
由于电磁波传播需要时间,可能存在站点A向B发送的信号还没有到达B,站点B也要向A发送数据,但此时检测到信道空闲,也发送数据的情况。
检测到碰撞的时间 \(t\in(0, 2\tau)\)
重传时间:
- 基本退避(推迟)时间 \(2 \tau\)
- 定义参数 \(k\),表示重传次数,但是不超过10。即 \(k \in \min(重传次数, 10)\) 。
- 从离散集合 \([0,1,...,2^{k-1}]\) 中随机取一个数 \(r\), 重传所需要的退避时间就是 \(r\) 倍的退避时间,即 \(2 *r *\tau\)
- 若重传到达16次,说明网络拥挤,抛弃此帧并向高层报告。
最小帧长:
由于,CSMA/CD 就是为了避免因为冲突而发送错误的数据,而如果帧过段,即使检测到了冲突,也无法叫停帧的发送(因为帧发送完了)。为了解决这个问题,设定最小帧长,满足:帧的传输时延至少是信号在总线中的传播时延的两倍。
局域网的分类
MAC子层和LLC子层
IEEE802标准将数据链路层划分为逻辑链路层LLC子层 和 介质访问控制MAC子层
- 以太网
集线器进行广播
适配器:
计算机通过通信适配器与外界局域网连接。
适配器的ROM上有MAC地址,又称为物理地址,全球唯一。
广域网:几十公里到几千公里,远距离通信。
主要采用分组交换技术。因特网(Internet)是最大的广域网。
PPP协议:对于点对点链路,采用点对点协议。==只支持全双工链路=
三个组成部分:
- 将IP数据报封装到串行链路的方法
- 链路控制协议LCP
- 网络控制协议NCP
-
透明传输:
异步传输时,采用字节填充;同步传输零比特填充
-
工作流程:
扩展以太网:
- 物理层扩展 (采用集线器、中继器)
-
链路层扩展(采用网桥、交换机)
链路层设备(使用了MAC地址):
网桥、源路由网桥、交换机(直通式交换机、存储转发式交换机)
网桥:平分传输媒体带宽;交换机:独占传输媒体带宽