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校验,用于差错检测

PPP协议

有无地址字段和控制字段、数据长度、协议字段长度、校验值长度都是可以双方进行协商的。

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地址等相关信息配置

PPP协议