用户计算机与ISP进行通信时,所使用的数据链路层协议通常就是点对点协议PPP(Point-to-Point Protocol)。PPP协议是目前使用最广泛的点对点数据链路层协议,也广泛应用于广域网路由器之间的专用线路。
在1999年公布的在以太网上运行的PPPoE协议,它使得lSP可以通过ADSL、电路调制解调器、以太网等宽带接入技术以太网接口的形式为用户提供接入服务。
PPP(Point-to-Point Protocol)和PPPoE(Point-to-Point Protocol over Ethernet)是两种不同的协议。
PPP 是一种用于在两个点之间进行通信的协议,常用于 dial-up 网络和 VPN 连接。PPP 协议提供了多种功能,包括身份验证、数据压缩和加密等,但是它不提供路由功能。
PPPoE 则是一种在以太网上运行 PPP 的协议。它使用了以太网帧来封装 PPP 数据包,并使用一种特殊的服务器/客户端模型来管理 PPP 连接。PPPoE 常用于 ADSL、光纤宽带等拨号上网方式,也可以用于小区宽带网络中。
因此,PPPoE 可以看作是在以太网上运行 PPP 的一种方式,而 PPP 则是一种通用的协议,不仅可以在以太网上运行,也可以在其他类型的网络上运行。
PPP为点对点连接上传输多种协议的数据包提供了一种标准的方法,其最初的设计目的,是为两个对等结点之间的IP传输提供一种封装协议,除了IP以外,PPP还可以封装其它协议,包括Novell的IPX协议(Internetwork Packet Exchange,网间分组交换)等。
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
0x7E
。0xFF
,表示只有对端才能接受到数据。0x03
,表示无序号信息(Unnumbered Information)。字段值 | 协 议 |
---|---|
0x0021 | IP(Internet Protocol) |
0x0029 | Appletalk |
0x8021 | IPCP(Internet Protocol Control Protocol) |
0xC021 | LCP(Link Control Protocol) |
0xC023 | PAP(Password Authentication Protocol) |
0xC025 | LQR(Link Quality Report) |
0xC223 | CHAP(Challenge Handshake Authentication Protocol) |
字节填充:面向字节的异步链路采用插入转义字符的字节填充法。
发送方:
接收方:进行反变换即可恢复出原来的帧的数据部分。
零填充:面向比特的同步链路采用插入比特0的比特填充法。
发送方:对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,则立即填充1个比特0。
接收方:对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,就把其后的1个比特0删除。
接收方每收到一个PPP
帧,就进行CRC
检验(多项式)。若CRC检验正确,就收下这个帧;反之就丢弃这个帧(不可靠传输服务)。检验由尾部的FCS实现
用于检验的多项式为
C R C − C C I T T = x 16 + x 12 + x 5 + 1 CRC-CCITT =x^{16}+x^{12}+x^{5}+1 CRC−CCITT=x16+x12+x5+1
使用PPP的数据链路层,向上提供的是不可靠数据传输服务。
在建立、保持和终止PPP链路的过程中,PPP链路需要经过5个阶段,除认证阶段外,其它4个阶段都是必要过程。 5个阶段如下:
LCP(Link Control Protocol,链路控制协议):用于建立、配置、维护和终止PPP链路
LCP负责PPP的链路管理,和上层(网络层)协议无关。
当PPP帧中Protocol字段为0xC021
时,表示Information 字段数据为LCP报文。
类型 | 功能 | 报文类型 | 报文代码 |
---|---|---|---|
链路配置 | 建立和配置链路 | Configure-Request | 1 |
Configure-Ack | 2 | ||
Configure-Nak | 3 | ||
Configure-Reject | 4 | ||
链路终止 | 终止链路 | Terminate-Request | 5 |
Terminate-Ack | 6 | ||
链路维护 | 管理和调试链路 | Code-Reject | 7 |
Protocol-Reject | 8 | ||
Echo-Request | 9 | ||
Echo-Reply | 10 | ||
Discard-Request | 11 |
Configure-Request(配置请求)的Code字段值为0x01,Data字段值为一到多个选项(Options)列表,选项列表中的参数可同时协商。
Type值 | 对应参数 | 功能 |
---|---|---|
0x00 | Reserved | 保留 |
0x01 | Maximum Receive Unit | 最大接收单元 |
0x02 | Asynchronous Control Character Map | 异步控制字符映射 |
0x03 | Authentication Protocol | 认证协议 |
0x04 | Quality Protocol | 质量协议 |
0x05 | Magic Number | 幻数 |
0x07 | Protocol Field Compression | 协议域压缩 |
0x08 | Address and Control Field Compression | 地址及控制域压缩 |
Configure-Request(配置请求)报文示例:
若接收的Configure-Request中的每一个配置选项的值都可接受,则回送Configure-Ack
(配置确认)报文,回送的Configure-Ack中的Identifier字段必须与最后接收的Configure-Request相匹配。此外,Configure-Ack中的配置选项必须完全匹配最后接收的Configure-Request。
若收到的每个配置选项都可以识别,但是配置选项的值不能接受,接收方必须回送Configure-Nak
(配置否认)。配置选项部分仅用不能接受的配置选项进行填充,回送的Configure-Nak中的Identifier字段必须与最后接收的Configure-Request相匹配。
若收到的部分配置选项是不可识别或不能接受,则回送Configure-Reject
(配置拒绝确认)。配置选项部分仅用不可识别或不能接受的配置选项进行填充,回送的Configure- Reject中的Identifier字段必须与最后接收的Configure-Request相匹配。
上述报文除Code字段值不同,配置选项的格式与Configure-Request
均相同。
Code-Reject(代码拒绝)报文表示无法识别报文的Code字段
若收到该类错误,应立即终止链路,该报文的格式如图,其中“被拒绝的报文”字段包含了无法识别的LCP报文。
Protocol-Reject(协议拒绝)报文表示无法识别报文的Protocol字段
若收到该类错误,应停止发送该类型的协议报文,该报文的格式如图所示,其中“被拒绝的协议”字段包含了被拒绝的PPP帧的数据区。
Echo-Request(回复请求)和Echo-Reply(回复应答)用于链路质量和性能测试,其格式如图所示。
Discard-Request(丢弃请求)是一个辅助的错误调试和实验报文,无实质用途。
这种报文收到即会丢弃。
NCP(Network Control Protocol,网络控制协议)用于建立、配置网络层协议,进行参数协商。
不同的网络层协议会使用不同的NCP协议。
若PPP帧中Protocol字段取值0x8021
,表示PPP帧正在使用IPCP协商相关通信参数。
IPCP会完成协商IP地址等工作,其后在该PPP链路上传送IP数据报;
若IP数据报传送完毕,若要关闭IP协议,仍需通过IPCP协商终止;
若要释放链路,则需借助LCP协议。
类型 | 功能 | 报文类型 | 报文代码 |
---|---|---|---|
链路配置 | 建立和配置链路 | Configure-Request | 1 |
Configure-Ack | 2 | ||
Configure-Nak | 3 | ||
Configure-Reject | 4 | ||
链路终止 | 终止链路 | Terminate-Request | 5 |
Terminate-Ack | 6 | ||
链路维护 | 管理和调试链路 | Code-Reject | 7 |
与LCP报文格式几乎一样
IPCP协议中,通信双方可协商的配置选项包括3个:
PAP(Password Authentication Protocol,口令认证协议)
优点:PAP的整个认证流程非常简单
缺点:认证只能在链路建立阶段进行,身份和口令是以明文进行传输,安全性低
PAP协议的报文共有三种:
若PPP帧中Protocol字段取值为0xC023
时,表示Information字段承载的是PAP报文。
CHAP(Challenge Handshake Authentication Protocol,基于挑战的握手认证协议)
CHAP为三次握手协议,可以在链路建立和数据通信阶段多次使用,进行认证,同时安全性较高
认证过程中需配合事先协商好的算法,确认被认证方的身份,通常使用MD5(Message Digest Algorithm 5)作为其默认算法。只在网络上传输用户名,而不传输用户口令。
目前PPP协议的认证阶段多使用CHAP认证协议。
CHAP协议的报文共有四种:
若PPP帧中Protocol字段取值为0xC223
时,表示Information字段承载的是CHAP报文。
题目:本实验模拟企业网络环境。R1为分支机构接入网关设备,PC-1为企业分支机构终端。R2为企业总部接入终端网关设备,PC-2为企业总部终端,网络管理员在分支机构访问总部时部署PPP认证 ,R1和R2互为认证路由器和被认证路由器。只有认证通过才能建立PPP连接进行正常访问。
步骤:开启GNS3虚拟机,新建拓扑文件,在工作区添加两台路由器(c3745)和两台PC,按下图连接路由器、PC,开启设备。并按照下图和下表,在R1和R2之间配置PPP协议,并开启CHAP认证(此时s0/0口关闭),将路由器的配置指令截图如下:
设备 | 接口 | IP地址 | 地址掩码 | 默认网关 |
---|---|---|---|---|
R1 | S0/0 | 10.1.1.1 | 255.255.255.0 | - |
F0/1 | 192.168.3.1 | 255.255.255.0 | - | |
R2 | S0/0 | 10.1.1.2 | 255.255.255.0 | - |
F0/1 | 192.168.4.1 | 255.255.255.0 | - | |
PC-1 | E0 | 192.168.3.2 | 255.255.255.0 | 192.168.3.1 |
PC-2 | E0 | 192.168.4.2 | 255.255.255.0 | 192.168.4.1 |
配置R1:
# 进入全局模式
R1#configure terminal
# 创建本地用户名和密码,为CHAP认证做准备,用户名为对方hostname
R1#username R2 password 1234
# 进入接口模式,对f0/1口进行配置
R1(config)#interface f0/1
R1(config-if)#ip address 192.168.3.1 255.255.255.0
# 进入接口模式,对s0/0口进行配置
R1(config)#interface s0/0
# 配置s0/0口的IP地址
R1(config-if)#ip address 10.1.1.1 255.255.255.0
# 设置s0/0口作为DCE设备,为DTE设备提供时钟以便同步,时钟速率为128000(bit/s)
R1(config-if)#clock rate 128000
# 在s0/0口封装ppp协议
R1(config-if)#encapsulation ppp
# 设置ppp协议的认证方式为chap
R1(config-if)#ppp authentication chap
# 停用s0/0口
R1(config-if)shutdown
配置R2:
# 进入全局模式
R2#configure terminal
# 创建本地用户名和密码,为CHAP认证做准备,用户名为对方hostname
R2#username R1 password 1234
# 进入接口模式,对f0/1口进行配置
R2(config)#interface f0/1
R2(config-if)#ip address 192.168.4.1 255.255.255.0
# 进入接口模式,对s0/0口进行配置
R2(config)#interface s0/0
# 配置s0/0口的IP地址
R2(config-if)#ip address 10.1.1.2 255.255.255.0
# 在s0/0口封装ppp协议
R2(config-if)#encapsulation ppp
# 设置ppp协议的认证方式为chap
R2(config-if)#ppp authentication chap
# 停用s0/0口
R2(config-if)shutdown
Q:DCE设备和DTE设备是什么?为什么R1要设置时钟而R2不用?
A:DCE 和 DTE 分别代表数据通信设备和数据端点设备。
DCE (Data Circuit-terminating Equipment) 通常指在数据传输中终止数字电路的设备,负责将数字信号转换为模拟信号,以便在通信设备之间传输。例如,MODEM 设备通过电话线将数字信号转换为模拟信号,然后通过电话线进行传输,以连接到互联网。
DTE (Data Terminal Equipment)指的是终端设备,例如电脑、终端、打印机等。在通信中,DTE 既可以接收数据,也可以发送数据,但必须通过通信线路与 DCE 进行连接。
在数据通信中,DCE 和 DTE 通常通过串行通信线(例如 RS-232、V.35 或 X.21)进行连接,DCE 端常常为对方提供时钟同步信号。一些常见的 DCE 设备包括调制解调器、CSU (Channel Service Unit)、DSU (Data Service Unit) 等。
需要注意的是,相同的设备可能在不同情况下被视为 DTE 或 DCE。例如,一个串口可以连接到一个调制解调器作为 DTE,也可以连接到一个计算机作为 DCE。在本次实验中,R1为分支机构接入网关设备(DCE),R2为企业总部接入终端网关设备(DTE),clock rate 128000
命令仅在 DCE 设备上使用,表示 DCE 设备要发送或接收数据的速率。在这里,另一端是一个 DTE 设备,无需使用 clock rate 命令。
配置PC-1和PC-2:
PC-1> ip 192.168.3.2/24 192.168.3.1
PC-2> ip 192.168.4.2/24 192.168.4.1
抓包分析:
在R1和R2的链路上右键start capture
# 开启R1的链路
R1(config)#interface s0/0
R1(config-if)#no shutdown
# 开启R2的链路
R2(config)#interface s0/0
R2(config-if)#no shutdown
❗ 转载请注明出处
作者:HinsCoder
博客链接: 作者博客主页