理解点对点协议:构建高效网络通信

在这里插入图片描述

在通信线路质量较差的年代,能够实现可靠传输的高级数据链路控制(High-level Data Link Control, HDLC)协议曾是比较流行的数据链路层协议。HDLC是一个较复杂的协议,实现了滑动窗口协议,并支持点对点和点对多点两种连接方式。然而,对于现在误码率已非常低的点对点有线链路,HDLC协议已较少使用,而简单得多的点对点协议(Point-to-Point Protocol, PPP)则是目前使用最广泛的点对点数据链路层协议。

互联网用户通常需要连接到某个ISP才能接入互联网。用户计算机和ISP进行通信时,所使用的数据链路层协议通常就是PPP。PPP是IETF在1992年制定的,经过1993年和1994年的修订,现在PPP已成为互联网的正式标准(RFC1661,RFC1662)。

3.2.1 PPP的特点

PPP的主要特点如下

  1. 简单:数据链路层的PPP非常简单。接收方每收到一个帧,就进行CRC(循环冗余校验)。如果CRC正确,就收下这个帧;反之,就丢弃这个帧。使用PPP的数据链路层向上不提供可靠传输服务。如需要可靠传输,则由传输层来完成。
  2. 封装成帧:PPP规定了特殊的字符作为帧定界符,使接收端能准确地找出帧的开始和结束位置。
  3. 透明性:PPP能够保证透明传输
  4. 多种网络层协议和多种类型链路:PPP能够在同一条物理链路上同时支持多种网络层协议(如IP和IPX)的运行,并能够在多种类型的点对点链路上运行,例如拨号电话线路、SONET/SDH链路、X.25连接或ISDN电路等。
  5. 差错检测:PPP能够对接收端收到的帧进行差错检测,并立即丢弃有差错的帧。
  6. 检测连接状态:PPP具有一种机制,能够及时(不超过几分钟)自动检测链路是否处于正常工作状态。
  7. 最大传送单元(MTU) :PPP对每一种类型的点对点链路设置MTU的标准默认值。如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错
  8. 网络层地址协商:PPP提供了一种机制,使通信的两个网络层实体能够通过协商知道或配置彼此的网络层地址。

3.2.2 PPP的组成

PPP有三个组成部分

  1. 封装方法:PPP支持面向字符的异步链路和面向比特的同步链路。IP数据报在PPP帧中作为数据部分被传输,数据部分的长度受MTU的限制。
  2. 链路控制协议(LCP) :用于建立、配置和测试数据链路连接。通信双方可协商一些选项,RFC1661中定义了11种LCP分组类型。
  3. 网络控制协议(NCP) :每个协议支持不同的网络层协议,如IP、OSI的网络层协议、DECnet和AppleTalk等。

3.2.3 PPP的帧格式

PPP的帧格式如图3-19所示。PPP帧的首部和尾部分别为四个字段和两个字段。

在这里插入图片描述

  • 各字段的意义

PPP帧的首部第一个字段和尾部第二个字段都是标志字段F,规定为0x7E。标志字段表示一个帧的开始或结束。连续两帧之间只需要用一个标志字段,如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。

首部中的地址字段A规定为0xFF,控制字段C规定为0x03。这两个字段实际上并没有携带PPP帧的信息。

PPP首部的第四个字段是2字节的协议字段,指明信息字段承载的是哪个协议的分组。当协议字段为0x0021时,信息字段是IP数据报;0xC021表示信息字段是PPP链路控制协议(LCP)的分组;0x8021表示信息字段是网络控制协议(NCP)的分组。

信息字段的长度是可变的,不超过1500字节。尾部的第一个字段是使用CRC的帧检验序列(FCS)。

  • 透明传输

当信息字段中出现和标志字段一样的比特组合(0x7E)时,必须采取措施使这种比特组合不出现在信息字段中。在面向字符的异步传输链路上,使用字节填充法实现透明传输,转义符定义为0x7D。填充方法如下:

  1. 将信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
  2. 若信息字段中出现一个0x7D字节,则转变为2字节序列(0x7D,0x5D)。
  3. 若信息字段中出现ASCII码的控制字符,则在该字符前面添加一个0x7D字节,并对该字符的编码加以改变。

在面向比特的同步传输链路上,采用零比特填充方法来实现透明传输。

在这里插入图片描述

3.2.4 PPP的工作状态

在这里插入图片描述

PPP链路的起始和终止状态是“静止”状态,此时物理层连接不存在。在检测到调制解调器的载波信号,并建立物理层连接后,PPP进入“链路建立”状态。LCP开始协商一些配置选项,发送LCP的配置请求帧。这时,链路的另一端可以发送以下几种响应:

  1. 配置确认帧(Configure-Ack) :所有选项都接受。
  2. 配置否认帧(Configure-Nak) :所有选项都理解但不能接受。
  3. 配置拒绝帧(Configure-Reject) :有些选项无法识别或不能接受,需要协商。

