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

相关推荐
Piko6143 小时前
H3C IRF2 堆叠实战:打造高可靠核心交换网络
运维·网络·笔记
茯苓gao6 小时前
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解
网络·嵌入式硬件·学习·信息与通信
万联WANFLOW6 小时前
SD-WAN 控制平面高可用怎么做?SDWAN 控制器挂了,全网会发生什么
运维·网络·分布式·架构
酱学编程7 小时前
【从零到一实现一个 AI Agent 框架 · 第四篇】04. 任务规划:拆解复杂目标 -
服务器·网络·数据库·人工智能
风行南方8 小时前
密码学之分组密码
网络·密码学
艾莉丝努力练剑9 小时前
OpenCode AI 编程:Ubuntu 24.04 环境安装与使用指南
linux·服务器·网络·人工智能·tcp/ip·ubuntu
谷雪_65810 小时前
Linux 网络命名空间:从内核原理到企业级容器网络架构全景实战
linux·网络·架构
liulilittle10 小时前
KCC 拥塞控制算法缺陷修复记录(26/07/05)
网络·tcp/ip·计算机网络·c·信息与通信·tcp·通信
Tian_Hang10 小时前
Eclipse Ditto 的权限策略
java·服务器·前端·网络·ide·ubuntu·eclipse
ai生成式引擎优化技术11 小时前
从知识连接到智能组织:WSaiOS认知网络的理论框架与系统设计摘要
网络·python·plotly·django·pygame