从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

    • 计算机网络微课堂

      • 课程概述
      • 1-1 计算机网络在信息时代的作用
      • 1-2 因特网概述
      • 1-3 三种交换方式
      • 1-4 计算机网络的定义和分类
      • 1-5 计算机网络的性能指标
      • 1-6 计算机体系结构
      • 2-1 物理层的基本概念
      • 2-2 物理层下面的传输媒体
      • 2-3 传输方式
      • 2-4 编码与调制
      • 2-5 信道的极限容量
      • 3-1 概述
      • 3-2 封装成帧
      • 3-3 差错检测
      • 3-4 可靠传输
      • 3-5 点对点协议 PPP
      • 3-6 媒体接入控制的基本概念
      • 3-7 MAC 地址
      • 3-7 IP 地址
      • 3-7 ARP 协议
      • 3-8 集线器与交换机的区别
      • 3-9 以太网交换机自学习和转发帧的流程
      • 3-10 以太网交换机的生成树协议 STP
      • 3-11 虚拟局域网 VLAN
      • 4-1 网络层概述
      • 4-2 网络层提供的两种服务
      • 4-3 IPv4 地址
      • 4-4 IP 数据报的发送和转发过程
      • 4-5 静态路由配置及其可能产生的路由环路问题
      • 4-6 路由选择
      • 4-7 IPv4 数据报的首部格式
      • 4-8 网际控制报文协议 ICMP
      • 4-9 虚拟专用网 VPN 与网络地址转换 NAT
      • 5-1 运输层概述
      • 5-2 运输层端口号、复用与分用的概念
      • 5-3 UDP 和 TCP 的对比
      • 5-4 TCP 的流量控制
      • 5-5 TCP 的拥塞控制
      • 5.6 TCP 超时重传时间的选择
      • 5-7 TCP 可靠传输的实现
      • 5-8 TCP 的运输连接管理
      • 5-9 TCP 报文段的首部格式
      • 6-1 应用层概述
      • 6-2 客户—服务器方式和对等方式
      • 6-3 动态主机配置协议 DHCP
      • 6-4 域名系统 DNS
      • 6-5 文件传送协议 FTP
      • 6-6 电子邮件
      • 6-7 万维网 WWW
    • 计算机网络微课堂-实验手册

    • 从零开始学计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 计算机网络
  • 计算机网络微课堂
2023-11-16

3-5 点对点协议 PPP

# 350.3-5 点对点协议 PPP

本节课我们介绍点对点协议 PPP。 ‍ 点对点协议,PPP 是目前使用最广泛的点对点数据链路层协议。请大家想想看,‍‍一般的因特网用户是如何接入到因特网的,通常都是要通过连接到某个因特网服务提供者 ISP,‍‍例如中国电信、中国联通、中国移动这三大运营商才能接入因特网。‍‍

这些 ISP‍‍已经从因特网管理机构申请到了一批 IP 地址,用户计算机只有获取到 ISP 所分配的合法 IP 地址后,‍‍才能成为因特网上的主机。

用户计算机与 ISP 进行通信时所使用的数据链路层协议,‍‍通常就是 PPP 协议。这里需要说明的是,在 1999 年公布的在以太网上运行的 PPP 协议,‍‍即 PPP over ethernet,简称为 PPPOE。它使得 ISP 可以通过 DSL 电路调制解调器、‍‍以太网等宽带接入技术,以以太网接口的形式‍‍为用户提供接入服务。‍‍另外点对点协议 PPP 也广泛应用于广域网路由器之间的专用线路。‍‍

PPP 协议是因特网工程任务组 IEFT 在 1992 年制定的,经过 1993 年‍‍和 1994 年的修订,现在的 PPP 协议已成为因特网的正式标准。‍‍我们可以在 IEFT 官方网站的相关页面,搜索并查看 PPP 协议的相关 RFC 文档:

​​

PPP 协议为在点对点链路传输各种协议数据报提供了一个标准方法,‍‍主要由以下三部分构成:

  • 第一,对各种协议数据报的封装方法,‍‍也就是我们之前课程中介绍的封装成帧
  • 第二,链路控制协议 lcp,用于建立配置‍‍以及测试数据链路的连接
  • 第三,一套网络控制协议 ncps,其中的每一个协议‍‍支持不同的网络层协议

从网络体系结构的角度看,PPP 是数据链路层的协议,‍‍他将上层交付下来的协议数据单元‍‍封装成 PPP 帧.

为了支持不同的网络层协议,PPP 协议包含了一套网络控制协议 NCPs,其中的每一个协议支持不同的网络层协议,例如 TCP/IP 中的 IP‍‍,Novell NeteWare 网络操作系统中的 IPX,苹果公司的 Apple Talk 等。

链路控制协议 LCP,用于建立配置以及测试数据链路的连接,PPP 协议能够在多种类型的点对点链路上运行,‍‍例如面向字节的异步联络,‍‍面向比特的同步链路。‍‍

​​ ‍

接下来我们来看看 PPP 协议的帧格式,帧首部由 4 个字段构成,‍‍帧尾部由两个字段构成,各字段的长度以及帧的数据部分的最大长度如图所示‍‍。

