计算机网络-数据链路层笔记

计算机网络-数据链路层笔记

数据链路层的位置、功能和服务

为什么需要数据链路层?

  • 物理层传输可能出现误码:差错控制 Error Control
  • 接收方要防止数据来的太快太多:流量控制 Flow Control
  • 广播信道中传输信息,需要寻址(Addressing)和介质访问控制(Media access control)

数据链路层的位置和功能

在这里插入图片描述

  • 数据链路层负责将数据以可靠、高效的方式从一个节点传送到链路上相邻的另一个节点
  • 数据单位:帧 frame
  • 功能:
功能 封装成帧(Packetizing) 寻址(Addressing) 差错控制(Error control) 流量控制(Flow control) 介质访问控制(Media access control)
目的 从物理层收到的比特流中分离出帧 确保收到的数据与发出的一致 不能让慢速的接收方被快速的发送方淹没

分组(包)和帧 Packets vs. Frames

在这里插入图片描述

逐跳通信

在这里插入图片描述
hop-to-hop communication 两设备之间没有其他数据链路层及以上的设备,只有传输介质和物理接口

适配器通信 Adapters Communicating

  • 发送方:将packet封装成帧;加检错码,实现可靠传输;流量控制
  • 接收方:寻找错误,检查是否可靠传输;流量控制;将帧还原成packet,传送到上一层
  • 数据链路层功能在网卡(NIC)中实现:
    在这里插入图片描述

提供给网络层的服务

  • 数据传输
    在这里插入图片描述
  • 无连接的服务:Connectionless services
服务类型 无确认无连接的服务 Unacknowledged connectionless service 有确认无连接的服务 Acknowledged connectionless service
服务特点 没有确认(ACK)和逻辑连接 对收到的每一帧都由确认(ACK)
适用场景 多数LAN提供这种服务 在不可靠信道上使用
具体应用 信道质量极好如光纤,还有近距离通信,还有对实时性要求很高的服务,如VOIP, 视频直播 无线系统
  • 有确认面向连接的服务 Acknowledged connection-oriented service
服务类型 有确认面向连接的服务
服务特点 预先建立一个连接,每个帧都被编号,确保可靠传输
适用情景 可靠性要求高且有一定可分配资源的情景
具体应用 ATM

成帧 Framing

在这里插入图片描述

  • 在点到点链路上从A节点向B节点发送遗传比特给主机B
  • B节点必须能够准确识别哪些比特组成一帧(一帧从哪里开始,到哪里结束)
  • 要求:拆分比特流
  • 约束条件(拆分结果需要满足):简单(接收方容易实现)、独立于代码(与传输的消息内容无关)、高效(使用的信道带宽尽量少)、健壮性(不易出错,出错后易重新同步)
  • 方法:字符计数法(Character count)、字符填充法(Flag byte with byte stuffing)、比特填充法(Starting and ending flags, with bit stuffing)、物理层编码违例法(Physical layer coding violations)

字符计数法

  • 在帧的头部用一个字段(field)来说明帧内的字符个数
  • 传输差错可能导致数值被篡改
    在这里插入图片描述

字符填充法(透明传输)

  • 用一个标志字节(flag)来标记帧的开始和结束
  • 和所用的8位字符集相关
  • 如果数据中包含和标志(flag)相同的字节,则在该字节前加转义字符ESC
    在这里插入图片描述

比特填充法

  • 帧中包含的比特数是任意的(不需要是8的整数倍)
  • 起始/结束标记(flag):0111,1110
  • 比Byte stuffing效率高
  • 在原始数据连续5个1加0
  • 在HDLC中应用
    在这里插入图片描述
  • 容易遇到的问题

在这里插入图片描述
Tips:1比特误码最多影响2帧,容易恢复

