PPP——点到点协议

一。PPP协议的基本概念

PPP:是Point-to-Point Protocol的简称,及点到点协议。该协议和以太网协议一样,也是一个数据链路层协议。

PPP协议的前身是SLIP协议和CSLIP协议,现在这两种协议已经不再使用。

与以太网协议工作在以太网接口和以太网链路上不同,PPP协议是工作在串行接口和串行链路上

常见的支持PPP协议的串行接口:EIA RS-232-C接口、EIA RS-422接口、EIA RS-423接口、ITU-T V.35接口等。

实际上,任何串行接口,只要能够支持全双工通信方式,都可以支持PPP协议。而且,PPP协议对于串行接口的信息传输速率没有特别的要求,只要串行链路两端的串行接口在速率上保持一致就可以。

问:什么是点到点、oint-to-Point、P2P?

利用以太网协议(属于数据链路层协议)建立的二层网络红是可以包含多个(两个或两个以上)接口的。

如上图:该网络中包含了两个二层网络A和B,每个二层网络都是一个以太网,每个二层网络中都包含了很多的以太接口,每个二层网络内部的不同以太接口之间都可以通过交互以太帧的方式来实现二层通信。

所以,也把以太网称为一种多点接入网络(Multi-Access Network),含义是:指这样的网络中可以包含多个(两个或两个以上)接入口,且网络内部的任意两个接口之间都可以进行二层通信。

利用PPP协议建立的二层网络称为PPP网络。一个PPP网络包含且只能包含两个PPP接口,连接这两个接口的链路称为PPP链路,这两个接口通过交互PPP帧来实现二层通信。

如上图所示:该网络中包含了3个二层网络,二层网络A时一个以太网,二层网络B时一个PPP网络,二层网络C也是一个PPP网络。由于一个PPP网络包含且只能包含两个PPP接口,每个接口被简化的称为一个“点”,所以一个PPP网络也经常被称为一个“点到点网络”或“P2P网络”。

分析:

1.路由器A的基本工作过程:

路由器A有两个接口,一个是以太口,一个是PPP接口。如图所示:路由器A的以太口从以太链路上接收到一个以太帧后,会将这个以太帧中的IP报文提取出来,再将IP报文转移到PPP接口。PPP接口会将这个IP报文封装成一个PPP帧,然后将其PPP帧发送至PPP链路上。另外,路由器A的PPP接口从PPP链路上接收到一个PPP帧后,会将这个PPP帧中的IP报文提取出来,然后将这个IP报文转移到以太口。以太口会将这个IP报文封装成一个以太帧,然后将此帧发送到以太网链路上。

2.路由器B的基本工作过程:

路由器B有两个接口,这两个接口都是PPP接口。如上图:路由器B的PPP接口Intf-1从PPP链路上接收到一个PPP帧后,会将PPP帧中的IP报文提取出来,然后将IP报文转移到PPP接口Intf-2。Intf-2会将这个IP报文封装成一个PPP帧,然后将这个PPP帧发送到PPP链路上。此外,路由器B的PPP接口Intf-2从PPP链路上接收到一个PPP帧后,会将PPP帧中的IP报文提取出来,然后将IP报文转移到PPP接口Intf-1。Intf-1会将这个IP报文封装成一个PPP帧,后将其发送至PPP链路上。

总结:

1.PPP接口是数据链路层(二层)通信的终结点,也可以说,PPP接口是三层接口。

2.PPP协议还包含了若干个附属协议,这些附属协议也称为成员协议。PPP协议的成员协议主要包括一个被称为LCP的链路控制协议,以及一系列的被称为NCP的网络控制协议。

3.PPP协议对于PPP链路的长度是没有规定的。PPP链路经常应用在广域网连接中;PPP技术被称为是一种广域网技术。

二。PPP帧的格式

各字段的含义:

(1)Flag:该字段的长度为8bit,取值固定为0x7e。标志了一个PPP帧的开始或结束;它既标志了当前PPP帧的开始,同时也标志了前一个PPP帧的结束。

