PPP协议
1 点对点数据链路控制
- 一个发送端,一个接收端,一条链路:比广播链路容易
- 无需介质访问控制(Media Access Control)
- 无需明确的MAC寻址
- e.g., 拨号链路, ISDN链路
- 常见的点对点数据链路控制协议:
- HDLC: High Level Data Link Control
- PPP (Point-to-Point Protocol)
2 PPP设计需求[RFC 1557]
- 组帧: 将网络层数据报封装到数据链路层帧中
- 可以同时承载任何网络层协议分组(不仅IP数据报)
- 可以向上层实现分用(多路分解)
- 比特透明传输: 数据域必须支持承载任何比特模式
- 差错检测: (无纠正)
- 连接活性(connection liveness)检测: 检测、并向网络层通知链路失效
- 网络层地址协商: 端结点可以学习/配置彼此网络地址
PPP无需支持的功能
- 无需差错纠正/恢复
- 无需流量控制
- 不存在乱序交付
- 无需支持多点链路
差错恢复、流量控制等由高层协议处理!
3 PPP数据帧
- 标志(Flag): 定界符(delimiter)
- 地址(Address): 无效(仅仅是一个选项)
- 控制(Control): 无效;未来可能的多种控制域
- 协议(Protocol): 上层协议 (eg, PPP-LCP, IP, IPCP, etc)
- 信息(info): 上层协议分组数据
- 校验(check): CRC校验,用于差错检测
有无地址字段和控制字段、数据长度、协议字段长度、校验值长度都是可以双方进行协商的。
4 字节填充(Byte Stuffing)
- “数据透明传输”需求: 数据域必须允许包含标志模式<01111110>
Q: 如何判断该作为数据接收,还是作为标志处理?
- 发送端: 在数据中的<01111110>和<01111101>字节前添加额外的字节
<01111101> (“填充(stuffs)”) - 接收端:
- 单个字节<01111101>表示一个填充字节;
- 连续两个字节<01111101>:丢弃第1个,第2个作为数据接收
- 单个字节<01111110>: 标志字节
5 PPP数据控制协议
在交换网络层数据之前, PPP数据链路两端必须:
-
配置PPP链路
- 最大帧长
- 身份认证(authentication)
- etc.
-
学习/配置网络层信息
- 对于IP协议: 通过交换IPCP协议 (IP Control Protocol )报文 (IP分组首部的“上层协议”字段取值: 8021),完成IP地址等相关信息配置