物理层编码违例法

  • 在编码方案由冗余时,可以采用物理层编码违例法(效率较高,但对物理层编码有要求)
  • 例如LAN使用的曼彻斯特编码
  • 每个有效的二进制位在信号中间都有跳变
  • 信号中间没有跳变的编码,如高-高和低-低,用于标记帧的开始和结束
    在这里插入图片描述

差错控制 Error control

差错类型

  • 帧丢失:发送端传出的帧没有到达接受端(噪声影响或在队列中被丢弃)
  • 帧损坏:某些比特出错

单比特差错与突发差错 Single-bit Error and Burst Error

在这里插入图片描述

差错检测方法

  • 奇偶校验 Parity check:能检测出单比特错误;单个奇偶校验位性能:可检出奇数个比特反转错误,其他情况漏检率50%
    在这里插入图片描述
  • 交错检验 Parity Check for Blocks
    编码(n个校验位):每个数据块是一个 k × n k\times{n} k×n矩阵;一次发送一行;对每一列计算一个奇偶校验位
    在这里插入图片描述
    性能:可检测出长度为n的突发差错;对于长度为n+1的突发差错,如果恰好第一个和最后一个比特被翻转,而中间的比特都正确,这种无法检测出来;如果发生更长的突发差错,无法检测出的概率为 2 − n 2^{-n} 2n
  • 循环冗余校验 Cyclic Redundancy Check(CRC):可以检测出一些突发错误
  • 校验和 Checksum

循环冗余校验CRC

发送方:

  • 除法原理
  • M ( x ) M(x) M(x)被除数,将比特串看作多项式系数,例如 1101 = x 3 + x 2 + x 0 1101=x^3+x^2+x^0 1101=x3+x2+x0
  • G ( x ) G(x) G(x)除数,最少两位
  • 做除法,得到的余数为校验码,校验码的长度一定小于除数
  • 计算校验位的算法如下:
    1.将 M ( x ) M(x) M(x)左移 r r r位( r r r G ( x ) G(x) G(x)的最高次幂)
    2.用构成的比特串除以 G ( x ) G(x) G(x)
    3.从比特串中减去余数,得到 T ( x ) T(x) T(x)
    在这里插入图片描述
    接收方:验证校验位
  • 如果出现传输差错,到达的不是 T ( x ) T(x) T(x),而是 T ( x ) + E ( x ) T(x)+E(x) T(x)+E(x)
  • 接收方计算 [ T ( x ) + E ( x ) ] G ( x ) \frac{[T(x)+E(x)]}{G(x)} G(x)[T(x)+E(x)],由于 T ( x ) G ( x ) = 0 \frac{T(x)}{G(x)}=0 G(x)T(x)=0,结果取决于 E ( x ) G ( x ) \frac{E(x)}{G(x)} G(x)E(x)
  • 如果差错 E ( x ) E(x) E(x)恰好对应于包含 G ( x ) G(x) G(x)因子的多项式,将无法检测出来;其他差错都能被检测出来
    CRC检错能力分析:
  • r r r个校验位能检测出长度小于等于 r r r的全部突发差错
  • 能够检测出两个独立的单比特差错
  • 能够检测出所有奇数个翻转差错
  • 对于其他长度大于 r r r的突发差错,无法检测出坏帧的概率为 2 − r 2^{-r} 2r

差错纠正方法

  • 前向纠错 Forward Error Correction(FEC)
  • 重传纠错 Automatic Repeat reQuest(ARQ)一般在可靠介质使用

纠错码:汉明距离 Hamming Distance

ECC(Error Correcting Code)将冗余信息加入到待发送的信息中

  • 汉明距离 Hamming Distance:两个码字中对应比特的值不同的数目,例如1000 1001和1011 0001,汉明距离为3
  • 要检测出 t t t比特差错,编码的汉明距离至少为 t + 1 t+1 t+1
  • 要纠正 t t t比特差错,编码的汉明距离至少是 2 t + 1 2t+1 2t+1
  • 校验位的个数,例:要纠正单比特差错,需要几个校验位?
    m m m为消息位的位数, r r
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值