注意:一个PPP帧的Information字段中是不允许出现0x7e的,因为这会使PPP帧的接收方错误的将其认为成Flag。若一个PPP只帧中的Information中需要包含0x7e时,则需要经过“转意”处理。

(2)Address:该字段长度为8bit,取值固定为0xff。该字段并不是一个MAC地址,但是它具有广播地址的含义,意思是“所有的接口”。

PPP帧是在一条单一的PPP链路上固定的从此接口运动到彼接口,所以PPP帧不像以太帧那样包含了源MAC地址和目的MAC地址等信息。实际上,PPP接口根本就不需要属于自己的MAC地址,MAC地址对于PPP接口来讲是无用的。

(3)Protocol:该字段的长度为16bit,其取值决定了Information字段包含的是什么样的协议报文。类似于以太帧中的类型字段。

当Protocol字段的取值为0xc021:表明Information字段是一个LCP报文;当Protocol字段的取值为0x8021:表明Information字段是一个IPCP报文。(IPCP是网络控制协议——NCP中的一种);当Protocol字段的取值为0x0021:表明Information字段是一个IP报文。

(4)Information:该字段是PPP帧的载荷数据,长度可变。

(5)FCS:该字段长度为16bit,作用是对PPP帧进行差错校验。

三。PPP的基本工作流程

PPP协议是一种点到点协议,它只涉及位于PPP链路两端的两个接口。当在分别讨论其中一个接口时,习惯将其称为本地接口或本端接口,把另一个接口称为对端接口或远端接口,或简称为Peer。

通过串行链路连接起来的本地接口和对端接口在上电之后,并不能马上就开始互相发送携带有像IP报文这样的网络层数据单元的PPP帧。本地接口和对端接口在开始相互发送携带像 IP报文这样的网络层数据单元的PPP帧之前,必须经过一系列负杂的协商过程(可能包括认证过程)——PPP的基本工作流程

PPP基本工作流程总共包含5个阶段:Link Dead阶段(链路关闭阶段)、Link Establishment阶段(链路建立阶段)、Authentication阶段(认证阶段)、Network Layer Protocol阶段(网络层协议阶段)、Link Termination阶段(链路终结阶段)。

(1)第一阶段——Link Dead阶段:在这个阶段中,PPP接口的物理层功能尚未进入到正常的状态。只有当本端接口和对端接口的物理层功能都进入到正常状态之后,PPP才能进入到下一个工作阶段,即Link Establishment阶段。

(2)第二阶段——Link Establishment阶段:在此阶段,本端接口会与对端接口相互发送携带LCP报文的PPP帧。也就是指,该阶段就是双方交互LCP报文的阶段。通过LCP报文的交互,本端接口会与对端接口协商若干基本但重要的参数,以确保PPP链路可以正常运行。

在Link Establishment阶段,本端接口和对端接口还必须约定好是直接进入到Network  Layer Protocol阶段,还是先进入到Authentication阶段,再进入到Network  Layer Protocol阶段。如果需要进入到Authentication阶段,还必须约定好使用的认证协议。

(3)第三阶段——Network Layer Protocol阶段:如果PPP的Link Establishment阶段顺利结束,并且PPP协议的双方约定无需进行认证,或者双方顺利的结束了认证阶段,则PPP会自动进入到Network  Layer Protocol阶段在该阶段中,PPP协议的双方会首先通过NCP协议来对网络层协议的参数进行协商,协商一致后,双方才能在PPP链路上传递携带相应的网络层协议数据单元的PPP帧。

四。PPP之链路建立阶段

LCP协议是PPP协议的主要成员协议之一。在PPP的Link Establishment阶段,本端接口和对端接口总是发送携带有LCP报文的PPP帧。

LCP报文的格式:

LCP报文包含了4个字段:Code字段、Identifier字段、Length字段、Data字段。

(1)Code字段:该字段可以取不同的值,用以区分不同类型的LCP报文。

(2)Identifier字段:该字段是用来对端接口发送的LCP报文的总长度和对端接口发送的回应报文进行匹配的。LCP报文中的Length字段表明了该LCP报文的总长度(即Code字段、Identifier字段、Length字段、Data字段的长度之和)。其中,Data字段会的内容和长度会因为LCP报文类型的不同而不同。