协商结束后进入 “鉴别”状态,若通信双方鉴别身份成功,则链路进入“网络”状态,即PPP链路的两端互相交换网络层特定的网络控制分组。如果在PPP链路上运行的是IP,则使用IP控制协议(IPCP)来配置IP模块。网络层配置完毕后,链路进入可进行数据通信的“打开”状态。

数据传输结束后,链路的一端发出终止请求LCP分组,链路则转到“终止”状态。载波停止后,链路回到“静止”状态。

补充内容

  • PPP over Ethernet(PPPoE) :PPP能够适应多种类型的链路,其中一个典型例子是1999年公布的在以太网上运行的PPP,即PPP over Ethernet(PPPoE)。PPPoE使ISP可以通过DSL、光纤等宽带接入技术为用户提供接入服务。PPPoE的典型应用场景是家庭宽带用户通过DSL调制解调器连接到ISP。

  • 差错检测:PPP能够对接收端收到的帧进行差错检测(但不进行纠错),并立即丢弃有差错的帧。若在数据链路层不进行差错检测,那么已出现差错的无用帧,就还要在网络中继续向前转发,白白浪费网络资源。

  • 网络层地址协商:PPP提供了一种机制,使通信的两个网络层(如两个IP层)实体能够通过协商知道或配置彼此的网络层地址。这对拨号连接的链路特别重要,因为在链路层建立了连接后,用户需要配置一个网络层地址,才能在网络层传送分组。

  • 最大传送单元(MTU) :PPP对每一种类型的点对点链路设置MTU的标准默认值。如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。需要强调的是,MTU是数据链路层的帧可以承载的数据部分的最大长度,而不是帧的总长度。

  • LCP配置选项:LCP配置选项包括链路上的最大帧长、所使用的鉴别协议(Authentication Protocol)的规约(如果有的话),以及不使用PPP帧中的地址和控制字段(因为这两个字段的值是固定的,没有任何信息量,可以在PPP帧的首部中省略这两个字节)。

  • NCP的作用:NCP的作用是对PPP链路的每一端配置网络层模块(如分配IP地址)。和LCP分组封装成PPP帧一样,NCP分组也封装成PPP帧在PPP链路上传送。

总结

通过本文的详细解析,你应该已经对PPP协议有了深入的了解,包括其特点组成部分帧格式工作状态应用场景。PPP协议的灵活性适应性使其成为点对点数据链路层协议的首选。希望这些内容能为你的学习和工作提供有力的支持。计算机网络是一个不断发展的领域,保持学习和探索的热情是进步的关键。如果你有任何疑问或需要进一步的讨论,欢迎随时联系我。祝你学习愉快,前程似锦!
图文来源:《计算机网络教程》

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

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

相关文章

钉钉扫码登录第三方

钉钉文档 实现登录第三方网站 - 钉钉开放平台 (dingtalk.com) html页面 将html放在 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>登录</title>// jquery<script src"http://code.jqu…

Qt:12.输入类控件(QSpinBox-整数值输入的小部件、QDateEdit、QTimeEdit、QDateTimeEdit- 日期和时间输入的控件)

目录 一、QSpinBox-整数值输入的小部件&#xff1a; 1.1QSpinBox介绍&#xff1a; 1.2属性介绍&#xff1a; 1.3通用属性介绍&#xff1a; 1.4信号介绍&#xff1a; 二、QDateEdit、QTimeEdit、QDateTimeEdit- 日期和时间输入的控件&#xff1a; 2.1QDateEdit、QTimeEdit…

机器人伦理分析:从扫地机器人到智能伙伴

我发过一个泡泡&#xff1a;机器人和扫地机器人。 意犹未尽&#xff0c;我觉得这是一个值得讨论下去的话题。或者是未来话题 在科技迅猛发展的今天&#xff0c;机器人已经从简单的执行工具演变为能够执行复杂任务的智能实体。特别是在家庭环境中&#xff0c;扫地机器人已经成为…

Mac下flutter运行iOS模拟器

上篇flutter环境安装&#xff08;Macvscode&#xff09;已经将vscode和xcode等开发环境都搭建起来了&#xff0c;vscode新建工程还是比较方便的&#xff0c;那么&#xff0c;建立好了之后&#xff0c;我们怎么看效果呢&#xff1f; 1. vscode新建项目 通过 vscode的命令命板(…

零信任网络安全

随着数字化转型的发生&#xff0c;网络边界也在不断被重新定义&#xff0c;因此&#xff0c;组织必须使用新的安全方法重新定义其防御策略。 零信任是一种基于“永不信任&#xff0c;永远验证”原则的安全方法&#xff0c;它强调无论在公司内部或外部&#xff0c;任何用户、设…

如何检测用户的Chrome插件

背景 已知一些Chrome插件会影响到网站的一些功能&#xff0c;希望在前端主动检测到用户使用了某插件然后弹出提示让用户关闭&#xff0c;以减少客诉 方法 1. 检测资源文件 如图获取插件的ID 启用插件后&#xff0c;打开 chrome-extension://${ID}/manifest.json 找到 web_a…

分享一个 EF6 分页查询数据的 IQueryable 扩展方法

