对于点对点协议(还有一种是广播信道),使用最广泛的数据链路层协议就是点对点协议PPP。
当用户上网时,需要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机和ISP之间进行通信所使用的数据链路层协议。(注意在最开始说过不同链路段数据链路层使用的协议可能不同)。
一、PPP协议的特点
1. PPP协议应满足的需求
(1)简单:IETE在设计互联网体系时,把最复杂的部分放在了TCP协议中,而网际协议IP相对比较简单,提供不可靠的数据包服务。因此数据链路层不需要提供比IP协议更多的功能。简单是首要要求。
数据链路层协议很简单:接收地方收到一个帧就对其进行CRC检测,检测成功就收下这个帧,失败就丢弃,其他什么都不做。
(2)封装成帧:规定特殊的字符作为帧定界符。(第一节中介绍的概念)
(3)透明性:保证数据传输的透明性。(第一节中介绍的概念)
(4)多种网络层协议:能够在同一条物理链路上同时支持多种网络层协议(如IP或IPX等)的运行。
(5)多种类型链路:除了要支持多种网络层协议外,还要能在多种类型的连路上运行。例如串行或并行的、同步或异步的、低速或高速的等。
(6)差错检测:能够对接收端收到的帧及进行检测,并立即丢弃有差错的帧。(第一节中介绍的)
(7)检测连接状态:必须有一种机制能够及时自动检测链路是否正常工作以及恢复正常后检测。
(8)最大传送单元:PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的默认值。注意,MTU指的是数据链路层帧中的数据部分的最大长度,而不是帧的总长。
(9)网络层地址协商
(10)数据压缩协商
PPP协议不支持多点线路,只支持点对点的链路通信,而且PPP协议只支持全双工链路。
2. PPP协议的组成
(1)一个将IP数据报封装到串行链路的方法。
(2)一个用来建立、配置和测试数据链路连接到链路控制协议LCP。
(3)一套网络控制协议NCP,其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层、DECnet等。
二、PPP协议的帧格式
1. 各字段的意义
PPP帧的首部含有四个字段(不是字节),尾部含有两个字段。
(1)首部的第一个字段和尾部的第二个字段都是标志字段F,规定为0×7E(01111110).标志字段F表示一个帧的开始或者结束。连续出现两次表示空帧,丢弃。
(2)首部的地址字段A规定为0×FF(11111111),控制字段C规定为0×03(00000011)。最初曾考虑这两个字段其他值以及意义,至今未给出。因此这两个字段没有携带信息。
(3)首部第四个字段是2字节的协议字段。其含义为:
0×0021:信息字段是IP数据报;
0×C021:信息字段是PPP链路控制协议LCP的数据。
0×8021:表示是网络层的控制信息。
(4)信息字段的长度是可变的,最多不超过1500字节。(MTU)
(5)尾部中的第一个字段(两个字节)是使用CRC的帧检测序列FCS。
2. 字节填充
当信息字段中出现和标志字段(0×7E)一样的组合时,需要采用一些措施改变。
PPP使用异步传输时,将转义字符定义为0×7D(01111101),并使用字节填充:
(1)把信息字段中每个0×7E字节转变为2字节序列0×7D,0×5E。
(2)把信息字段中每个0×7D字节转变为2字节序列0×7D,0×5D。
(3)若信息字段中出现ASCII码的控制字符(即数值小于0×20的字符),则在该字符前加入一个0×7D字节,同时改变该字符的编码。
3. 零比特填充
PPP协议在使用SONET/SDH链路时,使用同步传输而不是异步传输(逐个字符传输)。在这种情况下使用零比特填充法:
在发送端如果有连续的5个1,则立刻填入一个0.这样就确保不会出现连续的6个1,就不会出现0×7D。
三、PPP协议的工作状态
PPP链路初始化步骤:
1. 用户拨号接入ISP,建立一条从个人电脑到ISP的物理连接。
2. 用户电脑在物理连接建立好后,向ISP发送一系列LCP分组(封装成多个PPP帧),以建立LCP连接。
3. 网络控制协议NCP为用户个人电脑配置一个临时的IP地址。
4. 用户成为互联网上一个拥有IP地址的主机了。
5. 通信完毕之后,NPC释放网络连接,收回分配出去的IP地址。
6. LCP释放数据链路层连接。
7. 最后释放物理层连接。