网络链路层之(2)PPP协议

网络链路层之(2)PPP协议


Author: Once Day Date: 2024年3月27日

一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…

漫漫长路,有人对你微笑过嘛…

全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CSDN博客。

参考文章:

  • 《TCP/IP详解卷一》

文章目录

  • 网络链路层之(2)PPP协议
        • 1. 概述
          • 1.1 参考RFC文档
          • 1.2 详细说明
        • 2. 协议格式
          • 2.1 帧格式
          • 2.2 LCP操作过程
          • 2.3 PPP协议工作状态

1. 概述

ppp是一个协议集合,包含三部分:

  • 将IP数据报封装到串行链路的方法。

  • 一系列的链路控制协议(Link Control Protocol,LCP),用来建立、配置和测试数据链路连接。

  • 以及NCP(网络控制协议),每一个协议支持不同的网络层协议,如IP、OSI的网络层,DECnet,以及AppleTalk等。

PPP对物理层链路有最低要求,即必须支持双向操作,以及异步或同步操作。

ppp基本帧格式借用了HDLC的格式。

1999年公布的PPP over Ethernet(PPPoe),工作在以太网中,可以把PPP帧在封装在以太网帧中。

1.1 参考RFC文档

PPP协议的相关RFC文档包括但不限于以下几个:

  1. RFC 1661 - The Point-to-Point Protocol (PPP):
    这是PPP协议的主要标准文档,描述了PPP的基本框架,包括封装格式、链路控制协议(LCP)以及协议的工作流程。它是理解PPP如何在两个点之间传输数据包的基础。
  2. RFC 1662 - PPP in HDLC-like Framing:
    该文档描述了PPP如何在类似HDLC(高级数据链路控制)的帧中进行封装。它详细说明了帧的结构、透明传输和控制字符的使用方法。
  3. RFC 1332 - The PPP Internet Protocol Control Protocol (IPCP):
    这份文档定义了IPCP,即PPP的网络控制协议之一,用于在PPP连接上配置和测试IP参数,例如IP地址。
  4. RFC 1994 - PPP Challenge Handshake Authentication Protocol (CHAP):
    CHAP为PPP提供了一种认证机制,这份RFC文档详细阐述了CHAP的工作原理和实施方式。
  5. RFC 1570 - PPP LCP Extensions:
    此RFC提供了LCP的一些扩展,包括对多链路聚合、回环检测和快速连接选项的支持。
  6. RFC 2516 - A Method for Transmitting PPP Over Ethernet (PPPoE):
    这份文档描述了PPPoE协议,它允许将PPP帧封装在以太网帧中,常用于DSL(数字用户线)互联网连接。
1.2 详细说明

PPP(Point-to-Point Protocol)是一种数据链路层通信协议,旨在建立直接连接两个网络节点的标准方法。PPP的设计初衷是为了在串行连接上封装网络层协议,这使得它在早期的拨号和ISDN互联网接入服务中得到了广泛应用。尽管如今宽带接入技术(如DSL和光纤)已经取代了传统的拨号服务,PPP仍然在某些宽带和VPN场景中扮演着重要角色。

PPP提供了几个重要的功能:

  • 封装多种网络层协议:PPP能够封装IP、IPX等多种网络层协议,使其能够通过串行链路传输。
  • 链路控制协议(LCP):LCP用于建立、配置和测试数据链路连接。它提供了协商链路选项的功能,包括认证协议的选择、链路品质监控等。
  • 认证:PPP支持多种认证机制,包括PAP(Password Authentication Protocol)和CHAP(Challenge-Handshake Authentication Protocol),增强了连接的安全性。
  • 多协议支持:PPP定义了一种扩展的网络控制协议(NCP)框架,允许对各种网络层协议进行特定的选项协商。

一次典型的PPP会话开始于两个节点之间的物理或虚拟连接,接着使用LCP来建立和配置数据链路。一旦LCP达成一致,认证阶段开始,节点可能需要通过PAP或CHAP等方式验证彼此的身份。随后,NCP会协商网络层协议的参数,比如分配IP地址。最后,数据开始通过已配置好的链路传输。

PPP的设计使其适用于多种场景,包括但不限于:

  • 拨号网络:在拨号互联网接入时代,PPP是建立连接的标准手段。
  • VPN连接:在某些类型的VPN实现中,PPP提供了在互联网上建立安全连接的机制。
  • 宽带接入:如PPPoE(PPP over Ethernet),在DSL互联网接入中经常使用。

由于PPP的通用性和较高的安全性,它成为当时点对点通信的事实标准。即便在现代网络中,PPP的某些概念和机制仍然被应用于新的协议和网络架构中,显示出其设计的持久影响力。

当然,随着技术的发展,PPP在某些场合已被更高效、更安全的协议所替代,但在理解网络协议和网络历史的背景下,学习PPP依然具有重要意义。

