V相关协议学习笔记(持续更新中...)
网络协议学习笔记

PPP 协议
概述
PPP(Point-to-Point Protocal),用户计算机与 ISP(图像信号处理器)进行通信时,所使用的数据链路层协议。PPP是点对点数据链路层协议,也广泛应用于 广域网路由器 之间的专用线路。
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传输提供一种封装协议。
组成
PPP协议为在点对点链路传输各种协议数据包提供了一个标准方法,主要由以下三部分构成:
- 封装成帧:对各种协议数据报的封装方法
- 链路控制协议LCP:用于建立、配置以及测试数据链路的连接
- 一套网络控制协议NCPs:其中的每个协议支持不同的网络层协议

- Flag字段为 帧定界 标志,用来标示PPP帧的 开始与结束,取值固定为
0x7E - Address字段,用来标示接收方的地址,由于点到点链路的接收方是唯一的,取值固定为
0XFF - Control字段,取值固定为
0x03,标示无序号信息 - Protocol字段,用来标识PPP帧封装的协议数据类型
| 字段值 | 协议 |
|---|---|
| 0x0021 | IP |
| 0x0029 | Appletalk |
| 0x8021 | IPCP |
| 0xC021 | LCP |
| 0xC023 | RAP |
| 0xC025 | LQR |
| 0xC223 | CHAP |
- Information字段,长度不固定,最大长度等于MRU值,默认为1500B
- FCS(Frame Checksum)为 帧校验和字段,用来检测PPP帧的完整性(CRC计算)
工作流程
在建立、保持和终止PPP链路的过程中,PPP链路需要经过5个阶段,除认证阶段外,其它4个阶段都是必要过程。
- 链路不可用阶段(Dead)
- 链路建立阶段(Establish)
- 认证阶段(Authenticate)
- 网络层协议阶段(Network)
- 链路终止阶段(Terminate)

LCP 协议
概述
LCP(Link Control Protocol,链路控制协议):用于建立、配置、维护和终止PPP链路。
LCP负责PPP的链路管理,和网络层协议无关。
报文格式
当 PPP帧 中 Protocol字段为 0xC021 时,表示 Information 字段数据为 LCP报文。

- Code,代码字段(也称类型字段),用来标识LCP中链路控制报文的类型。
- Identifier,标识符字段,是报文的唯一标识。Identifier字段用于匹配请求和回复
- Length,长度字段,指出该报文的长度,包括 Code,Identifier,Length和Data
- Data,数据字段,零或多个八位字节,由Length字段表明,格式由Code字段决定
报文种类
| 类型 | 功能 | 报文类型 | 报文代码 |
|---|---|---|---|
| 链路配置 | 建立和配置链路 | 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为类型字段,用于区分协商不同参数
| Type值 | 对应参数 | 功能 |
|---|---|---|
| 0x00 | Reserved | 保留 |
| 0x01 | Maximun Receive Unit | 最大接收单元 |
| 0x02 | Asynchronous Control Character Map | 异步控制字符映射 |
| 0x03 | Authentication Protocol | 认证协议 |
| 0x04 | Quality Protocol | 质量协议 |
| 0x05 | Magic Number | 幻数 |
| 0x06 | Protocol Field Compression | 协议域压缩 |
| 0x07 | Address and Control Field Compression | 地址及控制域压缩 |
- Length字段指出该配置选项(包括Type、Length和Data字段)的长度
- Data字段为零或多个字节,其中包括配置选项的特定详细信息
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相匹配。
链路终止报文

链路维护报文

工作过程
链路建立和配置流程

链路终止流程

链路维护流程

NCP 协议
概述
NCP(Network Control Protocol,网络控制协议)用于建立、配置网络层协议,进行参数协商。
不同的网络层协议会使用不同的 NCP协议
- IP协议使用IPCP(Internet Protocol Control Protocol,IP控制协议)
- Appletalk协议使用Appletalk NCP进行协商
- Novell的 IPX协议使用IPE(Internet Packet Exchange,互联网包交换协议)进行协商
IPCP 协议
若PPP帧中Protocol字段取值 0x8021,表示PPP帧正在使用IPCP协商相关通信参数。
IPCP会完成 协商IP地址 等工作,其后在该PPP链路上传送IP数据包;若IP数据包传送完毕,若要 关闭IP协议,仍需通过IPCP协商终止;若要释放链路,则需借助LCP协议。
报文格式

与LCP报文格式几乎一样
工作流程

IPCP Configure-Request报文示例:


浙公网安备 33010602011771号