抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

计算机网络学习——数据链路层

准备计网考试,总结一下知识点。

参考书 《计算机网络原理》第二版 王志文 陈研

数据链路控制

是什么?

数据链路层是OSI模型的第二层,基于物理层。

数据链路是相对于物理链路而言的,在逻辑上信息传输时设定的链路。例如把物理链路们比喻成四通八达的马路,物理链路为脚下的路,那么数据链路们则为马路抽象出来的地图,数据链路则为想象中的路线。

在数据链路上传输的信元为帧。

需要完成什么

  • 数据链路管理(建立、维持和释放)
  • 帧定界(在比特流上准确分出一个帧的开始、结束)
  • 流量控制(避免拥塞或者接收方无力接受溢出)
  • 差错控制(检测出错的帧,进行重传)
  • 区分数据和控制信息
  • 透明传输(确保无论数据是怎么样的比特组合,都能在数据链路上传输)
  • 寻址

功能怎么实现的?

Snipaste_2021-12-14_09-31-18

帧定界

  • 字符计数法
  • 首位界符法
  • 首尾标志法
  • 物理编码违例法

通常使用字符计数法+另一种来保证帧定界安全,通过字符计数定位到结束符处,只有当这个位置出现正确的结束符才会识别为一个帧,否则寻找下一个帧的起始符

差错控制的方式

存在突发性和随机性差错,前者影响局部,后者始终存在。

  • 检错反馈重发
    • 停等ARQ
    • 连续ARQ
    • 选择重传ARQ
  • 自动纠错(前向纠错FEC)
  • 混合,少量自动纠错,大量反馈重发
检错或纠错码
  • 海明码

  • 垂直水平奇偶检验码

  • 循环冗余检验码(CRC)

    将要传输的二进制数数据转换为多项式,并左移扩展 r 位,除以一个双方约定的生成多项式(r位)

    并把r位余数加在左移扩展 r 位的数据上构成冗余检验码

    image-20211214102955167

  • 校验和

    发送方16位一组进行循环进位累加后取反

    接收方同样方式并比较校验和

具体协议?

具体协议需要实现两个要求

  1. 链路理想,不会出差错,不会丢失
  2. 确保接收方能接受发送方的发送速度

停等协议

首先了解怎么进行传输数据的模型(停等协议),再来谈是怎么控制的

全双工通信双方都有一个缓存,主机并行向缓存写入、读出数据,数据链路串行写入数据

image-20211214161611496

怎么进行流量控制

发送方传输一个数据帧,直至接收方返回确认信息后再传输下一帧

怎么进行差错控制

通过检错码确认差错,然后接收方若出错则返回NAK说明出现错误需要重传,若正确则返回ACK确认收到。

帧丢失

避免确认帧丢失,则发送方设置超时计时器进行定时重传

避免重传时重复帧,则标记帧发送序号,若出现重复,丢掉重复帧,重新发送确认帧

效率

image-20211214163218339

错误概率为p,发送时间为tf时,平均传送一个正确数据帧的概率为tf/1-p(几何分布)

连续重传ARQ协议

不再等待确认帧,一旦传完数据立刻传下一个数据。

给每一个帧计时,若超时则从第一个超时的帧进行重传。

收到确认帧后,向主机确认该帧已经传输成功。收到错误后,从错误帧进行重传

image-20211214170019440

效率

假设重传时间为t,发送时间为tf,则平均成功传输一个帧的时间为tf + pt/1-p

滑动窗口

为了避免大量帧重传,大量编号计时造成的低效并进行流量控制,对未得到确认,继续传送的帧数进行限制

滑动窗口采用发送窗口和接受窗口,在窗口外的帧不允许接受、发送。通常设置窗口长度为1,当发送方得到接收方确认帧时向右滑动。允许接收方用一个帧来确认多个帧的情况。也允许接收方和发送方沟通发送窗口长度

image-20211214173356977

选择重传ARQ协议

随着存储器价格下降,可以采用增大接受窗口来进行只将错误帧选择重传的方式进行

发送接受窗口大小相同(>1),并且为了避免ACK丢失造成的重复,窗口大小必须小于最大序列号的一半

点对点数据链路接入控制

串行线路网际协议(SLIP)

通过电话线进行拨号,ISP验证后分配IP地址

IP数据报首位加上特殊标识符封装成SLIP帧,并对相同字符进行转义

不支持差错检测,只支持IP

点到点协议(PPP)

由头部,内容和尾部组成。头部有控制字段

内容可能有三部分

  • 链路控制协议LCP(协商PPP参数)
  • 网络控制协议NCP(进行网络层配置)
  • IP数据报(数据)

同步传输时进行比特填充,异步传输进行字符填充。

image-20211214191631679

先发送LCP封装的PPP包,然后发送NCP封装的PPP包,然后就能通过ISP来进行通信了。

评论