[ 计算机网络 | 第三章 ] 数据链路层 02 PPP

思维导图


第二部分:具体场景

在上一部分,我们掌握了数据链路层的三个基本问题:封装成帧、差错检测、可靠传输。它们构成了链路层协议的"工具箱"。 数据链路层的所有协议的目的都是为了解决这个三个问题,只是对于不同的场景,具有不同的协议,接下来我们就介绍不同场景下的协议


我们先来介绍一下具体场景的分类

场景的分类

首先我们要明白具体场景是怎么分类的,是依据什么标准分类的呢?

是依据信道的共享方式 这个标准进行分类的

分类维度 具体场景 核心矛盾 对应协议
点对点链路 两根线直连两台设备 链路两端只有彼此,不需要寻址,但需要链路管理 PPP
共享广播信道 多台设备连在同一(线/无线频段)上 谁都能发,但大家一起发就会冲突 CSMA/CD(有线)CSMA/CA(无线)
交换式网络 多台设备通过交换机连接,每条链路独享 冲突问题解决了,但交换机需要知道该转发给谁 交换机自学习、VLAN

在之后的博客当中,我们会从点对点链路->共享式广播信道->交换式网络 ,在本文中,我们先来学习最简单的一种场景以及其对应的协议:点对点链路 & PPP协议


阅读说明

因为我们知道了学习数据链路层会遇到不同的场景,每个场景都有不同的协议,所以自然在之后的博客当中,都是先介绍场景,在介绍协议的


场景一:点对点链路

点对点协议 PPP:当两台机器直连时

我们先从最简单的场景开始:
如果只有两台机器,通过一根线直接连在一起,链路层协议应该怎么设计?

这就是 PPP(Point-to-Point Protocol,点对点协议)要解决的问题。


为什么我们需要 PPP协议?

核心矛盾

"两台机器之间只有一根直连的物理线路" vs "需要在这根线上有序、可靠地传输多种网络层数据报"

在计算机网络发展的早期,用户通过电话线拨号上网是最常见的接入方式。

你的电脑通过调制解调器( 🐱)连接到电话线,电话线另一头连着ISP(网络服务提供商)的接入服务器。这是一条典型的点对点链路------只有两台设备,中间没有任何交换机或路由器。

这种场景有一个特点:链路两端只有两个设备,不需要复杂的寻址。 你不需要MAC地址来判断"数据是发给谁的",因为只有一个可能的接收方。

由核心矛盾衍生出多个问题,如下:

但简单并不意味着没有需求。需要解决这些问题:

  • 如何封装网络层的数据报?(成帧)
  • 如何支持多种网络层协议?(IPv4、IPv6、其他协议)
  • 如何建立、配置、测试和拆除链路?(链路管理)
  • 如何处理异步传输?(两端速率可能不一致)

PPP 的设计要求

IETF 在设计 PPP 时,给它规定了几个核心要求,这些要求恰好对应了我们在第一部分学过的三个基本问题:

  1. 封装成帧 :必须能正确地将网络层数据报封装成帧 ,并处理透明传输问题
  2. 支持多种网络层协议:不能只支持 IP,还要能同时支持 IPv6、AppleTalk 等其他协议
  3. 链路控制:必须能建立、配置、测试和拆除物理链路
  4. 差错检测:必须能检测出传输错误
  5. 网络层地址协商:必须能让通信双方协商各自使用的网络层地址

注意 :PPP 只提供差错检测 ,不提供可靠传输(确认和重传)。它发现帧出错了就直接丢弃,把重传的责任交给上层协议(比如 TCP),为什么要这样设计呢? 因为简单而又可靠


PPP协议是什么?

在知道PPP的设计要求之后,我们就来看 PPP的组成(要满足PPP的设计要求)

从组成上来看,PPP协议由3个部分组成:

PPP组成 对应哪条设计要求 解决的问题
LCP 链路控制、网络层地址协商 链路的建立、配置、测试和拆除
封装方法 封装成帧、透明传输、差错检测 数据怎么打包、怎么检错
NCP 支持多种网络层协议 怎么同时支持IPv4、IPv6等

PPP 的帧格式:如何解决成帧?

PPP 帧的结构

字段 长度 作用
Flag 1字节 帧的开始和结束标志,固定为 0x7E
Addr 1字节 地址字段,在点对点链路中无实际意义,固定为 0xFF
Ctrl 1字节 控制字段,固定为 0x03
Protocol 1-2字节 标识数据部分承载的是哪种网络层协议(IPv4、IPv6等)
Information 变长 承载的网络层数据报,长度可变,默认最大1500字节
FCS 1字节 帧检验序列,用 CRC 做差错检测

注意 :协议字段Protocol

当取值为 0x0012时,PPP帧的信息字段 I 是 IP 数据报

