数据链路层学习记录

数据链路层

数据链路不同于链路,链路指的是连接结点的物理线路,数据链路是将数据传输的相关协议所实现需要的硬件和软件加到链路当中,就构成了数据链路。


  • 数据链路层的协议数据单元——
    数据链路层把从网络层交下来的数据构成 发送到链路上
  • 网络层的协议数据单元——ip数据报(数据报、分组或包)
  • 数据链路层通信过程:
    1.数据链路层将交付下来的数据报添加首部和尾部封装成帧
    2.然后将帧发送到另一个结点的数据链路层
    3.若收到的帧无差错,则提取帧中的数据报交付给网络层,否则丢弃。
    数据链路层不需要知道物理层怎样实现比特传输的


帧的封装

数据链路层同过帧进行通信,一个帧是由一个ip数据包加上首部和尾部构成的。为了实现数据链路层之间通信,那么必需知道每一个帧的起始和结束的位置,即需要帧定界
首部和尾部的作用之一就进行帧定界。
由于差错控制等因素,数据部分的长度的上限为最大传送单元(MTU,maximum transfer unit)
帧定界可以使用帧定界符,但所带来的问题是当数据中有与帧定界符相同的字节,将会造成数据接受不完整。
所以产生了字符(字节)填充比特填充,原理就是转移字符来进行区别。由于物理层传输数据是以比特流的形式,为了节约开销,所以 产生了比特填充

PPP协议

PPP协议采用的就是零比特填充法。帧定界符是一个特殊的比特组合,“01111110”.PPP协议的原理就是碰到连续的5个1,则在后面插入一个0,这样就可以保证在信息端中将不会存在连续的6个1(即区别与帧定界符)

帧的差错检测

基本原理是差错检测码,通常在帧的尾部设置一个差错检验字段存放整个帧的差错检测码
数据链路层通常采用循环冗余检测(cyclic redundancy check,CRC)技术。
CRC简单介绍 :
发送方和接受方首先协商一个
r+1
位比特的G(最高位和最低位必须是1)
如果有d位比特的数据D,发送方计算的出r位比特的冗余码R
然后将r位的R附加到数据D上发送出去。
R= D.2r/G 的余数
理解公式:假如有D:110101,协商的G:1001(所以r=4-1=3),向当与将D左移r位除以G得到余数就是R(001)。
R附加到D上的110101 001,该数可以被G整除,所以接受方只需将接受的数据除以G,如果余数位0,则帧没有差错。
注意G是双方协商出来的(双方都知道G)R则是发送方计算出来的
G=1101可以用多项式表示 G(X)=X3+X2+1

可靠传输

  • 停止等待协议
  • 回退N帧协议
  • 选择重传协议

猜你喜欢

转载自blog.csdn.net/xuexilangren1/article/details/84887949