ppp协议 详细说明 


1. 两台设备使用PPP连接,直连接口属于不同网段,是否可以ping通?

可以ping通。因为PPP在进行IPCP协商后会把学习到的直连路由加入到路由表中。

 

2. PPP 协议位于TCP/IP协议栈中哪一层?其主要功能是什么?

PPP协议处于TCP/IP协议栈中的链路层(第二层),是一种提供在点到点链路上传输封装网络层数据包的数据链路层协议;PPP的主要功能是用来在支持全双工的同异步链路上进行点到点之间的数据传输。

 

3. PPP 主要由哪几类协议组成?各类协议的功能是什么?

PPP定义了一整套的协议,其组成及功能如下:

(1)        链路控制协议(LCP:Link Control Protocol),主要用来建立、拆除和监控数据链路。

(2)        网络层控制协议(NCP:Network Control Protocol),主要用来协商在该数据链路上所传输的数据包的格式与类型。

(3)        扩展协议族,主要用于提供对PPP功能的进一步支持。例如用于网络安全方面的验证的PAP和CHAP。

 

4. PPP 协议有哪些特点?

PPP协议的特点如下:

(1)        PPP协议与其他链路层协议不同,PPP既支持同步链路又支持异步链路,而如X25、FR 等数据链路层协议只对同步链路提供支持;

(2)        PPP协议具有各种NCP协议,如IPCP、IPCPv6、IPXCP协议,它更好地支持了网络层协议;

(3)        PPP协议具有验证协议PAP、CHAP,它更好了保证了网络的安全性;

(4)        PPP协议更容易扩充。

 

5. LCP 协商哪些内容,过程如何?

      PPP在建立链路之前要进行一系列的协商,PPP 首先进行LCP协商,协商内容包括MRU(最大传输单元)、魔术字(magic number)、 验证方式异步字符映射等选项(详见RFC1661);LCP协商成功后才进入Establish(链路建立)阶段;任何阶段的协商失败都将导致链路的拆除,MRU用于协商PPP链路的最大包传输能力,该选项向对端指出本端能够接收的最大报文长度,它以字节为单位,指出Information+Padding的长度,不包括framing、Protocol、FCS和任何为透明传输所填充的比特或字节。该选项的缺省值为1500字节。该选项实际上指出本端的一种能力,但并不要求对端一定要最大化使用这种能力。


例如,本端在配置选项中声明MRU为2048 字节,这并不是说要求对端发送的任何报文都要达到2048字节,若对端能满足MRU选项,则回Config ACK报文,若不满足,则回Config NAK报文;魔术字主要用于检测链路自环,PPP靠发送Echo Request和Echo Reply报文来检测自环和维护链路状态;如连续发现有超过最大自环允许数目,Echo Request报文中魔术字与上次发送魔术字相同,则判定网络发生自环现象。如链路发生自环,则就需采取相应措施对链路复位;另外,LCP发送Config Request时也可以检测自环,LCP发现自环后,在发送一定数目的报文后也会复位链路,如果PPP发送的Echo Request报文产生丢失,则在连续丢失最大允许丢失的个数之后,将链路复位,以免过多的无效数据传输。异步字符映射用于同异步转换。

 

6. PAP与CHAP的验证过程分别是由哪方发起的?PAP和CHAP的最大不同点是什么?

PAP是首先由被验证方将自己的用户名及密码送给验证方;而CHAP验证是首先由验证方发起;验证过程的主要区别为:PAP为明文传送密码,而在CHAP验证过程中密码是不在线传送的,属于密文传送。

 

7. PAP的详细验证过程是什么样的?

PAP为两次握手协议,详细验证过程如下:当两端链路可相互传输数据时,被验证方发送本端的用户名及口令到验证方,验证方根据本端的用户表(或Radius服务器)查看是否有此用户,口令是否正确。如正确则会给对端发送ACK报文,通告对端已被允许进入下一阶段协商;否则发送NAK报文,通告对端验证失败。一次认证失败并不会直接将链路关闭,只有当验证不过次数达到一定值时,才会关闭链路,来防止因误传、网络干扰等造成不必要的LCP重新协商过程。

 

8. CHAP的详细验证过程是什么样的?

CHAP为三次握手协议,其单向验证过程分为两种情况:验证方配置了用户名和验证方没有配置用户名。

l              验证方配置了用户名的CHAP验证过程如下:

(1)        验证方主动发起验证请求,验证方向被验证方发送一些随机产生的报文(Challenge),并同时将本端的用户名附带上一起发送给被验证方;

(2)        被验证方接到验证方的验证请求后,根据此报文中验证方的用户名在本端的用户表查找该用户对应的密码,如果在用户表找到了与验证方用户名相同的用户,便利用报文ID、此用户的密钥(密码)和MD5算法对该随机报文进行加密,将生成的密文和被验证方自己的用户名发回验证方(Response);

