-计算机网络

数据链路层

数据链路层基本概念及基本问题

数据发送模型:

mark
基本概念

数据链路层像一个数字管道,而在这条数字管道上传输的数据单位是帧,只有差错检验,接受对的,错误数据就扔

  • 链路: 是一条点到点的物理线路段,中间没有任何其他的交换结点。 一条链路只是一条通路的一个组成部分

  • 数据链路: 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成子数据链路。
    现最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。

  • 帧: 数据链路层传送带是帧,对网络层传输过来的数据包进行加工,添加帧头、帧尾和校验值,此时数据包就改名叫数据帧了。

解决的三个基本问题

1.封装成帧:

mark
2.透明传输:
mark

发送端的数据链路层在数据中出现控制字符”SOH”或”EOT”的前面插入一个转义字符”ESC”(其十六进制编码是18)。
字节填充(bytestuffing)或字符填充(characterstuffing)接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
如果转义字符也出现数据当中,那么应在转义字符前插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

3.差错检测:
mark补0的个数比除数少一位,除数值任意,除法的过程类似于相加但不进位,
余数 作冗余码 添加在数据后面 形成FCS(帧检验序列)
FCS可以由CRC这种方法得出,但CRC并非是获得FCS的唯一方法

检验: 若得出的余数R=0,则判定这个帧没有差错,就接受(accept)
若余数R!=0,则判定这个帧有差错,就丢弃

特点: 但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错
只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小

两种情况下的数据链路层

点对点信道的数据链路层:

一对一,用户使用拨号电话线接入广域网时,一般都是使用PPP协议

PPP协议有三个部分组成
数据链路层协议可以用于异步串行或同步串行介质
它使用LCP(链路控制协议)建立并维护数据链路协议,例如ADSL拨号,通过该协议控制身份验证,计费,欠费时,该协议可以控制断开链路连接
网络控制协议(NCP) 允许在点到点连接上使用多种网络层协议

PPP协议帧格式:
mark
mark
帧头和帧尾用 16进制的 7E 填充 7E的二进制为 01111110

PPP协议解决透明传输:

  • 字节填充法

  • 零比特填充:数据包中传输的不是字节,而是比特流,使用该方法

    • 1.在发送端,只要发现有5个连续1,则立即填入一个0。因为7E的二进制为 01111110 ,其中有6个连续的1,所以要在5个连续的1时补0
    • 2.接收端对帧中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除,

广播信道的数据链路层:

一对多,一般用于局域网,广播上连接主机较多,因此使用专用的共享信道协议来协调主机的数据发送