计算机网络 --- 点对点协议PPP
计算机网络 --- 点对点协议PPP
对于点对点的链路,目前使用得最广泛的数据链路层协议就是点对点协议(Point-to-Point Protocol)
PPP协议的特点
-
简单
对于数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制,总之,这种数据链路层协议非常简单:接收方每收到一个帧,就进行CRC检验。如果CRC检验正确,就收下这个帧,反之就丢弃这个帧
-
封装成帧
PPP协议必须规定特殊的字符作为帧定界符,以便使接收端从收到的比特流中能准确地找出帧的开始和结束位置
-
透明性
PPP协议必须保证数据传输的透明性,如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效措施来解决这个问题
-
多种网络层协议
PPP协议必须能够在同一条物理链路上同时支持多种网络层协议(如IP,IPX等)
-
多种类型链路
PPP必须能够在多种类型的链路上运行
-
差错检测
PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧
-
检测连接状态
PPP协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态
-
最大传送单元
PPP协议必须对每一类型的点对点链路设置最大值传送单元MTU的标准默认值
-
网络层地址协商
PPP协议必须提供一种机制使通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址
-
数据压缩协议
PPP协议必须提供一种方法来协商使用数据压缩算法
PPP协议的组成
- 一个将IP数据报封装到串行链路的方法
- 一个用来建立,配置和测试数据链路连接的链路控制协议LCP
- 一套网络控制协议NCP
PPP协议的根格式
各字段的意义
-
PPP帧的首部和尾部分别为四个字段和两个字段。
-
首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E
-
如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃
-
首部中的字段A规定为0xFF,控制字段C规定为0x03,目前来说无意义
-
PPP首部的第四个字段是2字节的协议字段
- 当协议字段为0x0021,PPP帧信息字段就是IP数据报
- 当协议字段为0xC021,PPP帧信息字段是PPP链路控制协议LCP的数据
- 当协议字段为0x8021,PPP帧信息字段是网络层的控制数据
-
信息字段的长度是可变的,但不超过1500字节
-
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS
PPP协议的透明性
之前我们在介绍PPP协议的特点时说到了他的透明性,因此我们有两种方式去防止数据中碰巧出现了和帧定界符一样的比特组合这类情况,面向字节时,我们使用字节填充方法。面向比特时,我们采用零比特填充法
- 字节填充
当信息字段中出现和标志字段一样的比特组合时(0x7E)
- 把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)
- 若信息字段中出现一个0x7D的字节,则把0x7D转变为2字节序列(0x7D,0x5D)
- 若信息字段出现ASCII码的控制字符(即小于0x20的字符),则在该字符前面加入一个0x7D字节,同时将该字节的编码加以改变(+20)
- 在接收端收到数据后进行与发送端字节填充相反的变换
- 零比特填充
- 在发送端,先扫描整个信息字段,只要发现有5个连续1,则立即填入一个0,保证了不会出现6个连续1
- 在接收端,先找到标志字符F以确定帧的一个边界,接着扫描信息字段,当发现5个连续的1时,就把这5个连续1后的0删除,以还原成原来的信息比特流
PPP协议的工作状态
- 当用户拨号接入ISP后,就建立了一条从用户PC机到ISP的物理连接。
- 这时用户PC机向ISP发送一系列的LCP分组(封装成多个PPP帧),以便建立LCP连接。
- 这些分组及其响应选择了将要使用的一些PPP参数。
- 接着还要进行网络层配置,NCP给新接入的用户PC机分配一个临时的IP地址。
- 这样,用户PC机就成为因特网上的一个有IP地址的主机了。
- 当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。
- 接着,LCP释放数据链路层连接。
- 最后释放的是物理层的连接。
以上就是学习PPP协议时的笔记,个人感觉计网的细节内容太细太多了