链路层
概念
- 结点:主机、路由器
- 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。
- 数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
- 帧:链路层的协议数据单元,封装网络层数据报。
- 数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。
功能
- 数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
- 功能一:为网络层提供服务。
- 无确认无连接服务,不建立连接,不确认。通常用于实时通信,或者是误码率低的通信
- 有确认无连接服务,通常用于误码率高的通信,比如无线通信
- 有确认面向连接服务。
- 有链接一定有确认
- 功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
- 功能三:组帧
- 功能四:流量控制。限制发送方哦~
- 功能五:差错控制(帧错/位错)。
组帧
-
封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
-
首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。
-
帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
-
组帧的四种方法:1.字符计数法,2.字符(节)填充法,3.零比特填充法,4.违规编码法。
-
透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。
-
当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
-
字符计数法
-
帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数。
-
缺:前一个错误导致后面数据全部出错。
-
字符(节)填充法
- 当传送的帧是由文本文件组成时(文本文件的字符都是从键盘上输入的,都是ASCl码)。不管从键盘上输入什么字符都可以放在帧里传过去,即透明传输。
- 当传送的帧是由非ASC码的文本文件组成时(二进制代码的程序或图像等)。就要采用字符填充方法实现透明传输。
- 填充转义字符
-
零比特填充法
- 保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
- 保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
-
违规编码法
-
由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充和违规编码法。
差错控制
- 差错产生的原因
- 概括来说,传输中的差错都是由于噪声引起的。
- 全局性
- 1.由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。
- 解决办法:提高信噪比来减少或避免干扰。(对传感器下手)
- 局部性
- 2.外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。
- 解决办法:通常利用编码技术来解决。
- 1.由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。
- 数据链路层编码和物理层的数据编码与调制不同。
- 物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。
- 冗余编码
- 在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错。
奇偶校验码
CRC
- 接收端检错过程
- 把收到的每一个帧((上题就是1101010111110))都除以同样的除数(上题就是10011),然后检查得到的余数R。
- 1.余数为0,判定这个帧没有差错,接受。
- 2.余数为不为0,判定这个帧有差错(无法确定到位),丢弃。
- FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,
- 因此不会延误数据的传输。
- 在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接收,即“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃。“凡是接收端数据链路层接收的帧均无差错”。
- “可靠传输”:数据链路层发送端发送什么,接收端就收到什么。
- 链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。
纠错-海明码
- 海明码:发现双比特错,纠正单比特错。
- 工作原理:动一发而牵全身
- Step1
- Step2
- Step3
- Step4
流量控制与可靠传输
- 较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
- 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
- 数据链路层流量控制手段:接收方收不下就不回复确认。
- 传输层流量控制手段:接收端给发送端一个窗口公告。
流量控制方法
在链路层,滑动窗口大小是固定的
停止-等待协议
- 出现的原因
- 除了比特出差错,底层信道还会出现丢包问题。
- 丢包:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失。
- 每发送完一个帧(分组)就停止发送,等待对方的确认,在收到确认后再发送下一个帧(分组)。
- 特点:简单,效率低,信道利用率太低
- 发送窗口大小=1,接收窗口大小=1;
- 随着通信链路的越来越好,链路层抛弃了可靠传输的功能,只实现差错控制,交给传输层实现
- 无差错情况
- 有差错情况
- 数据帧丢失或检测到帧出错
- 发完一个栈后,必须保留它的副本
- 数据帧和确认帧必须编号
- ACK丢失
- ACK迟到
- 数据帧丢失或检测到帧出错
- 无差错情况
滑动窗口协议
- 解决问题
- 流量控制(收不下就不给确认,想发也发不了)
- 可靠传输(发送方自动重传)
- 种类
后退N帧协议(GBN)
- 要点
- 累积确认(偶尔捎带确认)->缺点(批量重传)
- 接收方只按顺序接收帧,不按序无情丢弃
- 确认序列号最大的、按序到达的帧
- 发送窗口最大为2n-1,接收窗口大小为1
- 优
- 因连续发送数据帧而提高了信道利用率
- 缺
- 在重传时必须把原来已经正确传送的数据帧重传,是传送效率降低
- 发送窗口大小>1,接收窗口大小=1;
GBN发送方必须响应的三件事
- 1.上层的调用
- 上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。
- 2.收到了一个ACK
- GBN协议中,对n号帧的确认采用累积确认的方式,标明接收方已经收到n号帧和它之前的全部帧。
- 不是发送一个帧返回一个确认帧喔~
- 3.超时事件
- 协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。
GBN接收方要做的事
- 如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。
- 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)。
滑动窗口长度
- 一定要小于比特所能表达的最大编号
道场
选择重传协议(Selective Repeat)
- 发送窗口大小>1,接收窗口大小>1;
- 要点
- 对数据帧逐一确认,收一个确认一个
- 只重传出错帧
- 接收方有缓存
- WbTmax = WRmax = 2(n-1)
SR发送方必须响应的三件事
- 1.上层的调用
- 从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
- 2.收到了一个ACK
- 如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
-
- 超时事件
- 每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。
SR接收方要做的事
- 来者不拒(窗口内的帧)
- SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口。
- 如果收到了窗口序号外(小于窗口下界)的帧,就返回一个ACK。其他情况,就忽略该帧。
滑动窗口长度
- 如果窗口过大,会有二义性的问题
- 发送窗口最好等于接收窗口。(大了会溢出,小了没意义)
- WbTmax = WRmax = 2(n-1)
信道划分介质访问
传输数据使用的两种链路
- 点对点
- 链路两个相邻节点通过一个链路相连,没有第三者。
- 应用:PPP协议,常用于广域网。
- 广播式链路
- 所有主机共享通信介质。
- 应用:早期的总线以太网、无线局域网,常用于局域网。
- 典型拓扑结构:总线型、星型(逻辑总线型)
- 当>2个设备同时发送数据怎么办?答:介质访问控制
介质访问控制的内容就是,采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。
信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。
FDM
- 效率低
TDM
统计时分复用STDM
每一个STDM帧中的时隙数小于连接在集中器上的用户数。各用户有了数据就随时发往集中器的输入缓存,然后集中器按顺序依次扫描输入缓存,把缓存中的输入数据放入STDM帧中,一个STDM帧满了就发出。STDM帧不是固定分配时隙,而是按需动态分配时隙。
WDM
CDM
- **码分多址(CDMA)**是码分复用的一种方式
- 1个比特分为多个码片/芯片(chip),每一个站点被指定一个唯一的m位的芯片序列。
- 发送1时站点发送芯片序列,发送0时发送芯片序列反码(通常把0写成-1)。
- 如何不打架:多个站点同时发送数据的时候,要求各个站点芯片序列相互正交(规格化内积=0)
- 对应位相乘,然后相加,除以总的位数 =0
- 如何合并:各路数据在信道中被线性相加
- 对应位相加
- 如何分离:合并的数据和源站(芯片序列)规格化内积。
- 对应位相乘,然后求总和,除以总的位数
共同学习,写下你的评论
评论加载中...
作者其他优质文章