持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情
PPP 协议应该满足的需求
- 简单:简单的设计可以使得协议在实现时不容易出从,从而提高不同厂商在协议的不同实现上的互操作性;
- 封装成帧:PPP 协议必须规定特殊的字符作为帧定界符;
- 透明性:PPP 协议必须保证数据传输的透明性;
- 多种网络协议:PPP 协议必须能够在同一条物理链路上同时支持多种网络层协议的运行;
- 多种类型链路:除了要支持多种网络层的协议外,PPP 还必须能够在多种类型的链路上运行;
- 差错检测:PPP 协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧;
- 检测连接状态:PPP 协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态;
- 最大传送单元:PPP 协议必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值。这样做是为了促进各种实现之间的互操作性;
- 网络层地址协商:PPP 协议必须提供一种机制是通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址;
- 数据压缩协商:PPP 协议必须提供一种方法来协商使用数据压缩算法;
PPP 协议的组成
PPP 协议有三个组成部分:
- 一个将 IP 数据报封装到串行链路的方法。PPP 既支持异步链路(无奇偶校验的 8 比特数据),也支持面向比特的同步链路。IP 数据报在 PPP 帧中就是其信息部分。这个信息部分的长度受最大传送单元 MTU 的限制;
- 一个用来建立、配置和测试数据链路连接的链路控制协议 LCP(Link Control Protocol)。通信的双方可协商一些选项;
- 一套网络控制协议 NCP(Network Control Protocol),其中的每一个协议支持不同的网络层协议,如 IP、OSI 的网络层、DECnet 以及 AppleTalk 等;
PPP 协议的工作状态
PPP 链路的起始和终止状态永远是 链路静止 状态。
当用户个人电脑通过调制解调器呼叫路由器时,路由器就能够检测到调至解调器发出的载波信号。在双方建立了物理层连接之后,PPP 就进入 链接建立 状态,其目的是建立链路层的 LCP 连接。
这时 LCP 开始协商一些配置选项,即发送 LCP 的配置请求帧。这个 PPP 帧,其协议字段置为 LCP 对应的代码,而信息字段包含特定的配置请求。链路的另一端可以发送以下几种响应中的一种:
- 配置确认帧:所有选项都接受;
- 配置否认帧:所有选项都理解但不能接受;
- 配置拒绝帧:选项有的无法识别或不能接受,需要协商;
协商结束后双方就建立了 LCP 链路,接着就进入 鉴别 状态。在这一状态,只允许传送 LCP 协议的分组、鉴别协议的分组以及监测链路质量的分组。若鉴别身份失败,则转到 链路终止 状态,若鉴别成功,则进入 网络层协议 状态。
在 网络层协议 状态,PPP 链路的两端的网络控制协议 NCP 根据网络层的不同协议互相交换网络层特定的网络控制分组。
当网络层配置完毕后,链路就进入可进行数据通信的 链路打开 状态。链路的两个 PPP 段带你可以彼此向对方发送分组。两个 PPP 端点还可发送回送请求 LCP 分组和回送回答 LCP 分组,以检查链路状态。
数据传输结束之后,可以由链路的一端发出终止请求 LCP 分组请求终止链路链接,在收到对方发送的终止确认 LCP 分组后,转到 链路终止 状态。如果链路出现故障,也会从 链路打开 状态转到 链路终止 状态。当调制解调器的载波停止后,则回到 链路静止 状态。
参考文档
- 《计算机网络》—— 谢希仁