当取值为 0xC021时,PPP帧的信息字段 I 是 PPP 链路控制协议的分组

当取值为 0x8021时,PPP帧的信息字段 I 是 PPP 网络控制协议的分组

这样就满足了 PPP 的组成要求

注意

PPP 帧没有源地址和目的地址字段。因为点对点链路只有两个端点,不存在寻址问题。地址字段 0xFF 是广播地址,在这里只是一个占位符,没有实际意义

(0x表示之后的字符式是十六进制)


透明传输:当数据里出现了 0x7E

Flag 字段 0x7E 用来标识帧边界。但如果数据部分恰好也包含了 0x7E,接收方就会误以为帧结束了。这就是我们之前讨论过的透明传输问题

PPP 的解决方案:字节填充

  • PPP 运行在异步传输(字符传输)链路上时,使用字节填充法
  • 发送方扫描整个数据部分,如果遇到 0x7E,就把它替换成 0x7D + 0x5E 两个字节。
  • 如果遇到 0x7D 本身,就把它替换成 0x7D + 0x5D
  • 接收方收到后做反向替换,还原原始数据。

PPP的解决方案:字节填充

  1. PPP 运行在同步传输(比特流传输)链路上时,使用零比特填充法
  2. 发送方在发送整个帧时,边发送边检查数据部分。如果发现连续出现了 5 个 1 ,就在这 5 个 1 后面自动插入一个 0
  3. 这样做的目的是确保数据部分永远不会出现和帧定界符 01111110(连续 6 个 1)一模一样的比特组合。
  4. 接收方收到帧后做相反操作:边接收边检查,如果发现连续 5 个 1 后面跟着一个 0,就自动把这个 0 删除,还原原始数据。

PPP 的工作状态:从拨号到挂断的完整流程

对于PPP协议,大家就把它想象为你在打电话的时候,要做的事情

这部分大家了解一下就好,不用深入

各阶段详解

1. 链路静止

通信线路未被激活。当用户拨号上网时,调制解调器拨号,检测到物理层载波信号后,进入下一阶段。
2. 链路建立

两端通过 LCP(链路控制协议) 进行协商。LCP 负责:

  • 协商最大帧长度(MRU)
  • 协商是否使用认证
  • 协商使用的链路质量监测方式
  • 协商压缩方式等选项
    LCP 的协商过程是双向的:双方各自提出自己的配置要求,对方可以接受或拒绝。只有双方就链路参数达成一致,才能进入下一阶段。
    3. 用户验证
    这个阶段是可选的。如果双方在 LCP 协商中同意进行身份验证,则进入此阶段。PPP 支持两种常用的认证协议:
  • PAP:明文传输用户名和密码,安全性差
  • CHAP :使用挑战-应答机制,只传哈希值,不传明文密码
    4. 网络层配置
    通过 NCP(网络控制协议) 为不同的网络层协议分配网络层地址。最常见的是 IPCP(IP 控制协议),用于协商 IP 地址:
  • 用户端向 ISP 请求分配一个 IP 地址
  • ISP 可以分配一个动态 IP 地址,或者确认用户请求的静态 IP 地址
    5. 链路打开
    一切就绪,PPP 帧开始承载网络层数据报正常通信。这个阶段可以持续任意长时间。
    6. 链路终止
    通信结束后,LCP 发送终止请求,链路回到静止状态。这可以由用户主动挂断触发,也可以由物理线路故障触发。

到这里PPP协议就结束了,祝你有开心的一天

相关推荐
Ether IC Verifier11 小时前
TCP 重传机制详解
服务器·网络·网络协议·tcp/ip·php
北京耐用通信11 小时前
耐达讯自动化:专业解决MODBUS TCP转PROFIBUS协议转换难题
人工智能·物联网·网络协议·自动化·信息与通信
2401_8734794011 小时前
主流IP离线库(IP数据云、纯真、IPIP.NET)怎么选?全面对比分析
服务器·网络·数据库
奋斗的小青年I12 小时前
虚拟化平台横评:Proxmox vs XCP-ng vs OpenStack vs Nutanix
网络·vmware·虚拟化·pve·超融合、
REDcker12 小时前
QUIC协议详解2
网络
yqcoder12 小时前
拆解互联网:通俗易懂的网络分层模型
前端·网络·网络协议
xixixi7777713 小时前
算力网络双轮驱动:800G 光模块价格再降、1.6T 商用提速,AI-eSIM 用户破亿重构身份生态
网络·人工智能·ai·大模型·光模块·通信·运营商
小王C语言13 小时前
【网络基础该】:局域网、协议、MAC地址、IP地址
网络·智能路由器
MC皮蛋侠客13 小时前
IEC 104 系列(三):通信机制——连接管理与数据交互
网络·tcp/ip·iec104·电力规约