2. 协议格式
2.1 帧格式

在这里插入图片描述

  • 标志字段用于帧定界,即收尾两个0x7E字符。

  • 地址和控制字段来自于HDLC协议,但在PPP中由于只有一个目的地和无需提供可靠服务。因此是固定的0xFF和0x03。该字段可通过地址和控制字段压缩(ACFC)的选项来省略他们。

  • 协议字段表示后面的数据类型,因为数据可能来自于网络控制协议NCP或者链路控制协议LCP以及网络层协议IP等。0x0021是IP数据报,0xC021是LCP的数据。协议字段压缩PFC可以减少长度到1字节。

  • 总信息长度MRU一般不超过1500。

  • FCS检验序列一般采用CRC-CCITT多项式:

    C R C − C C I T T = X 16 + X 12 + X 5 + 1 CRC-CCITT=X^{16}+X^{12}+X^5+1 CRCCCITT=X16+X12+X5+1

    默认为16位FCS,但可以通过LCP选项启用32位FCS。

异步传输采用字节填充

  • 转义字符定义为0x7D(01111101)

  • 把数据段中出现的每一个0x7E字节转变成(0x7D,0x5E)序列

  • 把数据段中出现的每一个0x7D字节转变成(0x7D,0x5D)序列

  • 数据段中小于0x20的字符c,则改变成(0x7D,0x20+c)序列

同步传输时使用位填充(零比特填充)

  • 即SONET/SDH链路,一连串的比特连续传输。

  • 扫描整个字段,只要有5个连续的1,立即填入一个0。即不会出现连续六个1的序列,0x7E(01111110)。

2.2 LCP操作过程

PPP协议的LCP分组:

在这里插入图片描述

代码字段给出了请求或响应的操作类型

  • 配置消息(开始基本配置,建立商定的选项)

  • 终止消息(清除一条链路)

  • 回送请求/应答消息(验证对方的操作)

  • 放弃请求消息(用于性能测试,丢弃没有响应的分组)

  • 标识和剩余时间消息(用于管理目的)

标识字段是有LCP请求帧的发送方提供的序列号,并随每个后续消息进行递增。

长度字段给出LCP分组的字节长度,这不是PPP协议的一部分。

2.3 PPP协议工作状态

在这里插入图片描述

  • 在鉴别阶段可进行用户身份认证。

  • NCP将根据网络层不同的协议进行配置,如IP协议将使用IP控制协议IPCP(IP Control Protocal)。







Alt

Once Day

也信美人终作土,不堪幽梦太匆匆......

如果这篇文章为您带来了帮助或启发,不妨点个赞👍和关注,再加上一个小小的收藏⭐!

(。◕‿◕。)感谢您的阅读与支持~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/288544.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MAC使用Clion开发STM32

安装软件 CLion :略 STM32CubeMX:略 brew : /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"openocd : brew install open-ocd # 以下命令有输出说明安装成功 openocd -…

开源大数据集群部署(十八)Hive 安装部署

作者:櫰木 1 创建hive Kerberos主体 bash /root/bigdata/getkeytabs.sh /etc/security/keytab/hive.keytab hive2 安装 在hd1.dtstack.com主机root权限下操作: 解压包 [roothd3.dtstack.com software]# tar -zxvf apache-hive-3.1.2-bin.tar.gz -C …

快速上手Spring Cloud 十:Spring Cloud与微前端

快速上手Spring Cloud 一:Spring Cloud 简介 快速上手Spring Cloud 二:核心组件解析 快速上手Spring Cloud 三:API网关深入探索与实战应用 快速上手Spring Cloud 四:微服务治理与安全 快速上手Spring Cloud 五:Spring …

Web3:探索区块链与物联网的融合

引言 随着科技的不断发展,区块链技术和物联网技术都成为了近年来备受瞩目的前沿技术。而当这两者结合在一起,将产生怎样的化学反应呢?本文将深入探讨Web3时代中区块链与物联网的融合,探索其意义、应用场景以及未来发展趋势。 1. …

[flask]异常抛出和捕获异常

Python学习之Flask全局异常处理流程_flask 异常处理-CSDN博客 读取文件错误 OSError: [Errno 22] Invalid argument:_[errno 22] invalid argument: ..\\data\\snli_1.0\\-CSDN博客 异常触发 assert触发异常: 在Python中,使用assert语句可以检查某个条…

Django 中间件

【一】Django框架之生命周期流程图 【二】介绍 【1】概述 Django 中的中间件(Middleware)是一个轻量级、底层的“插件”系统,用来全局地改变 Django 的输入或输出。每个中间件组件负责处理特定的全局任务,例如处理会话、处理跨站…

电脑访问网页获取路由器WAN口内网IP

