1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-02-09 13:45:48 +08:00
Files
CS408/Computer-Network/data-link-layer.md
2021-04-02 23:01:05 +08:00

678 KiB
Raw Blame History

数据链路层

基本概念

  • 结点:主机、路由器。
  • 链路:网络中两个结点之间的物理通道。
  • 数据链路:网络中两个结点之间的逻辑通道。
  • 帧:链路层的协议数据单元。

数据链路层功能:

  1. 为网络层提供服务:无确认无连接服务、有确认无连接服务、有确认面向连接服务。
  2. 链路管理。
  3. 组帧。
  4. 流量控制。
  5. 差错控制。

封装成帧

在一段数据的前后部分添加首部和尾部,构成一个帧。接受端在收到物理层上交的比特流后就可以根据首部和尾部的标记从而识别帧的开始和结束。

透明传输

不管所传数据为什么样的比特组合都能在链路上传输。因此链路层就看不见有什么方案数据传输的东西(控制信息)。

字符计数法

帧首部使用一个计数字段(第一个字节,八位)表明帧内字符数。

字符计数

缺点:如果在某一个帧内,标记位后面的某个字节的数据丢失,那么会影响后面的帧。

比如3 1 1 和 4 2 2 2如果前面的帧丢失变成 3 1那么后面的4就会被补到前面变成 3 1 4导致错误。

字符填充法

帧就是加头加尾分别标记开始结束,而如果数据内某段比特流数据正好与标记字段重复,就会导致误判断的情况。

字符填充法就是在误会的字符前添加转义字符。

字符填充

零比特填充法

当帧开始符和结束符一样且帧定界符中含有5个以上连续的1就可以使用零填充法。

  • 在发送端扫描整个信息字段只要有连续的五个1就立即在第五个1后加上一个0无论后面是1还是0。
  • 在接收端收到一个帧时先找到标志字段确定边界再用硬件对比特流进行扫描发现连续五个1时就把后面的0删除。

零比特填充

违规编码法

使用帧中不会用到的编码来定帧的起始和终止。

违规编码法

由于字节计数法的脆弱性与字符填充实现的复杂性与不兼容性,所以基本上使用零比特填充与违规编码法。

差错控制

噪声来源:

  • 全局噪声:线路本身电气特征所产生的固有的随机噪声(热噪声);可以通过改善传感器调高信噪比来减少。
  • 局部噪声:外界特定短暂的原因所产生的冲击噪声,是产生差错的主要原因;可以通过编码计数来解决。

差错:

  • 位错比特位出错1变为00变为1。
  • 帧错有三种情况假如发送的是1 2 3
    1. 丢失1 2。
    2. 重复1 2 2 3。
    3. 失序3 1 2。

差错控制:

  • 检错编码:
    • 奇偶校验法。
    • 循环冗余码CRC
  • 纠错编码:海明码。

物理层所说的编码是针对单个比特的调制,为了达成同步。

而数据链路层所说的编码是针对一组比特,通过冗余码的计数实现对一串二进制比特率的检查。

奇偶校验码

首先一串数据长度为n-1需要在数据第一位加上一位校验码。

奇校验要选校验码1或0使得n位的总数据里的1为奇数而偶校验要选校验码1或0使得n位的总数据里的1为偶数。

奇偶校验码对于出错的数据仍有对应的奇偶个1则无法检验出是否出错。

如字符为1100101原数据有4位1若使用奇校验则需要首位校验位为1让整个数据有奇数5个1从而整个数据变为11100101。若接受方收到11000011、11001010这种数据则能校验因为数据有偶数个111010011则无法校验因为有奇数个1。

[]