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

在这里插入图片描述

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

Joblib是一个专注于高效计算和数据持久化的Python库

Joblib 是 Python 中一个极具价值的库&#xff0c;在高效计算和数据持久化方面发挥着重要作用。 在高效计算领域&#xff0c;Joblib 展现出多方面的出色特性。其并行计算能力尤为突出&#xff0c;能够智能识别可并行的任务&#xff0c;并将其合理分配至计算机的多个 CPU 核心&a…

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;扫地机器人已经成为…

Python字符串操作指南

目录 1. 检测与查询 find index 2. 修改与替换 replace split 3. 大小写转换与检查 capitalize lower upper 4. 头尾检查 startswith endswith 结语 在Python编程中&#xff0c;字符串操作是最常见的任务之一。无论是处理文本数据、生成报告还是解析用户输入&…

量化机器人能否识别市场机会?

量化机器人的设计和应用是为了通过高级算法和大数据分析&#xff0c;精确地识别和把握市场中的交易机会。这些机器人的能力不仅仅局限于执行预定的交易策略&#xff0c;更包括在复杂和快速变化的市场环境中识别利润机会。 首先&#xff0c;量化机器人能够处理和分析大量的市场…

AtCoder Beginner Contest 361

目录 A - Insert B - Intersection of Cuboids C - Make Them Narrow D - Go Stone Puzzle E - Tree and Hamilton Path 2 F - x a^b A - Insert 我们按照题目意思直接模拟即可&#xff0c;不需要使用数组在第k位置的时候额外输出一个x即可 int t,n,m,k,x; void solv…

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…

探索WeNet:一个面向生产的端到端语音识别工具包

探索WeNet&#xff1a;一个面向生产的端到端语音识别工具包 文章目录 探索WeNet&#xff1a;一个面向生产的端到端语音识别工具包引言端到端&#xff08;E2E&#xff09;模型WeNet的主要特点1. U2框架2. 生产导向 实验结果系统设计结论参考资料 引言 在语音识别领域&#xff0…

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解释器上下左右^H问题处理

安装了Python后&#xff0c;发现python解释器里面&#xff0c;Backspace&#xff08;退格键&#xff09;输入显示 ^H 方向键 输入^[[A 等的字符&#xff0c;导致用起来很麻烦&#xff0c;网上搜索资料发现&#xff0c;是由于缺少readline库导致的。 1、临时解决 按ctrlbackspa…

企业协同办公+应用开发平台:推动数字化转型的新引擎

在数字化浪潮的推动下&#xff0c;企业协同办公和应用开发平台已成为企业提高效率、加速创新的关键工具。这两个领域的结合&#xff0c;不仅为企业提供了更加灵活、高效的工作方式&#xff0c;还为企业打造了全新的数字化生态&#xff0c;推动企业向数字化转型的深水区迈进。 企…

插8张显卡的服务器有哪些?

在高性能计算和深度学习领域&#xff0c;拥有强大图形处理能力的服务器越来越受到重视。这类服务器通常能够支持多张显卡&#xff0c;以满足复杂的图形处理和并行计算需求。本文将介绍几款能够支持插入8张显卡的服务器。 NVIDIA DGX Station NVIDIA DGX Station 是一款专为AI研…

htmlcss基础

html 组成 <!--跟标签--> <html><!--头标签--><head><!--网页的标题标签--><tltle>测试html</title></head><!--体标签--><body><font color"yellow" size"7">测试体</font>&l…