1.Configure-Request报文(配置请求报文):

在Link Establishment阶段,本端接口和对端接口都必须至少向对方发送一个Configure-Request报文,该报文包含了发送发对于所有的配置参数的期望值。

(1)如果对方向自己回应一个Configure-Ack报文,则说明对方已经认可自己对于所有配置参数的期望值;

(2)如果对方对于自己发送的Configure-Request报文回应了一个Configure-Nak报文,说明对方否定了自己对于某些配置参数或所有的配置参数的期望值。必须修改自己对于相应的配置参数的期望值,在重新向对方发送一个Configure-Request报文,等待对方的新的回应。

(3)如果双方都接收到了对方发送的Configure-Ack报文,说明双方对于配置参数的协商已经达到一致,同时也标志着Link Establishment阶段的顺利结束。

2.Configure-Request报文的格式:

Configure-Request报文的Data阶段总共可以包含8个配置选项,每个配置选项其实就是一个需要协商的配置参数。每个配置选项都由3个字段组成:Type字段、Length字段、Data字段。

MRU(所允许的最大字节长度):该配置选项的Type字段的值为1,Length字段的值为4(说明:MRU配置选项的总长度为4个字节,其中Type字段占了1个字节,Length字段占了1个字节,Data字段占了2个字节)。

2.Authentication Protocol配置选项:

该配置选项的Type字段的值为3,Length字段的值为4或者为5。

(1)若Data字段开始的两个字节的值为0xc023,则Length字段的值为4;若Data字段开始的两个字节的值为0xc223,则Length字段的值为5。

(2)若Data字段开始的两个字节的值为0xc023,表明发送这个Configure-Request报文的接口希望在PPP的Authentication阶段采用PAP协议来对对端接口进行认证;若Data字段开始的两个字节的值为0xc223,表明发送这个Configure-Request报文的接口希望在PPP的Authentication阶段采用CHAP协议来对对端接口进行认证。

(3)Data字段开始的两个字节的值为0xc023时,Data字段的总长度只有2个字节;Data字段开始的两个字节的值为0xc223时,Data字段的总长度有3个字节,其中最后一个字节的值用来表示CHAP协议需要采用的加密算法。

补充:PPP接口关于Authentication Protocol这个配置选项进行协商后的结果不一定是对称的。另外,此接口对彼接口进行认证时所采用的认证协议与彼接口对此接口进行认证所采用的认证协议可以是同一种协议,也可以是不同的协议。

在PPP的Link Establishment阶段,所需要协商的配置选项总共有8个,这8个选项是包含在同一个Configure-Request报文中一次性进行协商的。

五。PPP之认证阶段

Authentication阶段涉及PAP和CHAP这两个认证协议,它们都是PPP协议的成员协议。

1.PAP报文的格式:

2.Authenticate-Request报文的格式:

Peer-ID字段:用户名;Password字段:与用户名相对应的密码。

3.PAP认证的基本过程:

若在PPP的Link Establishment阶段,B接口向A接口发送的Configure-Request报文中表明了B将对A进行PAP认证,并且B接口收到了A接口回应的Configure-Ack报文,则接下来的Authentication阶段,作为认证方的B就会对被认证方的A进行PAP认证。

认证开始时,A会向B发送包含了用户名和密码的Authenticate-Request报文。B在收到该报文后,会从中提取出用户名和密码,并在自己的用户列表中查找A提供的用户名。

(1)若B在自己的用户列表中不能查到A提供的用户名,则B会向A会员一个Authenticate-Nak报文,表明认证失败;

(2)若B在自己的用户列表中能查到A提供的用户名,但用户列表中相应用户的密码与A提供的密码不一致,则B会向A回应一个Authenticate-Nak报文,表明认证失败;

(3)只有当A提供的用户名和密码完全匹配上B的用户列表中的相应条目时,B才会向A回应一个Authenticate-Ack报文,标志着A成功通过B的认证。

