PPP的特点
- 简单。数据链路层的PPP非常简单:接收方每收到一个帧,就进行CRC检验。如CRC检验正确,就收下这个帧;反之,就丢弃这个帧。使用PPP的数据链路层向上不提供可靠传输服务,因此,不需要使用帧的编号(支持可靠传输的停止等待协议或ARQ协议等需要使用序号)。
- 封装成帧。PPP规定了特殊的字符作为帧定界符(即标记一个帧的开始和结束的字符),以便使接收端从收到的比特流中能准确地找出帧的开始和结束位置。
- 透明性。PPP能够保证数据传输的透明性。
- 多种网络层协议和多种类型链路。PPP能够在同一条物理链路上同时支持多种网络层协议(IP和IPX等)的运行,以及能够在多种类型的点对点链路上运行。
- 差错检测。PPP能够对接收方接收到的帧进行差错检测,并立即丢弃有差错的帧。
- 检测连接状态。PPP能够及时自动检测链路是否处理正常工作状态。
- 最大传送单元。PPP对每一种类型的点多点链路设置最大传送单元MTU的标准默认值。MTU是数据链路层的帧可以载荷的数据部分的最大长度,而不是帧的总长度。
- 网络层地址协商。PPP提供了一种机制使通信的两个网络层(如:两个IP层)实体能够通过协商知道或能够配置彼此的网络层地址。
PPP的组成
PPP有3个组成部分。
- 一个将IP数据报封装到串行链路的方法。PPP既支持面向字符的异步链路(无奇偶校验的比特数据),也支持面向比特的同步链路。IP数据报在PPP帧中作为信息部分被传输。这个信息部分的长度受最大传送单元MTU的限制。
- 一个用来建立、配置和测试数据链路连接的链路控制协议(LCP)。通信的双方可协商一些选项。
- 一套网络控制协议(NCP),其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层、DECnet,以及AppleTalk等。
PPP的帧组成
PPP帧的首部和尾部分别为四个字段和两个字段。
首段的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E。标志字段表示一个帧的开始或结束。因此标志字段是PPP帧的定界符。连续两帧之间只需要用一个标志字段,如果出现连续两个标志字段,就表示这是一个空帧,应该丢弃。
首部的第二个字段为地址字段A规定为0xFF,第三个字段为控制字段规定为0x03。这两个字段实际上没有携带PPP帧的信息。
PPP帧首部的第四个字段是2字节的协议字段。当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制协议LCP的分组,而0x8021表示这是网络控制协议NCP的分组。
信息字段的长度是可变的,不超过1500字节。
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。
PPP的工作状态
PPP链路的起始和终止状态永远是“静止”状态,这时并不存在物理层的连接。当检测到调制解调器的载波信号,并建立物理层连接后,PPP就进入链路的”建立“状态。这时LCP开始协商一些配置选项,即发送LCP的配置请求帧。这是个PPP帧,其协议字段配置为LCP对应的代码,而信息字段包含特定的配置请求。
协商结束后就进入“鉴别”状态。若通信的双方鉴别身份成功,则进入“网络”状态。当网络层NCP配置完毕后,链路就进入可进行数据通信的“打开”状态。两个PPP端点还可发送回送请求LCP分组和回送回答LCP分组以检查链路的状态。数据传输结束后,链路的一段发出终止请求LCP分组请求终止链路连接,而当收到对方发来的终止确认LCP分组后,就转到“终止”状态。当载波停止后则回到“静止”状态。