数据链路层——点对点协议PPP

数据链路层使用的信道主要有两种:点对点信道和广播信道。

对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP(Point-to-Point Protocol)。

PPP 协议的特点

互联网用户通常都要连接到某个 ISP 才能接入到互联网。PPP 协议就是用户计算机和 ISP 进行通信时所使用的数据链路层协议。

PPP 协议应满足的需求

  • 简单 —— 这是首要的要求。
  • 封装成帧 —— 必须规定特殊的字符作为帧定界符。
  • 透明性 —— 必须保证数据传输的透明性。
  • 多种网络层协议 —— 能够在同一条物理链路上同时支持多种网络层协议。
  • 多种类型链路 —— 能够在多种类型的链路上运行。
  • 差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
  • 检测连接状态 —— 能够及时自动检测出链路是否处于正常工作状态。
  • 最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性。
  • 网络层地址协商 —— 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
  • 数据压缩协商 —— 必须提供一种方法来协商使用数据压缩算法。

PPP 协议不需要的功能:纠错、流量控制、序号、多点线路、半双工或单工链路。

PPP 协议的组成

PPP 协议有三个组成部分:

  • 一个将 IP 数据报封装到串行链路的方法。
  • 链路控制协议 LCP(Link Control Protocol)。用来建立、配置和测试数据链路连接。
  • 一套网络控制协议 NCP(Network Control Protocol)。

PPP 协议的帧格式

各字段的意义

PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。

标志字段F = 0x7E。标志字段表示一个帧的开始或结束。标志字段就是 PPP 帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧。

地址字段 A 只置为0xFF。地址字段实际上并不起作用。

控制字段 C 通常置为0x03

PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。

透明传输问题:

  • 当 PPP 用在异步传输时,就使用一种特殊的字符填充法。
  • 当 PPP 用在同步传输链路时,协议规定采用硬件来完成比特填充。

字符填充

当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。

当 PPP 使用异步传输时,它把转义符定义为0x7D,并使用字节填充,填充方法:

  • 将信息字段中出现的每一个0x7E字节转变成为 2 字节序列 (0x7D, 0x5E)。
  • 若信息字段中出现一个0x7D的字节, 则将其转变成为 2 字节序列(0x7D, 0x5D)。
  • 若信息字段中出现 ASCII 码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如出现0x03,就要把它转变为(0x7D, 0x23)。

零比特填充

PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。

零比特填充具体做法:

  • 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。保证在信息字段中不会出现6个连续1。
  • 接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。

PPP 协议之所以不使用序号和确认机制是出于以下的考虑:

  • 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
  • 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
  • 帧检验序列 FCS 字段可保证无差错接受。

PPP 协议的工作状态

  • 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
  • PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧),以便建立 TCP 连接。
  • 这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
  • 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

PPP 链路的起始状态和终止状态永远是链路静止状态,这时在用户个人电脑和 ISP 的路由器之间并不存在物理层的连接。

当用户个人电脑通过调制解调器呼叫路由器时,路由器就能检测到调制解调器发出的载波信号。在双方建立的物理层连接后,PPP 就进入链路建立状态,其目的是建立链路层 LCP 连接。

这时 LCP 开始协商一些配置项,即发送 LCP 的配置请求帧。这是个 PPP 帧,其协议字段置为 LCP 对应的代码,而信息字段包含特定的配置请求。链路的另一端可以发送以下响应中的一种:配置确认帧、配置否认帧、配置拒绝帧。

协商结束后双方就建立了 LCP 链路,接着就进入鉴别状态。在这一状态,只允许传送 LCP 协议的分组、鉴别协议的分组以及监测链路质量的分组。

若使用口令鉴别协议 PAP(Password Authentication Protocol),则需要发起通信的一方发送身份标识符和口令。如果需要更高的安全性,可以使用口令握手鉴别协议 CHAP(Challenge-Handshake Authentication Protocol)。鉴别成功,进入网络层协议状态。鉴别失败,转到链路终止状态。

在网络层协议状态,PPP 链路的两端的网络控制协议 NCP 根据网络层的不同协议互相交换网络层特定的网络控制分组。这个步骤很重要,因为路由器能同时支持多种网络层协议。总之,PPP 协议两端的网络层可以运行不同的网络层协议,但仍然可使用同一个 PPP 协议进行通信。

当网络层配置完毕后,链路就进入可进行数据通信的链路打开状态。链路的两个 PPP 端点可以彼此向对方发送分组。两个 PPP 端点还可以发送回送请求 LCP 分组和回送回答 LCP 分组,以检查链路的状态。

数据传输结束后,可以由链路的一端发出终止请求 LCP 分组请求终止链路连接,在收到对方发来的终止确认 LCP 分组后,转到链路终止状态。如果链路出现故障,也会从链路打开状态转到链路终止状态。当调制解调器的载波停止后,则回到链路静止状态。

打赏
  • Copyrights © 2017-2023 WSQ
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信