共计 3398 个字符,预计需要花费 9 分钟才能阅读完成。
点对点协定 PPP
在通信链路较差的年代,在数据链路层应用牢靠传输协定已经是一种好办法,比较简单的 点对点 PPP 协定 则是目前应用最宽泛的数据链路层协定。
PPP 协定的特点
互联网用户通过都要连贯到某个 ISP 能力接入到互联网。PPP 协定就是用户计算机和 ISP 进行通信时所应用的数据链路层协定。如图(图 3 -9)
ppp 协定是 IETF 在 1992 年制订的,当初的 PPP 协定在 1994 年就曾经成为了互联网的正式规范[RFC 1661]。
PPP 协定应该满足的需要
IEFE 认为,在设计 PPP 协定的时候就应该从以下方面思考:
- 简略
数据链路层没有必要提供比 IP 协定更多的性能,因而,对数据链路层的帧,不须要纠错,不须要排序号,也不须要流量管制。 - 封装成帧
PPP 协定必须规定 非凡的字符作为帧定界符(即标记一个帧的开始字符和完结字符),以便接收端从收到的比特流中可能精确地找出帧的开始和完结地位。 - 透明性
PPP 协定必须放弃数据传输的透明性,也就是说,如果数据当中呈现了与帧定界符一样的比特组合的时候,就要采取有效的措施来解决这个问题。 - 多种网络协议
PPP 协定可能在 同一条物理链路上同时反对多种网路层协定 的运行,当点对点链路所连贯的是局域网或者路由器的时候,PPP 协定必须同时反对在链路所连贯的局域网或者路由器上运行的各种网络协议。 - 多种类型链路
除了要反对多种网络层协定,还要反对在多种类型上的数据链路上运行。 - 过错检测
PPP 协定必须可能对接收端接管到的数据帧进行帧检测,如果呈现谬误, 立刻抛弃掉这个谬误的帧 , 如果接管到的谬误帧不抛弃,就会在网络上持续向前到网络层进行转发,这回白白抛弃掉很多的网络资源。 - 检测连贯状态
PPP 协定必须要有一种可能自动检测链路是否在失常工作的机制。 - 最大传输单元
PPP 协定必须对每一种类型的点对点链路设置 最大传输单元 MTU 的规范默认值 (1500 字节),这样做是为了促成各种实现之间的可操作性。 如果高层协定发送的分组超过了 MTU 值,PPP 就会抛弃掉这样的帧,并返回过错,报告给下层 ,须要留神的是,MTU 是数据链路层的帧能够载荷的 数据局部的最大长度,而不是帧的总长度。 - 网络层地址协商
PPP 协定必须提供一种使通信的两个网络层(例如:两个 IP 层) 的实体可能通过协商晓得或者可能配置彼此的网络地址。协商的算法应该尽可能的简略,并且可能在所有的请款下该失去后果。这对拨号连贯的链路特地的重要,因为如果仅仅在链路层建设了连贯而不晓得对方的网络层地址,则不可能保障早网络层传输分组。 - 数据压缩协商
PPP 协定必须可能提供一种办法协商应用数据压缩算法。然而 PPP 协定并不要求将数据压缩到标准化。
在 TCP/IP 协定族中,牢靠传输由传输层的 TCP 协定管制,因而数据链里层的 PPP 协定不须要进行纠错,不须要设置序列号,也不须要进行流量管制。PPP 协定不反对多点线路(即一个主站和链路上的多个从站 i 纪念性通信,它只反对点对点的链路通信。此外,PPP 协定支反对全双工链路)。
PPP 协定的组成
PPP 协定有以下三局部
- 一个将残缺的 IP 数据报封装到串行链路上。
- 一个用来建设,配置和测试数据链路层的 链路控制协议 LCP(Link Control Protocol)。通信的单方能够协商一些选项。
- 一套网络控制协议NCP,其中的每一个协定反对不同的网络层协定,如 IP 层,DECnet 等。
PPP 协定的帧格局
各字段的意义
如图
PPP 帧的首部和尾部别离为四个字段和两个字段。
- 首部的第一个字段和尾部的第二个字段都是标记字段,规定为 0x7E(01111110), 标记着一个帧的开始或者完结, 因而标记字段就是 PPP 帧的定界符。间断两帧之间只须要用一个标记字段,如果呈现间断两个标记字段,则示意是一个空的 PPP 帧,该当抛弃。
2. 首部当中的地址字段 A 规定为 0xFF, 管制字段 C 规定为 0x03(00000011)。(这两个字段没有理论什么用处)
PPP 首部的第四个字段是 2 字节的协定字段
- 当协定字段为 0x0021, 代表的是 IP 数据报;
- 当协定字段为 0xC021, 代表的是链路控制协议 LCP 数据;
- 当协定字段为 0x8021, 代表的是网络层的控制数据;
- 信息字段的长度是可变的,但不能超过 1500 字节。
- 尾部的第一个字段 (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),而信息字段蕴含特定的配置申请。链路的另一端能够发送以下几种响应的一种:
- 配置确认帧:所有选项都承受。
- 配置否定帧:所有配置都了解但不能承受。
- 配置回绝帧:选项中有的无奈辨认或者不能承受,须要协商。
协商完结后就建设了 LCP 链路,接着就进入 甄别 状态,在这一状态,只容许传送 LCP 协定的分组,甄别协定的分组以及监控链路品质的分组,如果甄别失败,则转到链路终止状态,若甄别胜利,则进入 网络层协定状态。
在网络层协定状态中,PPP 链路的两端的网络控制协议 NCP 依据网络层的不同协定互相交换网络层网络层特定的网络管制分组。这个步骤很重要的,因为当初的路由器可能同时反对网络层协定。总之,PPP 协定的两端的网络层能够运行不同的网络层协定,但依然能够应用同一个 PPP 协定进行通信。
当网络层配置结束后,链路就进入可进行通信的 链路关上 状态,链路的两个 PPP 端点能够彼此发送分组。两个 PPP 端点还能够发送回送申请 LCP 分组和回送答复 LCP 分组,以查看链路的状态。
数据传输完结后,能够由链路的一端发送 终止申请 LCP 分组 申请终止链路连贯,在收到对方发送过去的 LCP 分组后,转到 链路终止状态 ,如果链路呈现故障,也会从 链路关上 状态转到 链路终止 状态,当调制解调器的载波进行后,则返回到 链路静止 状态。