注意:PAP认证时,用户名和密码只能以明文形式包含在Authenticate-Request报文中,存在很大的安全隐患。而CHAP认证时,相关的认证信息可以以密文的形式包含在CHAP报文中,安全性保障比PAP认证高。

六。PPP之网络层协议阶段

如果PPP的Link Establishment阶段顺利结束,并且PPP协议的双方约定无需进行认证,或者双方顺利的结束了认证阶段,则PPP会自动进入到Network  Layer Protocol阶段。。在该阶段中,PPP协议的双方会首先通过NCP协议来对网络层协议的参数进行协商,协商一致后,双方才能在PPP链路上传递携带相应的网络层协议数据单元的PPP帧。

NCP协议是一个泛称,它包含了许多具体的协议。而每一个特定的网络层协议都有一个特定的NCP与之相对应。

例如:如果PPP链路上需要传递IP报文,则PPP链路两端的接口都必须通过IPCP(IP控制报文)这个NCP先进行协商,协商一致后,PPP链路上才能传递携带有IP报文的PPP帧,等等。

IPCP主要是通过Configure-Request报文和Configure-Ack报文对网络层的IP协议进行协商的。因为协商是一个双向的过程,PPP链路上的每一个接口都会向对端接口发送Configure-Request报文。每当一个接口都收到对端接口回应的Configure-Ack报文时,才标志着协商的一致。当IPCP协商一致后,PPP链路上才可以开始传递携带有IP报文的PPP帧了。

强调:此时的PPP仍然工作在Network Layer Protocol阶段。

IPCP需要协商的内容:

(1)关于IP报文的压缩方式,即协商双方在传递IP报文时,IP报文时采用标准的、非压缩形式的报文格式,还是采用压缩形式的报文格式。

(2)关于接口的IP地址。

描述:

若网络管理员事先配置了接口A的IP地址为IP-A,且希望对端知道和认可这个IP地址,则A会在发送的Configure-Request报文的配置选项中包含IP-A。而B在接收到A的这个Configure-Request报文后,会检查Configure-Request报文的配置选项中的IP-A是否是一个合法的单播IP地址,是不是与自己的IP地址冲突。如果B发现IP-A是一个合法的单播IP地址,且与自己的地址不冲突,则B会向A回应一个Configure-Ack报文,表示自己知道并认可了这个IP地址IP-A;若B发现IP-A不是一个合法的单播IP地址,或者与自己的地址发送冲突,B就会向A回应一个Configure-Nak报文,表示自己不认可A的IP地址为IP-A,那么A久需要对IP-A进行修改并重新发送Configure-Request报文。

 如果网络管理员没有给接口A配置IP地址,但是希望对端设备给接口A分配一个IP地址,则在A发送的Configure-Request报文的配置选项中会包含0.0.0.0这个特殊的IP地址。B在收到这个Configure-Request报文后,会检查该报文的配置选项中的IP地址。当B发现这个IP地址为0.0.0.0时,会明白对端是在请求从自己这里获取一个IP地址。于是,B就会向A回应一个Configure-Nak报文,并把自己分配给接口A的IP地址置于该报文的配置选项中。A在收到B发送的Configure-Nak报文后,会提取出其中的IP地址,然后重新想B发送一个Configure-Request报文,该报文的配置选项中包含了这个IP地址。而B在接收到A发送的Configure-Request报文后,仍然要检查其中的IP地址是不是一个合法的单播IP地址,并且是否与自己的地址发生冲突。如果该IP地址是一个合法的单播IP地址,且与B的地址不冲突,则B就会向A发送一个Configure-Ack报文。最后,A就成功的从B处获取了该IP地址。

NCP协商与LCP协商的比较:

(1)两个过程很相似,都是通过交互Configure-Request报文、Configure-Ack报文、Configure-Nak报文等报文来完成协商的。(2)所有的配置选项都是包含在一个Configure-Request报文中一次性进行协商的。

(3)如果某些配置选项没有出现Configure-Request报文中,则表明这些配置选项是取PPP协议规定的“缺省值”。

注意:路由器上的PPP接口如果没有配置IP地址,通信也是可以正常进行的。

 

 

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柒憨憨吖~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值