帧首和帧尾部中的标志字段是 PPP 间的定界符,取值为 16 进制的 7E。‍‍帧首部中的地址字段取值为 16 进制的 FF,控制字段取值为 16 进制的 03,‍‍最初曾考虑以后再对这两个字段的值进行其他定义,‍‍但至今也没有给出,可见这两个字段实际上并没有携带 PPP 帧的信息,帧首部中的协议字段,‍‍指明了帧的数据部分,应送交哪个协议处理。

  • 当协议字段取值为 16 进制的 0x0021 时,‍‍PPP 帧的数据部分就是 IP 数据报,如图所示,
  • 当协议字段取值为 16 进制的 0xc021 时,‍‍PPP 帧的数据部分就是链路控制协议 LCP 的分组,如图所示,‍‍
  • 当协议字段取值为 16 进制的 0x8021 10PPP 帧的数据部分,就是网络控制协议 ncp 的分组,‍‍如图所示。

帧尾部中的帧检验序列 FCS 字段,‍‍取值是使用循环冗余校验 CRC 计算出的校验位,用于检查 PPP 帧是否存在误码。‍‍

​​


‍ 接下来‍‍我们来看看 PPP 协议是如何解决透明传输问题的。‍‍当 PPP 帧的数据部分‍‍出现帧手和帧尾中的标志字段时,如果不采取措施,‍‍则会造成接收方对 PPP 帧是否结束的误判。因为标志字段是 PPP 帧的定界,符‍‍取值为 16 进制的 7E,也就是二进制的 0111 1110。

PPP 协议实现透明传输的方法,‍‍取决于所使用的链路类型:

  • 如果是面向字节的异步电路,则采用字节填充法,也就是插入转义字符

  • 如果是面向比特的同步电路,则采用比特填充法,也就是插入比特 0 ‍ 我们来举例说明字节填充法,也就是以字节 7E,作为 PPP 帧的定制符,‍‍以字节为单位来讨论问题,来看发送方对 PPP 帧数据部分的处理:

  • 将出现的每一个 7E 字节转变成两次节序列 7D5E 这相当于在 7E 字节前插入了转移字节 7D,并将 7E 字节减去 16 进制的 20

  • 将出现的每一个 7d 字节‍‍转变成两字节序列 7d5d

  • 在出现的每一个 ASCII 码控制字符前‍‍插入一个 7d 字节,同时将该字符的编码加上 16 进制的 0x20

  • 对于 PPP 帧的接收方只要进行反变换,即可恢复出原来的 PPP 帧的数据部分

​​

我们再来举例说明比特填充法也就是以 0111 1110 作为 PPP 帧的定界符,‍‍以比特为单位来讨论问题,‍‍假设 PPP 帧的数据部分如图所示,其中包含了两个真定界符,‍‍来看发送方对 PPP 帧数据部分的处理,对帧的数据部分进行扫描,一般由硬件实现,‍‍只要发现 5 个连续的比特 1,则立即填充 1 个比特 0,如图所示。‍‍

再来看接收方对 PPP 帧数据部分的处理,对帧的数据部分进行扫描,一般由硬件实现,‍‍只要发现 5 个连续的比特 1,就把其后的 1 个比特 0 删除,如图所示。‍‍

​​


‍ 接下来‍‍我们来看看 PPP 协议‍‍是如何进行差错检测的,PPP 帧的尾部包含有一个两字节的帧检验序列 FCS 字段,‍‍使用循环冗余校验 CRC 来计算该字段的取值。采用的生成多项式如下所示。‍‍RFC 1662 文档的附录部分,给出了 FCS 的计算方法的 C 语言实现。‍‍为了减少对 CPU 的占用,采用查表法来实现 FCS 的计算范围,如图所示。

接收方每收到一个 PPP 帧就进行 crc 检验,若 crc 检验正确,就收下这个帧,‍‍反之就要丢弃这个帧,‍‍使用 PPP 的数据链路层,向上不提供可靠传输服务。

​​


‍ 最后我们以拨号接入为例,‍‍简单介绍一下 PPP 协议的工作状态:

  • PPP 链路的开始和结束状态都是静止状态,‍‍这时并不存在物理层的连接。当检测到调制解调器的载波信号,并建立物理层连接后,‍‍PPP 就进入链路的建立状态。‍‍
  • 这时链路控制协议 LCP 开始协商一些配置选项,‍‍若协商成功‍‍则进入鉴别状态,若协商失败则退回到静止状态。
  • 所协商的配置选项,‍‍包括最大帧长,鉴别协议等,可以不使用鉴别,也可以使用口令鉴别协议 PAP 或挑战握手鉴别协议 CHAP
  • 若通信双方无需鉴别或鉴别身份成功,‍‍则进入网络状态,若鉴别失败则进入终止状态,
  • 进入网络状态后,进行 NCP 配置,‍‍配置完成后就要进入打开状态。
  • PPP 链路的两端,通过相互交换网络层特定的 NCP 分组‍‍来进行 ncp 配置。‍‍如果在 PPP 链路上运行的是 IP 协议,则使用 IP 控制协议IPCP 来对 PPP 链路的每一端配置 IP 模块,例如分配 IP 地址
  • 只要链路处于打开状态,‍‍就可以进行数据通信。当出现故障或链路的一端发出终止请求时,就进入终止状态。‍‍
  • 当载波停止后‍‍则回到静止状态

​​

本节课的内容小结如下:

​​

上次更新: 2025/6/3 09:31:54
3-4 可靠传输
3-6 媒体接入控制的基本概念

← 3-4 可靠传输 3-6 媒体接入控制的基本概念→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式