网络基础-数据链路层的基础概念及PPP协议概述

数据链路层位于网络模型的底层,使用的信道主要有两种类型:

  • 点对点信道
  • 广播信道

点对点的数据链路层

首先是区分几个概念:

  • 链路:从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。在数据通信时,两个计算机之间的通信路径可能要经过许多种这样的链路。
  • 数据链路:当需要在一条线路上传送数据时,除了必须有一条物理线路之外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
  • 帧:点对点信道的数据链路层的协议数据单元。数据链路层将把从网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。

这里写图片描述

只考虑点对点信道的数据链路层在进行通信时的主要步骤如下:

  1. 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。
  2. 结点A把封装好的帧发送给结点B的数据链路层。(不考虑传送细节)
  3. 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给上面的网络层;否则丢弃。

封装成帧

封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧,接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。首部和尾部的一个重要作用就是帧定界即限定帧的边界。

当数据是由可打印的ASCII码组成的文本时,帧定界可以使用特殊的帧定界符。
ASCII是7位编码,可组合128个不同的ASCII码,可打印95个,不可见的控制字符33个。
这里写图片描述
一个控制字符SOH放在一帧的最前面,表示帧的首部开始,另一个控制字符EOT表示帧的结束。SOH和EOT都是控制字符的名称,分别是01和04,而不是三个字符。
当数据在传输时,出现差错,假设在发送帧时突然出现故障,中断了发送,但随后很快又恢复了正常,于是重新从头开始发送刚才未发送完的帧。在接收端看来,第一次接收到的帧只有SOH没有EOT那么他就知道这是一个不完整的帧就会丢弃。后收到的帧既有SOH又有EOT说明这是一个完整的帧。

透明传输

由于使用了SOH和EOT作为帧定界,那么显然在数据中就不允许出现与帧定界相同的编码,这样就会出现混乱。

当传送的帧是用文本文件时(从键盘输入的),数据部分显然不会出现SOH和EOT这样的帧定界控制字符。也就是说,不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。

但是当帧是非ASCII码的文本文件时(二进制代码或图像等),情况就会不同。如果数据中的某个字节的二进制序列恰好和SOH和EOT这种控制字符一样,数据链路层就会错误地“找到帧地定界”,把部分帧收下,剩下的就会丢弃。这样的显然就不是透明传输。

为了解决透明传输的问题,就必须设法使数据中可能出现的控制字符SOH或EOT在接收端不被解释未控制字符。

具体方法是:
发送端的数据链路层在数据中出现控制字符SOH或EOT的前面插入一个转义字符“ESC”。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充。
如果数据中也出现转义字符,那么就在转义字符的前面插入一个转义字符,当接收端收到连续两个转义字符时,就删除其中前面的一个。

差错检测

通常使用循环冗余CRC校验检测。
下面举一个例子:
这里写图片描述

CRC是检测方法,FCS是添加在数据后面的冗余码。
也就是说,实际传送的数据是110101。接收端接收到数据以帧为单位再进行CRC检验,把收到的每一个帧都除以同样的除数(模2运算),如果传输过程中无差错。那么经过检验后得出的余数一定是0。如果出错,就丢弃。

但是这里需要注意一点,CRC检测仅仅只能实现无比特差错的传输,并不能实现可靠传输。

PPP协议

PPP协议是目前应用最广泛的数据链路层协议。

PPP(点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。

PPP功能

  1. PPP具有动态分配IP地址的能力,允许在连接时刻协商IP地址;
  2. PPP支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等;
  3. PPP具有错误检测以及纠错能力,支持数据压缩;
  4. PPP具有身份验证功能。
  5. PPP可以用于多种类型的物理介质上,包括串口线、电话线、移动电话和光纤(例如SDH),PPP也用于Internet接入。

PPP组成

PPP协议由三个部分组成

  • 一个将IP数据报封装到串行链路的方法。PPP既支持异步链路,也支持面向比特的数据链路。
  • 链路控制协议LCP:用来建立,配置和测试数据链路连接。
  • 网络控制协议NCP:其中的每一个协议支持不同的网络层协议。

帧格式

各字段如下图所示:

这里写图片描述

工作流程

状态及阶段如下所示:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/mxrrr_sunshine/article/details/80565019