点对点协定PPP

在通信链路较差的年代,在数据链路层应用牢靠传输协定已经是一种好办法,比较简单的点对点PPP协定则是目前应用最宽泛的数据链路层协定。

PPP协定的特点

互联网用户通过都要连贯到某个ISP能力接入到互联网。PPP协定就是用户计算机和ISP进行通信时所应用的数据链路层协定。如图(图3-9)

ppp协定是IETF在1992年制订的,当初的PPP协定在1994年就曾经成为了互联网的正式规范[RFC 1661]。

PPP协定应该满足的需要

IEFE认为,在设计PPP协定的时候就应该从以下方面思考:

  1. 简略
    数据链路层没有必要提供比IP协定更多的性能,因而,对数据链路层的帧,不须要纠错,不须要排序号,也不须要流量管制。
  2. 封装成帧
    PPP协定必须规定非凡的字符作为帧定界符(即标记一个帧的开始字符和完结字符),以便接收端从收到的比特流中可能精确地找出帧的开始和完结地位。
  3. 透明性
    PPP协定必须放弃数据传输的透明性,也就是说,如果数据当中呈现了与帧定界符一样的比特组合的时候,就要采取有效的措施来解决这个问题。
  4. 多种网络协议
    PPP协定可能在同一条物理链路上同时反对多种网路层协定的运行,当点对点链路所连贯的是局域网或者路由器的时候,PPP协定必须同时反对在链路所连贯的局域网或者路由器上运行的各种网络协议。
  5. 多种类型链路
    除了要反对多种网络层协定,还要反对在多种类型上的数据链路上运行。
  6. 过错检测
    PPP协定必须可能对接收端接管到的数据帧进行帧检测,如果呈现谬误,立刻抛弃掉这个谬误的帧如果接管到的谬误帧不抛弃,就会在网络上持续向前到网络层进行转发,这回白白抛弃掉很多的网络资源。
  7. 检测连贯状态
    PPP协定必须要有一种可能自动检测链路是否在失常工作的机制。
  8. 最大传输单元
    PPP协定必须对每一种类型的点对点链路设置最大传输单元MTU的规范默认值(1500字节),这样做是为了促成各种实现之间的可操作性。如果高层协定发送的分组超过了MTU值,PPP就会抛弃掉这样的帧,并返回过错,报告给下层,须要留神的是,MTU是数据链路层的帧能够载荷的数据局部的最大长度,而不是帧的总长度。
  9. 网络层地址协商
    PPP协定必须提供一种使通信的两个网络层(例如:两个IP层)的实体可能通过协商晓得或者可能配置彼此的网络地址。协商的算法应该尽可能的简略,并且可能在所有的请款下该失去后果。这对拨号连贯的链路特地的重要,因为如果仅仅在链路层建设了连贯而不晓得对方的网络层地址,则不可能保障早网络层传输分组
  10. 数据压缩协商
    PPP协定必须可能提供一种办法协商应用数据压缩算法。然而PPP协定并不要求将数据压缩到标准化。

在TCP/IP协定族中,牢靠传输由传输层的TCP协定管制,因而数据链里层的PPP协定不须要进行纠错,不须要设置序列号,也不须要进行流量管制。PPP协定不反对多点线路(即一个主站和链路上的多个从站i纪念性通信,它只反对点对点的链路通信。此外,PPP协定支反对全双工链路)

PPP协定的组成

PPP协定有以下三局部

  1. 一个将残缺的IP数据报封装到串行链路上。
  2. 一个用来建设,配置和测试数据链路层的链路控制协议LCP(Link Control Protocol)。通信的单方能够协商一些选项。
  3. 一套网络控制协议NCP,其中的每一个协定反对不同的网络层协定,如IP层,DECnet等。

PPP协定的帧格局

各字段的意义

如图
PPP帧的首部和尾部别离为四个字段和两个字段。

  1. 首部的第一个字段和尾部的第二个字段都是标记字段,规定为0x7E(01111110),标记着一个帧的开始或者完结,因而标记字段就是PPP帧的定界符。间断两帧之间只须要用一个标记字段,如果呈现间断两个标记字段,则示意是一个空的PPP帧,该当抛弃。