(3)        验证方用自己保存的被验证方密码和MD5算法对原随机报文加密,比较二者的密文,根据比较结果返回不同的响应(Acknowledge or Not Acknowledge)。


l              验证方没有配置用户名的CHAP验证过程如下:

(1)        验证方主动发起验证请求,验证方向被验证方发送一些随机产生的报文(Challenge);

(2)        被验证方接到验证方的验证请求后,利用报文ID、配置的CHAP密码和MD5算法对该随机报文进行加密,将生成的密文和自己的用户名发回验证方(Response);

(3)        验证方用自己保存的被验证方密码和MD5算法对原随机报文加密,比较二者的密文,根据比较结果返回不同的响应(Acknowledge or Not Acknowledge)。

 

9. PPP LCP协商中的MRU选项是如何取值的?

     PPP LCP协商的MRU(Maximum-Receive-Unit 最大接收单元)是针对PPP报文而言,指发送端PPP报文中信息域的长度不能超过MRU,否则接收端不负责处理,可能会将报文丢弃。

大多数厂家不提供MRU的设置命令而是把MTU的配置值作为本端MRU的值与对端协商MRU。最终PPP链路的MTU的取值应该是:MIN(配置MTU,MIN(本端MRU,对端MRU))

 

因此,封装PPP的接口上的MTU值被改变后,如想让这个改变立即生效,就需触发LCP重新协商。

这里描述的是普通PPP的情形,MP、PPPOX等PPP应用的MTU的最终取值更加复杂一些。

MRU选项是LCP协商成功的必要选项,这个选项最终必须协商成功,不能忽略,最终PPP双方必须确认这个选项,不能否认或拒绝。

 

10. PPP LCP协商中的ACCM选项有什么意义?

     ACCM(Async-Control-Character-Map 异步控制字符映射)选项是在异步链路上用来通知对端哪些字符被本端用于控制,必须被转义(映射)。

     PPP帧中FLAG字段的值是0X7E(实际上大多链路层协议帧中FLAG字段都是这个值)。当这个值出现在帧内容中时需对它进行转义,同步链路中,这个过程是通过位比特填充的技术完成的(即在第5个1与第6个1之间填充0)。异步链路中,特殊字符0X7D被用做转义字符,对一些字符进行转义。由于异步链路中,有些串行接口驱动程序或MODEM需要用一些字符作为控制字符使用,字符的范围是0X00-0X1F(0-31)所以需要对这些字符进行转义处理,大多数情况下并不是这个范围内的所有字符都作为控制字符,因此PPP LCP提供这个选项用来告诉对端,本端将哪些字符作为控制字符处理,请对端将这些字符转义后发送。

ACCM选项用一个32位整数的位的值来表示哪些字符用作控制字符,譬如0X000A0000,第17位与第19位为1,说明字符17(XON)与字符19(XOFF)作为控制字符使用,需要进行转义。

在异步链路上,尤其是低带宽、高时延的异步线路(例如无线)上合理设置ACCM值可以有效避免在数据传输过程中引入额外时延。

异步链路上的LCP协商,这个选项是必要选项,必须协商成功。

 

11. PPP LCP协商中的Magic-number选项有什么意义?

Magic-number选项用来协商双方的魔术字,两端魔术字不能重复,魔术字可用来检测链路的环回情况。

这是一个必要选项,必须被确认否则LCP不能UP。

 

12. PPP LCP协商中的PFC选项有什么意义?

PFC(Protocol-Field-Compression 协议域压缩)选项是用来协商PPP报文的协议域是否可以被压缩,用高位字节的最低位表示此报文是否协议域被压缩,1表示是,0表示没有。压缩后协议域的两个字节会被压缩成一个字节,如IP报文中的0021可被压缩为21。实施者必须能够接收这两种情况(压缩或没有被压缩)的报文。

 

13. PPP LCP协商中的ACFC选项有什么意义?

ACFC(Address-and-Control-Field-Compression地址控制域压缩)选项是用来协商PPP报文的地址、控制域是否可以被压缩。压缩后地址域和控制域会被省略。LCP报文不能进行地址控制域压缩。

 

14. MP LCP协商中的MRRU选项有什么意义?

MRRU(Multilink Maximum Received Reconstructed Unit MP最大接收重构单元)选项可用来通知对端本端要实施MP,这个选项的值是指接收端重组后的MP报文的最大值。这个选项的确认与拒绝主要用来确定对端是否支持MP链路的使用。该选项被拒绝后,则该通道不能作为MP链路使用,而只能作为普通PPP链路使用。

 

15. MP链路上的MTU是如何计算的?

一般MP链路上的MTU的取值依据下面的公式:

MINMRU=MIN(本端MRU,对端MRU)

MINMRRU=MIN(本端MRRU,对端MRRU)

MTU=MIN(配置MTU,MIN(MINMRU,MINMRRU))

如果MP通道是PPPoE之类的链路,MP MTU还要考虑底层的MTU,会更复杂一些。