因为运维过程中容易出现路由器配置了固定IP但是没人知道后台密码,不确定这个办公室的IP地址,且使用tracert路由追踪也只会出现路由器的LAN口网关并不会出现WAN口IP。 今日正好遇到了个好方法,经过测试可以正常使用。 方法如下: 内…

2.2 添加商户缓存

实战篇Redis 2.2 添加商户缓存 在我们查询商户信息时,我们是直接操作从数据库中去进行查询的,大致逻辑是这样,直接查询数据库那肯定慢咯,所以我们需要增加缓存 GetMapping("/{id}") public Result queryShopById(Pat…

ASP.Net添加Swagger注释

文章目录 Swagger添加Swagger注释 Swagger 添加Swagger注释 1、右击项目->选择属性->点击生成->输出,选中文档文件 2、配置服务 在program.cs 文件里配置SwaggerUI //增加项一 builder.Services.AddSwaggerGen(c> {c.SwaggerDoc("v1", ne…

免费SSL证书和付费SSL证书的区别点

背景: 在了解免费SSL证书和付费SSL证书的区别之前,先带大家了解一下SSL证书的概念和作用。 SSL证书的概念: SSL证书就是基于http超文本传输协议的延伸,在http访问的基础上增加了一个文本传输加密的协议,由于http是明…

外星人m18R2国行中文版原厂预装23H2原装Win11系统恢复带F12恢复重置

戴尔外星人m18R2国行中文版原厂预装23H2系统恢复安装 远程恢复安装:https://pan.baidu.com/s/166gtt2okmMmuPUL1Fo3Gpg?pwdm64f 提取码:m64f 1.自带原厂预装系统各驱动,主题,Logo,Office带所有Alienware主题壁纸、Alienware软件驱动 2.带…

Redis高级面试题-2024

说说你对Redis的理解 Redis是一个基于Key-Value存储结构的开源内存数据库,也是一种NoSQL数据库。 它支持多种数据类型,包括String、Map、Set、ZSet和List,以满足不同应用场景的需求。 Redis以内存存储和优化的数据结构为基础,提…

前端框架的简单介绍

html html-结构 盖房子之前先划三室二厅 (超文本标记语言)(可以实现一切的文本) css css-样式 在房里添家具 (层叠样式单)(化妆在脸上叠加) javascript(js) javascript(js)-交互(行为) 我点击你打开 供显示信息的元…

BRICK POP展示了有趣的链上游戏玩法与奖励机制

新游戏BRICK POP将Sui区块链技术与低Gas费用,以及其在Web3游戏开发方面的专业知识无缝结合。通过充分利用Sui和ONBUFF的INNO平台优势,BRICK POP为玩家提供了一个融合了前沿技术和引人入胜游戏的沉浸式游戏体验。BRICK POP游戏设计为实时交易和高用户参与…

接口测试之深入理解HTTPS

前言 随着网络安全问题越来越被重视,HTTPS协议的使用已经逐渐主流化。目前的主流站点均已使用了HTTPS协议;比如:百度、淘宝、京东等一二线主站都已经迁移到HTTPS服务之上。而作为测试人员来讲,也要需时俱进对HTTPS协议要有一定的…

WPF 命名空间解释

在C#中有命名空间的概念,我们可以使用using引入,就可以使用其中的类,在xaml中,也同样有命名空间,在window标签中用xmlns声明的这几行,这就是本页面引入的命名空间。 一般的情况下,我们引入命名空…

【C++入门】 初见,单推,与C++的第一次约会

关注小庄 顿顿解馋(ᕑᗢᓫ∗)˒ 引言:本篇博客我们开始与C的第一次约会,C是兼容c的,本篇博客我们将了解到C关键字有哪些,C命名空间,C输入与输出和缺省参数的内容,请放心食用 ~ 文章目录 一 🏠 C…

跨站脚本攻击

跨站脚本攻击又称XSS攻击,是代码注入攻击的一种。利用XSS漏洞,攻击者可以窃取Cookies或劫持会话,或注入恶意 HTML 或 JavaScript 代码到页面中,又或者将当前页面重定向至一个攻击者搭建的恶意网站。XSS漏洞的产生多是因为网站开发…

南网科研院携手百度智能云,入选信通院AI原生应用优秀案例

为呈现AI原生研发和应用成效,提供AI原生相关技术、服务、部署、运营、基础设施等选型参考,近期,中国信息通信研究院发布了AI原生技术及应用优秀案例,由南方电网公司输配电部牵头、南方电网科学研究院有限责任公司(以下…

校园app开发流程-uniapp开发-支持APP小程序H5-源码交付-跑腿-二手市场-交友论坛等功能,学校自由选择!

随着科技的不断发展,智慧校园系统和跑腿外卖小程序已经成为当今社会的热门话题。作为未来的重要趋势之一,科技在教育领域中的应用越来越广泛。本文将探讨智慧校园系统和跑腿外卖小程序的开发过程,并阐述如何利用科技“育”见未来 一、智慧校…