数据链路层-PPP协议

用途

广域网路由器之间的专用线路,使用的是PPP协议。

用户计算机与ISP进行通信时,所使用的数据链路层协议通常是点对点协议PPP(Point-to-Point Protocol)或PPPOE)。

PPPOE既有Ethernet灵活组网的优势,又可以通过PPP做认证、计费等,也能发挥PPP点对点的优势,把宽带用户相互隔离(互相不能访问)。由于PPP点对点的特性,宽带用户之间不能相互访问,宽带用户能够与运营商的路由器相互访 问。

 

 组成

1. 将上层数据包封装为数据帧的方法

2. 一个LCP(Link Control Protocol),用于管理数据链路(创建、配置、测试、终止链路)

3. 一套NCP(Network Control Protocol),用于支撑不同的上层协议

ppp链路的工作流程:

1. 建立和配置链路 

2. 链路认证

3. 协议协商

4. 使用链路

5. 终止链路

 

封装成帧

PPP报文可由Protocal字段标识不同类型的PPP报文。例如,当Protocol为0xC021时,代表LCP报文,此时又由Information中的Code标识不同的LCP报文类型。

 1.Flag标志字段,为帧定界符,标识帧的起始和结束位置,为固定值0x7E

 2. Address标识接收方端口地址,PPP协议目前仅用于点到点的链路通讯,因此接收方是唯一的 ,故取固定值0xFF

 3. Control为控制字段,取固定值0x03,表示无序号信息(Unnumbered Information)

 4. Protocol字段为协议字段,用来标识PPP帧封装的协议数据类型,长度为2字节。此字段使PPP得以封装不同的协议。

 5. Information字段为信息字段,,该字段长度不固定,最大长度等于MRU(Maximum Receive Unit)值(1500字节)。此字段存放上层交付的数据,例如LCP、NCP,IP等。

 6. FCS(Frame Check Sequence)字段为帧校验和字段,用来检测PPP帧的完整性(CRC计算),长度为2字节。

透明传输

如果信息字段中出现帧定界符,就会导致接收端误以为帧结束了,因此必须对信息字段中出现的0x7E进行转义。

字节填充

当PPP使用异步传输时(以字节为单位),则使用字节填充方式,规定转义符为0x7D。具体填充方式:

  1. 将每一个x07E转义为 0x7D5E

  2. 将每一个0x7D转义为 0x7D5D

  3. 如信息字段中出现ASCII控制字符,则将控制字符也转义。例如当出现0x03转义为 0x7D03

零比特填充

当PPP使用同步传输时(以bit为单位),则使用零比特填充方式:

在发送端由硬件或软件扫描信息字段,如果出现连续的5个1则立即填入一个0。

 在接收端,也会扫描信息字段,如果出现连续的5个1,则将后面的0丢弃。

 

数据链路管理

PPP使用LCP进行数据链路管理。首先讨论LCP的协议格式:

  • Code为代码字段(也称类型字段),长度为1字节,用来标识LCP中链路控制报文的类型。
  • Identifier为标识符字段,长度为1字节,是报文的唯一标识,用于匹配请求和回复。
  • Length为长度字段,长度为2字节,Length字段指出该报文的长度,报文长度包括Code,Identifier,Length和Data。
  • Data为数据字段,长度是零或多个八位字节,由Length字段声明。

报文类型和格式

 当LCP报文的Code字段为0x01时,表示为Configure-Request报文。Configure-Request报文的Data字段有多个Options(选项)构成。每个Option的形式为TLV(Type,Length,Value)

  • Type为类型字段,用于区分协商的参数。
  • Length为长度字段,Length字段指出该配置选项(包括Type、Length和Data字段)的长度。
  • Data为数据字段,Data字段为零或者多个字节,其中包含配置选项的特定详细信息。

链路建立和配置

  •  当需要建立逻辑链路时,发起方发送Configure-Request(配置请求)报文,用于协商参数;
  • 若接收方收到的每一个配置选项的值都可接受,则回送Configure-Ack(配置确认)报文;
  • 若收到的配置选项是可以识别,但部分配置选项参数不能接受,则回送Configure-Nak(配置否认)报文,并标示出需要重新协商的配置选项;
  • 若配置选项不可识别或不可接受,则回送Configure-Reject(配置拒绝)报文。

Configure-Request(配置请求)报文示例:

 链路终止

 

链路测试和维护

 

链路认证

PPP建立和配置数据链路后,紧接着要进行认证。PPP有PAP核CHAP两种认证方式,具体使用哪一种由PPP在配置链路时的协商结果决定。

PAP认证

PAP(Password Authentication Protocol,口令认证协议),使用密码口令进行链路认证。

优点:认证流程简单

缺点:认证只能在链路建立阶段进行,身份和口令是以明文进行传输,安全性低

认证流程

 若PPP帧中Protocol字段取值为0xc023时,表示Information字段承载的是PAP报文。报文格式如下:

 

CHAP认证

CHAP(Challenge-Handshake Authentication Protocol,口令握手认证协议)。CHAP为三次握手协议,可以在链路建立和数据通信阶段多次使用,进行认证,同时安全性较高。

认证过程中需配合事先协商好的算法,确认被认证方的身份,通常使用MD5(Message Digest Algorithm 5)作为其默认算法。只在网络上传输用户名,而不传输用户口令。

认证流程

  若PPP帧中Protocol字段取值为0xc223时,表示Information字段承载的是CHAP报文。报文格式如下:

 

链路网络层协议协商

链路认证完成后,需要进行网络层协议及相关参数的协商。PPP有一组NCP(Network Control Protocol),用于建立、配置网络层协议。

NCP为一组协议的总称,对于不同的网络层协议,使用不同的NCP子协议进行协商。在网络上流行的IP协议使用IPCP(Internet Protocol Control Protocol,IP控制协议)协议进行协商。

IPCP会完成协商IP地址等工作,其后在该PPP链路上传送IP数据报;若IP数据报传送完毕,若要关闭IP协议,仍需通过IPCP协商终止;

若PPP帧中Protocol字段取值为0x8021时,表示ppp正在使用IPCP报文进行网络层协议协商。报文格式如下:

IPCP Configure-Request报文示例:

 IPCP协议中,通信双方可协商的配置选项包括3个:

  • 多个IP地址协商(很难全部协商成功,因此该选项很少使用)
  • IP压缩协议(IP Compression Protocol),用于协商压缩协议,默认为不压缩
  • IP地址协商,若发起方请求对端分配一个IP地址,接收方应会返回一个合法的IP地址。

整个过程与LCP类似:

 参考:https://blog.csdn.net/HinsCoder/article/details/130454920

posted @ 2023-12-05 14:24  小张同学哈  阅读(367)  评论(0编辑  收藏  举报