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

在这里插入图片描述

在通信线路质量较差的年代,能够实现可靠传输的高级数据链路控制(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.mfbz.cn/a/788547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单对以太网:工业4.0时代的通信革命

单对以太网连接器概述 单对以太网(Single Pair Ethernet,简称SPE)是一种新兴的以太网技术,它通过一对双绞线实现数据传输,支持PoDL(Power over Data Line)技术,为终端设备提供电力供…

Python | Leetcode Python题解之第225题用队列实现栈

题目: 题解: class MyStack:def __init__(self):"""Initialize your data structure here."""self.queue collections.deque()def push(self, x: int) -> None:"""Push element x onto stack."&…

基于单片机的温湿度感应智能晾衣杆系统设计

[摘 要] 本设计拟开发一种湿度感应智能晾衣杆系统 , 此新型晾衣杆是以单片机为主控芯片 来控制的实时检测系统 . 该系统使用 DHT11 温湿度传感器来检测大气的温湿度 , 然后通过单 片机处理信息来控制 28BYJ &…

Python不使用元类的ORM实现

不使用元类的简单ORM实现 在 Python 中,ORM(Object-Relational Mapping)是一种将对象和数据库之间的映射关系进行转换的技术,使得通过面向对象的方式来操作数据库更加方便。通常,我们使用元类(metaclass&a…

网络安全合规建设

网络安全合规建设 一、法律安全需求基本合规(1)《网络安全法》重要节点等级保护政策核心变化 二、安全需求 业务刚需(1)内忧(2)外患 三、解决方法(1)总安全战略目标图(2&…

CTF-PWN-kernel-栈溢出(retuser rop pt_regs ret2dir)

文章目录 参考qwb2018 core检查逆向调试打包上传测试脚本retuserkernel ropinit_credcommit_creds( prepare_kernel_cred(0) )开启KPTI利用swapgs_restore_regs_and_return_to_usermode开启KPTI利用SIGSEGVrop设置CR3寄存器再按照没有KPTI返回 kernel rop ret2userpt_regs 构造…

谈面向任务的多轮对话系统(TOD)

面向任务对话系统(Task-Oriented Dialogue (TOD) Systems)主要是为解决特定任务的,比如订票任务(订机票,电影票等),预定饭店等。这种对话往往需要多轮对话才能够完成。 多轮对话的例子 客户预定一个餐厅的…

仕考网:公务员考试面试时间一般多长?

公务员考试主要分为笔试与面试两个阶段,其中面试是笔试通过的下一关,面试的具体安排通常由相关考试机构或招录单位负责发布并通知考生。 公务员面试的持续时间一般在30分钟至1小时之间,具体时长可能因地区和招录单位的不同而有所变化。常见的…

红日靶场----(三)漏洞利用

上期已经信息收集阶段已经完成,接下来是漏洞利用。 靶场思路 通过信息收集得到两个吧靶场的思路 1、http://192.168.195.33/phpmyadmin/(数据库的管理界面) root/root 2、http://192.168.195.33/yxcms/index.php?radmin/index/login&am…

LLM大模型从入门到精通(2)--LLM模型的评估指标

LLM大模型建立完成之后,需要对大模型的性能进行评估。评估指标可以根据具体任务的不同而有所差异,以下是一些常见的评估指标: 1. 准确率(Accuracy):模型预测正确的样本数占总样本数的比例。 2. 精确率&am…

oracle索引字段存储数据过长,导致索引失效

1:短位数据,索引生效 2:长位索引,索引不生效 此问题发现于6月中旬,线上问题优化。引以为戒。 解决: 并未解决索引不生效问题, 但是基于优化查询,是的查询保持毫秒级

项目收获总结--Redis的知识收获

一、概述 最近几天公司项目开发上线完成,做个收获总结吧~ 今天记录Redis的收获和提升。 二、Redis异步队列 Redis做异步队列一般使用 list 结构作为队列,rpush 生产消息,lpop 消费消息。当 lpop 没有消息的时候,要适当sleep再…

【Linux】进程(9):进程控制2(进程等待)

大家好,我是苏貝,本篇博客带大家了解Linux进程(9)进程控制2,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一. 为什么要进程等待二. 如何进行进程等待1.wait函数—…

Linux udp编程

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

洛谷 数学进制 7.9

P1100 高低位交换 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码一 #include<bits/stdc.h> using namespace std; typedef long long ll; #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)const ll N1e510; char a[N];int main() {IOS;ll a;int b[32]…

一、YOLO V10安装、使用、训练大全

YOLO V10安装、使用、训练大全 一、下载官方源码二、配置conda环境三、安装YOLOV10依赖四、使用官方YOLO V10模型1.下载模型2.使用模型2.1 图片案例 五、制作数据集1.数据集目录结构2.标注工具2.1 安装标注工具2.2 运行标注工具2.3 设置自动保存2.4 切换yolo模式2.5 开始标注2.…

Mosh|内连接、外连接、左连接、右连接(未完)

下图取自菜鸟教程&#xff0c;侵权删&#xff5e; 一、内连接&#xff1a;Inner Joins 模版&#xff1a;SELECT * FROM A JOIN B ON 条件 含义&#xff1a;返回A与B的交集&#xff0c;列为AB列之和 练习&#xff1a;将order_items表和products表连接&#xff0c;返回产品id和…

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…

文件操作和IO流(Java版)

前言 我们无时无刻不在操作文件。可以说&#xff0c;我们在电脑上能看到的图片、视频、音频、文档都是一个又一个的文件&#xff0c;我们需要从文件中读取我们需要的数据&#xff0c;将数据运算后也需要将结果写入文件中长期保存。可见文件的重要性&#xff0c;今天我们就来简…

Gemma2——Google 新开源大型语言模型完整应用指南

0.引言 Gemma 2以前代产品为基础&#xff0c;提供增强的性能和效率&#xff0c;以及一系列创新功能&#xff0c;使其在研究和实际应用中都具有特别的吸引力。Gemma 2 的与众不同之处在于&#xff0c;它能够提供与更大的专有模型相当的性能&#xff0c;但其软件包专为更广泛的可…