【链路层】点对点协议 PPP

2024-01-17 16:44
文章标签 协议 链路层 ppp 点对点

本文主要是介绍【链路层】点对点协议 PPP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、PPP协议的特点

2、PPP协议的组成和帧格式

3、PPP协议的工作状态


        目前使用得最广泛的数据链路层协议是点对点协议PPP(Point-to-Point Protocol)

1、PPP协议的特点

        我们知道,互联网用户通常都要连接到某个 ISP 才能接入到互联网。PPP 协议就是用户计算机和 ISP 进行通信时所使用的数据链路层协议。//ISP是互联网服务提供商(Internet Service Provider)的缩写

        简单:接收方每收到一个帧,就进行 CRC 检验。如 CRC 检验正确,就收下这个帧;反之,就丢弃这个帧,其他什么也不做。

        封装成帧:规定作为帧定界符的特殊字符,以便使接收端从收到的比特流中能准确地找出顿的开始和结束位置。

        透明性:如果数据中碰巧出现了和帧定界符一样的比特组合时,必须采取有效的措施来解决这个问题。

        支持多种网络层协议:能够在同一条物理链路上同时支持多种网络层协议(如 IP 和IPX等)的运行。

        支持多种类型链路:例如,串行的或并行的同步的或异步的,低速的或高速的,电的或光的,交换的或非交换的点对点链路。

        差错检测:能够对接收端收到的帧进行检测,并立即丢弃有差错的帧,避免无用帧浪费网络资源。

        连接状态检测:能够及时自动检测出链路是否处于正常工作状态。

        最大传送单元限制:对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值。

        支持网络层地址协商:支持通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址。

        支持数据压缩协商:协议需要支持协商使用数据压缩算法,但并不要求将数据压缩算法进行标准化。

        在 TCP/IP 协议族中,可靠传输由运输层的 TCP 协议负责,因此数据链路层的 PPP 协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。PPP 协议不支持多点线路,而只支持点对点的链路通信。此外,PPP 协议只支持全双工链路。

2、PPP协议的组成和帧格式

        PPP 协议由三个组成部分:

  • 一个将 IP 数据报封装到串行链路的方法。//数据报封装
  • 一个用来建立、配置和测试数据链路连接的链路控制协议 LCP (Link Control Protocol)。//连接控制
  • 一套网络控制协议 NCP(Network Control Protocol),其中的每一个协议支持不同的网络层协议,如 IP、OSI 的网络层、DECnet 和 AppleTalk 等。//网络控制协议

        PPP协议的帧格式:

        PPP 协议的帧格式如下图所示,首部和尾部分别为四个字段和两个字段:

        首部的第一个字段和尾部的第二个字段都是标志字段 F (Flag),规定为 0X7E(符号 "0X表示它后面的字符是用十六进制表示的。十六进制的 7E 的二进制表示是 01111110)。标志字段表示一个帧的开始或结束。因此标志字段就是 PPP 的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。

        首部中的地址字段 A 规定为 OXFF(即 11111111),控制字段 C 规定为 OX03(即00000011)。最初曾考虑以后再对这两个字段的值进行其他定义,但至今也没有给出。可见这两个字段实际上并没有携带 PPP 的信息。//暂时无意义,不携带信息

        PPP 首部的第四个字段是 2 字节的协议字段。当协议字段为 OX0021 时,PPP 的信息字段就是 IP 数据报。若为 OXC021 则信息字段是 PPP 链路控制协议 LCP 的数据,而 OX8021 表示这是网络层的控制数据。

        信息字段的长度是可变的,不超过1500 字节。

        尾部中的第一个字段(2字节)是使用 CRC 的检验序列 FCS

3、PPP协议的工作状态

        思考一个问题:PPP 链路一开始是怎样被初始化的?

        当用户拨号接入 ISP 后,就建立了一条从用户个人电脑到 ISP 的物理连接

        这时,用户个人电脑向 ISP 发送一系列的链路控制协议 LCP 分组(封装成多个 PPP),以便建立 LCP 连接。这些分组及其响应选择了将要使用的一些 PPP 参数。接着还要进行网络层配置,网络控制协议 NCP 给新接入的用户个人电脑分配一个临时的 IP 地址。这样,用户个人电脑就成为互联网上的一个有 IP 地址的主机了。//物理连接+LCP连接+IP分配

        当用户通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

        上述过程可用下图所示的状态图来描述。

        图右方的绿色方框给出了对 PPP 协议的几个状态的说明。从设备之间无链路开始到先建立物理链路,再建立链路控制协议 LCP 链路。经过鉴别后再建立网络控制协议 NCP 链路,然后才能交换数据。

        由此可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

        至此,全文结束。

这篇关于【链路层】点对点协议 PPP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616641

相关文章

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备