2.首部当中的地址字段A规定为0xFF,管制字段C规定为0x03(00000011)。(这两个字段没有理论什么用处)

  1. PPP首部的第四个字段是2字节的协定字段

    • 当协定字段为0x0021,代表的是IP数据报;
    • 当协定字段为0xC021,代表的是链路控制协议LCP数据;
    • 当协定字段为0x8021,代表的是网络层的控制数据;
  2. 信息字段的长度是可变的,但不能超过1500字节。
  3. 尾部的第一个字段(2字节)是应用CRC的帧测验序列FCS。

字节填充

当信息字段呈现了0x7E这样的比特流,就必须采取必要措施使得不会被接收端认为这是帧定界符号。

当PPP应用异步传输的时候(一一字符发送),把每一个0x7E字节转变为两个字节序列(0x7D和0x5E),若信息字段中呈现了0x7D或者0x5E这样的转义字符,则把0x7D转变为2字节序列(0x7D和0x5D);如果呈现了控制字符,例如0x03(在管制字符串示意传输完结),就变成2字节序列(0x7D,0x23)。因为在发送端进行了字节填充,因而在链路上传送的信息字节数就超过了原来的字节数。但接收端在收到字节后再进行与发送端字节填充相同的替换,就能够正确的复原出原来的信息。

0比特填充

当PPP应用同步传输的时候(一连串的比特发送),PPP协定采纳的是0比特字节填充来实现通明传输。

具体做法是(如上图):在发送端,先扫描整个信息段(通常应用硬件扫描,也能够应用软件,不过比较慢),只有发现有5个间断的1,就立刻填入一个0,因而通过这种0比特填充后的数据,就能够保障再信息字段中不会呈现帧界定符号(01111110),接收端在接管到一个帧的时候,先找到一个标记字段F(7E)边界,接着再用硬件对其中的比特流进行扫描。每当发现间断的5个1的时候,就把这个间断的5个1前面的0删除掉,以还原成原来的信息比特流(如图3-11),这样就保障了通明传输:在传输的数据比特流过程中能够传送任意组合的比特流,而不会引起帧边界的错误判断。

PPP协定的工作状态

方才咱们探讨了PPP帧的格局和PPP帧是怎么组成的。然而PPP链路到底一开始是怎么被初始化的呢?当用户拨号进入ISP后,就建设的一条从用户个人电脑到ISP的ISP连贯,这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建设LCP连贯,这些分组及其响应抉择了将要应用的一些PPP参数。接着还要进行网络层配置,网络控制协议NCP给新接入的用户个人电脑调配了一个长期的IP地址,这样,用户个人电脑就能够成为了互联网上一个有IP地址的主机了。

当用户通信结束后,NCP就开释网络层连贯,发出原来调配进来的IP地址,接着LCP开释数据链路层的连贯,最初开释的是物理层的连贯。

上述过程可用图3-12的状态图形容:

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

当用户电脑通过调制解调器呼叫路由器的时候(屏幕上的连贯按钮),路由器就能检测到调制解调器收回的载波信号,在单方建设了物理层连贯之后,PPP就进入了链路建设状态,其目标是建设LCP连贯。

这时候LCP开始协商一些配置项,即发送LCP的配置申请帧,这是个PPP帧,其协定字段为LCP的协定代码(0xC021),而信息字段蕴含特定的配置申请。链路的另一端能够发送以下几种响应的一种:

  1. 配置确认帧:所有选项都承受。
  2. 配置否定帧:所有配置都了解但不能承受。
  3. 配置回绝帧:选项中有的无奈辨认或者不能承受,须要协商。

协商完结后就建设了LCP链路,接着就进入甄别状态,在这一状态,只容许传送LCP协定的分组,甄别协定的分组以及监控链路品质的分组,如果甄别失败,则转到链路终止状态,若甄别胜利,则进入网络层协定状态

在网络层协定状态中,PPP链路的两端的网络控制协议NCP依据网络层的不同协定互相交换网络层网络层特定的网络管制分组。这个步骤很重要的,因为当初的路由器可能同时反对网络层协定。总之,PPP协定的两端的网络层能够运行不同的网络层协定,但依然能够应用同一个PPP协定进行通信。

当网络层配置结束后,链路就进入可进行通信的链路关上状态,链路的两个PPP端点能够彼此发送分组。两个PPP端点还能够发送回送申请LCP分组和回送答复LCP分组,以查看链路的状态。

数据传输完结后,能够由链路的一端发送终止申请LCP分组申请终止链路连贯,在收到对方发送过去的LCP分组后,转到链路终止状态,如果链路呈现故障,也会从链路关上状态转到链路终止状态,当调制解调器的载波进行后,则返回到链路静止状态。