PPP协议是计算机用户和ISP进行通信所使用的数据链路层协议
PPP协议的要求:
? 简单:接收端每接收一个帧进行CRC 检验,正确就接收,错误则丢弃
? 封装成帧
? 透明传输
? 支持多种网络层协议:必须支持多种网络层协议,(IP/IPX)
? 支持多种类型的链路:串行、并行、同步、异步、低速、高速、电的、光的、动态的、静态的
? 差错检测
? 检测连接状态:PPP协议必须具有一种机制能够自动检测出链路是否处在正常的状态,每隔一段时间自动检查。
? MTU,数据链路层的帧的数据部分最大的可传输长度
? 网络层地址协商:PPP协议必须提供一种机制使两个通信的网络层的实体能够通过协商或配置彼此的网络层地址
? 数据压缩
PPP协议只支持全双工通信
PPP协议的三个组成部分
? 一个将IP数据报封装到串行链路的方法
? 一个用来建立、配置和测试数据链路连接的链路控制协议LCP,通信的双方可以协商选项
? 一套网络控制协议NCP,其中每个协议支持不同的网络层协议,如IP,OSI的网络层,DECnet,以及APPLETalk等。
PPP协议的帧格式
传输方式
? 同步传输:一连串的比特连续传送,接收方有准备的接收数据
? 异步传输:逐个字符地 传输,接收方不知道数据什么时候来
帧格式
F部分为标志字段规定为“0x7E”,如果出现两个连续的标志F,代表这是一个空帧,应该丢弃
A字段规定为“0xFF”,即11111111
控制字段C规定为0x03,即00000011,A、C字段实际上并没有携带任何PPP 帧的信息
协议字段的两字节:
? 0x0021 数据部分为IP数据报
? 0xC021 数据部分为LCP的数据
? 0x8021 数据部分为网络层的控制数据
FCS 是使用CRC 的帧检验序列 FCS
如何实现透传输?
? 当数据链路采用异步方式传输时,PPP协议把转义字符定义为0x7D(01111101),并使用字节填充:,方法如下:
? 0x7E (F字段)转换为 0x7D 和 0x5E
? 0x7D (转义字符) 转换为 0x7D 和0x5D
? 数据部分每出现一个ASCII码的控制字符,在该字节前加入 0x7D,并改变原字符的编码
? 当数据链路采用同步 传输时,PPP使用零比特填充方法,来实现透明传输
? 每出现5个连续的1,则立即填入一个0
PPP协议的初始化过程:
用户拨号接入ISP,建立一条从用户PC 到ISP的物理线路连接
PC 向ISP 发送一系列的LCP分组封装成多个PPP帧,以建立LCP连接,选择要使用的PPP参数,包括链路上的最大帧长,所使用的鉴别协议的规约、以及不使用PPP帧的地址和控制字段,
进行网络层的配置,NCP协议给PC 分配临时的IP地址,
通信完毕时,NCP释放网络层连接,收回网络层地址,LCP释放数据链路层连接,最后释放物理层连接
在双方建立物理层连接后,PPP就进入“链路建立”状态,目的是建立链路层的LCP连接。然后LCP开始协商配置选项,发送LCP的配置请求帧,这是一个PPP帧,PPP帧的协议字段时0xC021,数据部分为包含特定请求的配置请求。链路的另一端可以做出如下反应:
配置确认帧:所有选项都接受
配置否认帧:所有选项都理解但是不能接受
配置拒绝帧:有的选项无法识别或不能接受,需要协商
然后进入链路“鉴别”状态,这一状态只允许传送LCP协议的分组,鉴别协议的分组以及检测链路质量的分组。鉴别成功就进入“网络层协议的状态”,PPP链路的两端的NCP协议跟据网络层的不同的协议互相交换网络层的特定的网络控制分组。PPP协议的两端可以运行不同的网络层协议,但仍然可以使用同一个PPP协议。
网络层配置完毕之后,链路就进入可进行数据通信的“链路打开”状态,两个PPP端点可以向彼此发送分组,两个PPP端点还可以发送回送请求LCP分组和回送回答LCP 分组,以检查链路的状态。
数据传输结束之后,可以由链路的一端发送终止请求LCP分组请求终止链路连接,在收到对方的终止确认LCP分组之后,链路进入“链路终止”状态,如果链路出现故障,也会变成这一状态,当调制解调器的载波停止之后,则回到“链路静止”状态,
PPP协议已不是单纯的数据链路层的协议,还包含了网络层和物理层的内容。
原文地址:https://www.cnblogs.com/yusiming/p/9748279.html