广域网是可覆盖分范围最大的网络,可跨区跨国设置跨洲提供远距通信。早期的广域网主要解决两个问题,一是长距离传输,二是骨干网络的高速转发。前者主要是通过广域网封装协议PPP/HDLC/FR来解决,后者则是通过ISP内部经常用的ATM协议解决。

广域网接口(全网最细广域网讲解)(1)

PPP协议是一种广域网数据链路层协议,用于全双工(数据可以在两个方向上同时传输,类似于电话)的链路上进行点对点的数据传输。它主要提供了安全认证协议族PAP(密码验证协议)和CHAP(挑战握手认证协议),提供LCP(链路控制协议)用于各种链路层的协商。

广域网接口(全网最细广域网讲解)(2)

工作原理

广域网上采用PPP协议进行点对点链路连接主要有三个协商过程:首先要进行链路层协商,即通过LCP报文来进行链路参数协商,以此建立链路层连接;第二是进行认证协商,连接之后要认证连接是否正确,需要通过建立链路时的认证方式进行链路认证;三是网络层协商,即通过NCP协商来选择并且配置网络层协议来进行网络层的参数协商。

整个协商的过程是由链路两端的接口共同完成的,接口的状态其实就反映了协议的协商阶段:

广域网接口(全网最细广域网讲解)(3)

对应的也是六种链路阶段

1. 链路不可用: 最开始两者还未进行链路协商时的链路状态

2. 链路建立:通过 LCP进行协商

3. 协商认证: 采用PAP/CHAP进行验证

4. 网络层协议:NCP协商

5. PPP会话维持: 维持PPP会话, 定时发送Echo Request报文,并等待Echo Reply报文

6. 网络终止: 终止PPP会话,回到链路不可用阶段。

LCP报文

PPP报文有多种类型,具体怎么判断是何种类型是在Protocol字段标识的,如果字段值为0xco21则表示的是LCP报文。LCP协商就是由不同的LCP报文交互完成的,协商过程的开始可以由两个端口的任意一边发送configure-request报文,内含MRU、认证协议、魔术字相关配置参数,如果接收端与收到的参数相匹配,则响应configure-ack表示两者协商成功。

广域网接口(全网最细广域网讲解)(4)

如果没有收到ack确认报文,那发送方每隔三秒就会重传request报文,连续十次都没有收到回答,就会认为对端是不可用或者压根连接不到的,就不会再发送request报文了。

如果收到request报文的一端后,发现两者参数不匹配,就表示协商不成功,就会回应发送端一个configure-nak报文,这个报文里面就包含着不匹配的参数值,以及它自己可以接受的参数值。发送端接受到后,就会更改自己的参数,然后再重新发送request。

广域网接口(全网最细广域网讲解)(5)

如果收到request报文的一端发现这之中有不能识别的参数,就会发送一个configure-reject响应告诉发送方删除不能识别的参数,然后再发送新的request

以上是采用LCP报文进行链路建立的过程。

协商认证

在链路成功协商建立后,就要进行PPP链路认证,链路认证包含PAP与CHAP两种方式。

采用PAP认证,链路两端要进行两次握手,被认证的一方会将配置的用户名以及密码以明文的方式发送给认证方,包含在发送的Authenticate-Request报文中;认证方收到这个报文后,会在自己的数据库里面寻找有没有对应的信息,如果有的话。就发送Authenticate-Ack报文给被认证方,表示认证成功了;如果没有,就发送Authenticate-Nak报文表示认证失败。

广域网接口(全网最细广域网讲解)(6)

采用CHAP认证则需要三次报文的交互,与PAP不同,CHAP是认证方主动请求。发送Challenge报文,报文内包含着ID以及随机数,被认证方收到报文之后,将进行一次加密运算,最后到一个长度为16比特的摘要信息,此摘要信息与端口上配置的CHAP用户名一起包含在Response报文中发回认证方。认证方收到回复后会按照用户名在自己的数据库中寻找密码信息,也进行一次相同的加密计算,如果得出的结果与response报文中的相同就表示验证成功。

NCP协商

在完成PPP验证协商后,就进入了NCP协商阶段,这个阶段主要是用来配置不同的网络层协议,运用最广泛的就是IPCP协议,它分为静态与动态IP地址协商两种。

静态是指需要手动配置,链路两端都需要发送configure-request报文,之中包含了本地IP地址,两端接受到对方的报文后会检查和自己的有没有冲突(如果IP地址一样就是有冲突),没有冲突就会发送configure-ack报文。

广域网接口(全网最细广域网讲解)(7)