前言 不废话&#xff0c;直接上方法。_ IQueryable 扩展方法 方法一 /// <summary> /// 由其它 Reponsitory 提供数据源&#xff0c;分页查询数据 /// </summary> /// <typeparam name"T"></typeparam> /// <typeparam name"S&quo…

MySQL:TABLE_SCHEMA及其应用

MySQL TABLE_SCHEMA及其应用 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/ar…

24/07/08数据结构(2.1203)顺序表实现

size属于结构体的作用域 如果要访问一个结构体的指针用-> 如果要访问一个结构体的变量用. 点操作 #include<stdio.h> #include<stdlib.h> #include<string.h> #include"seqlist.h" //typedef struct seqList{ // SLDataType* _data; //需…

20_Inception V3深度学习图像分类算法

回顾GoogleNet:传送门 1.1 介绍 InceptionV3是Google开发的一种深度卷积神经网络架构&#xff0c;它是Inception系列网络中的第三代模型&#xff0c;由Christian Szegedy等人在论文《Rethinking the Inception Architecture for Computer Vision》中提出&#xff0c;该论文发…

基于Java的学生选课系统

第1章 系统概述 1.1概述 背景&#xff1a;随着计算机网络技术的发展&#xff0c;Web 数据库技术已成为应用最为广泛的网站架构基础技术。学生选课系统作为教育单位不可缺少的部分&#xff0c;其内容对于学校的决策者和管理者至关重要。传统的人工管理方式存在效率低、保密性差等…

Python酷库之旅-第三方库Pandas(012)

目录 一、用法精讲 28、pandas.HDFStore.keys函数 28-1、语法 28-2、参数 28-3、功能 28-4、返回值 28-5、说明 28-6、用法 28-6-1、数据准备 28-6-2、代码示例 28-6-3、结果输出 29、pandas.HDFStore.groups函数 29-1、语法 29-2、参数 29-3、功能 29-4、返回…

Python环境配置PyCharm

PyCharm Community设置: A 网络连接 File-Settings-Tools-Web Browsers and Preview-看情况吧[全部删除&#xff0c;换成本地浏览器即可] B Interpreter File-Settings-Project-Python Interpreter-Add Interpreter-System Interpreter-选择 C 系统变量 把B中下载的Pytho…

【从零开始实现stm32无刷电机FOC】【理论】【3/6 位置、速度、电流控制】

目录 PID控制滤波单独位置控制单独速度控制单独电流控制位置-速度-电流串级控制 上一节&#xff0c;通过对SVPWM的推导&#xff0c;我们获得了控制电机转子任意受力的能力。本节&#xff0c;我们选用上节得到的转子dq轴解耦的SVPWM形式&#xff0c;对转子受力进行合理控制&…

JVM之垃圾回收算法详解

垃圾回收算法 Java是如何实现垃圾回收的呢&#xff1f;简单来说&#xff0c;垃圾回收要做的有两件事&#xff1a; 1、找到内存中存活的对象 2、释放不再存活对象的内存&#xff0c;使得程序能再次利用这部分空间 [本质上后续所有的垃圾回收算法&#xff0c;都是在前两种算法的基…

免费下载工具 -- Free Download Manager(FDM) v6.24.0.5818

软件简介 Free Download Manager (FDM) 是一款免费的功能强大的下载管理软件&#xff0c;适用于多种操作系统&#xff0c;包括 Windows、macOS、Android 和 Linux。这款软件的特色在于它快速、安全且高效的下载能力。它可以下载各种热门网站的影片&#xff0c;支持 HTTP/HTTP…

Vatee万腾平台:创新科技,驱动未来

在科技日新月异的今天&#xff0c;每一个创新的火花都可能成为推动社会进步的重要力量。Vatee万腾平台&#xff0c;作为科技创新领域的佼佼者&#xff0c;正以其卓越的技术实力、前瞻性的战略眼光和不懈的探索精神&#xff0c;驱动着未来的车轮滚滚向前。 Vatee万腾平台深知&am…

Linux基本命令的使用示例

目录 1实现效果&#xff1a;在downloads目录下创建1个空文件夹empty&#xff0c;创建1个空文件lake.txt&#xff0c;输入任意数据保存后退出 2实现效果&#xff1a;搜索包含关键字"泉眼"的行 3实现效果&#xff1a;重命名文件夹empty为full&#xff0c;复制文件cc…

Vue3项目如何使用npm link本地测试组件库

一、组件库操作 1、在组件库项目中先运行npm run lib&#xff0c;其效果如下 2、在组件库项目中在运行npm link&#xff0c;其效果如下 会创建一个全局的软连接指向本地的组件库 二、Vue3项目使用 1、在项目中运行 npm link 组件名称&#xff08;即&#xff1a;组件库packag…

ChatGPT提问提示指南PDF下载经典分享推荐书籍

ChatGPT提问提示指南PDF&#xff0c;在本书的帮助下&#xff0c;您将学习到如何有效地向 ChatGPT 提出问题&#xff0c;以获得更准确和有用的回答。我们希望这本书能够为您提供实用的指南和策略&#xff0c;帮助您更好地与 ChatGPT 交互。 ChatGPT提问提示指南PDF下载 无论您是…