8. 广域网技术
8.1 HDLC 与 PPP
广域网中经常会使用串行链路来提供远距离的数据传输,高级数据链路控制HDLC(High-Level Data Link Control)和点对点协议PPP( Point to Point Protocol)是两种典型的串口封装协议。
- HDLC:用得很少
- PPP:主要运用的协议
8.1.1 串行链路的数据传输方式
串行链路普遍用于广域网中。串行链路中定义了两种数据传输方式:异步和同步。
1. 异步传输
异步传输是以字节为单位来传输数据,并且需要采用额外的起始位和停止位来标记每个字节的开始和结束。起始位为二进制值0,停止位为二进制值1。在这种传输方式下,开始和停止位占据发送数据的相当大的比例,每个字节的发送都需要额外的开销。
- 异步:有起始位和终止位,如果不规定,可能会产生冲突。每次发送的数据携带的量也很少。
2. 同步传输
同步传输是以帧为单位来传输数据,在通信时需要使用时钟来同步本端和对端的设备通信。DCE即数据通信设备,它提供了一个用于同步DCE设备和DTE设备之间数据传输的时钟信号。DTE即数据终端设备,它通常使用DCE产生的时钟信号。
- 同步:DCE计时,DTE学习时间。
8.2 HDLC
1. HDLC协议应用
- High-level Data Link Control,高级数据链路控制,简称HDLC,是一种面向比特的链路层协议(全双工)。
- HDLC是应用于同步传输的,面向比特的链路层协议,继承了同步传输的优点,传输的是数据帧,不依赖于任何字符集,并且还有校验机制,对传输的信息进行编码防止漏传等等。
2. HDLC结构
- HDLC有三种类型的帧:信息帧(I)、监控帧(S)、无编号帧(U)。
8.3 PPP
1. PPP协议应用
- PPP协议是一种点到点链路层协议,主要用于在全双工的同异步链路上进行点到点的数据传输。
2. PPP链路建立过程
对于PPP链路建立过程的描述如下:
-
Dead阶段也称为物理层不可用阶段。当通信双方的两端检测到物理线路激活时,就会从Dead阶段迁移至Establish阶段,即链路建立阶段。
-
在Establish阶段,PPP链路进行LCP参数协商。协商内容包括最大接收单元MRU、认证方式、魔术字(Magic Number)等选项。LCP参数协商成功后会进入Opened状态,表示底层链路已经建立。
-
多数情况下,链路两端的设备是需要经过认证阶段(Authenticate)后才能够进入到网络层协议阶段。PPP链路在缺省情况下是不要求进行认证的。如果要求认证,则在链路建立阶段必须指定认证协议。认证方式是在链路建立阶段双方进行协商的。如果在这个阶段再次收到了Configure-Request报文,则又会返回到链路建立阶段。
-
在Network阶段,PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。如果在这个阶段收到了Configure-Request报文,也会返回到链路建立阶段。
-
NCP协商成功后,PPP链路将保持通信状态。PPP运行过程中,可以随时中断连接,例如物理链路断开、认证失败、超时定时器时间、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段。
-
在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段,直到通信双方重新建立PPP连接。
3. PPP组件
名称 | 作用 |
---|---|
链路控制协议(Link Control Protocol) | 用来建立、拆除和监控PPP数据链路 |
网络层控制协议(Network Control Protocol) | 用于对不同的网络层协议进行连接建立和参数协商 |
Auth | 用于认证 |
4. LCP协商参数
参数 | 作用 | 缺省值 |
---|---|---|
最大接收单元MRU | PPP数据帧中Information字段和Padding字段的总长度 | 1500字节 |
认证协议 | 认证对端使用的认证协议 | 不认证 |
魔术字 | 魔术字为一个随机产生的数字,用于检测链路环路,如果收到的LCP报文中的魔术字和本端产生的魔术字相同,则认为链路有环路 | 启用 |
5. PPP帧格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J14rkdsi-1626071715250)(images\Snipaste_2021-02-24_10-48-43.png)]
6. LCP报文
报文类型 | 作用 |
---|---|
Configure-Request | 包含发送者试图与对端建立连接时使用的参数列表 (配置请求) |
Configure-Ack | 表示完全接受对端发送的Configure-Request的参数取值 (配置响应) |
Configure-Nak | 表示对端发送的Configure-Request中的某些参数取值在本端不被认可 (配置不响应) |
Configure-Reject | 表示对端发送的Configure-Request中的某些参数本端不能识别 (配置拒绝) |
7. LCP链路参数协商
- RTA在没有收到Configure-Ack报文的情况下,会每隔3秒重传一次Configure-Request报文,如果连续10次发送Configure-Request报文仍然没有收到Configure-Ack报文,则认为对端不可用,停止发送Configure-Request报文。
- 完成上述过程只是表明RTB认为RTA上的链路参数配置是可接受的。RTB也需要向RTA发送Configure-Request报文,使RTA检测RTB上的链路参数是不是可接受的。
-
当RTB收到RTA发送的Configure-Request报文之后,如果RTB能识别此报文中携带的所有链路层参数,但是认为部分或全部参数的取值不能接受,即参数的取值协商不成功,则RTB需要向RTA回应一个Configure-Nak报文。(不能识别则回复Configure-Reject报文。)
-
在这个Configure-Nak报文中,只包含不能接受的链路层参数,并且此报文所包含的链路层参数均被修改为RTB上可以接受的取值(或取值范围)。
-
在收到Configure-Nak报文之后,RTA需要根据此报文中的链路层参数重新选择本地配置的其它参数,并重新发送一个Configure-Request。
8. PPP认证-PAP模式
- 两次握手
9. PPP认证-CHAP模式
- 三次握手
8.4 IPCP静态地址协商
- PPP协议中,两端地址不需要在同一网段下,也能够通信
8.5 IPCP动态地址协商
8.6 PPPoE
在以太网上跑PPP协议,这个就叫PPPOE。
8.6.1 PPPoE会话建立过程
截断 | 表述 |
---|---|
发现阶段 | 获取对方以太网地址,以及确定唯一的PPPoE会话。 |
会话阶段 | 包含两部分:PPP协商阶段和PPP报文传输阶段。 |
会话终结阶段 | 会话建立以后的任意时刻,发送报文结束PPPoE会话。 |
8.6.2 PPPoE报文
类型 | 描述 |
---|---|
PADI | PPPoE发现初始报文 |
PADO | PPPoE发现提供报文 |
PADR | PPPoE发现请求报文 |
PADS | PPPoE发现会话确认报文 |
PADT | PPPoE发现终止报文 |
- PPPoE报文是使用Ethernet格式来进行封装的。
8.6.3 PPPoE发现阶段
- 客户端通过广播发送PADI报文来发现接入服务器。
- 所有的PPPoE 服务器在收到PADI报文之后,将客户端请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复PADO报文。
- PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并单播发送一个PADR报文。
- PPPoE服务器生成唯一的PPPoE Session ID,并发送PADS报文给客户端,会话建立成功。
8.6.4 PPPoE 会话阶段
- PPPoE会话上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。
- PPPoE会话的PPP协商成功后,就可以传输PPP数据。
8.6.5 PPPoE 会话终结
- 当PPPOE客户端或者服务器希望关闭连接时,可以向对方端发送一个PADT报文,用于关闭连接。