[ 计算机网络 | 第三章 ] 数据链路层 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协议就结束了,祝你有开心的一天

相关推荐
壹方秘境19 小时前
ChatTCP是怎么像Wireshark那样识别TCP重传、乱序和心跳保活的
网络协议·tcp/ip·wireshark
祺风挽楠19 小时前
ansible编辑
网络·ansible
莫名的好感°19 小时前
手机RAR解压怎么选?2026年二季度四款产品问答
服务器·网络·智能手机
AI科技星1 天前
数术工坊第八卷:算力革命
c语言·开发语言·网络·量子计算·agi
liulilittle1 天前
固定数组时间轮的槽过载优化:桶链表与批次执行
网络·数据结构·链表
行走__Wz1 天前
【网工入门-eNSP模拟-05】静态路由
网络
xiangw@GZ1 天前
802.11全系列标准调制编码与速率档对应关系
网络·单片机·嵌入式硬件·架构
liulilittle1 天前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc
27669582921 天前
泡泡玛特app 腾讯企业加固/支付宝加固脱修frida rpc调用
网络·网络协议·rpc·frida·泡泡玛特·ppmt·泡泡玛特app-rpc调用
其实防守也摸鱼1 天前
软件安全与漏洞--Windows底层原理与软件逆向工程基础
linux·网络·数据库·算法·安全·安全架构·软件安全与漏洞