计算机网络——数据链路层-点对点协议(组成部分、PPP帧格式、透明传输、差错检测、工作状态)

简介: 计算机网络——数据链路层-点对点协议(组成部分、PPP帧格式、透明传输、差错检测、工作状态)

本篇我们介绍点对点协议PPP

介绍

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

请大家想想看:一般的英特网用户,是如何接入到英特网的呢?

常都是要通过连接到某个英特网服务提供者ISP(例如中国电信、中国联通、中国移动

这三大运营商)才能接入英特网。这些ISP已经从英特网管理机构申请到了一批IP地址,用户计算机只有获取到ISP所分配的合法IP地址后,才能成为英特网上的主机。

用户计算机与SP进行通信时所使用的数据链路层协议,通常就是PPP协议 。



这里需要说明的是:


在1999年公布的在以太网上运行的PPP协议,即PPP over Ethernet。简称为PPPoE。


它使得ISP可以通过DSL、电路调制解调器、以太网等宽带接入技术,以以太网接口的形式为用户提供接入服务。

另外,点对点协议PPP也广泛应用于广域网路由器之间的专用线路 。

PPP协议是因特网工程任务组IETF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC161,RFC1662]。

我们可以在ITF官方网站的相关页面,搜索并查看PPP协议的相关RFC文档。


小结


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

PPP协议是因特网工程任务组IETF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC161,RFC1662]。

组成部分

PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:

  1. 对各种协议数据报的封装方法,也就是之前文章中介绍的封装成帧
  2. 链路控制协议LCP,用于建立、配置以及测试数据链路的连接
  3. 一套网络控制协议NCPs,其中的每一个协议支持不同的网络层协议

从网络体系结构的角度看,PPP是数据链路层的协议;它将上层交付下来的协议数据单元封装成PPP帧,为了支持不同的网络层协议,PPP协议包含了一套网络控制协议NCPs,其中的每一个协议支持不同的网络层协议。(例如TCP/IP中的IP、Novell NetWare网络操作系统中的IPX、Apple公司的AppleTalk等)。链路控制协议LCP用于建立、配置以及测试数据链路的连接。PPP协议

能够在多种类型的点对点链路上运行(例如面向字节的异步链路、面向比特的同步链路)。

PPP帧格式

接下来我们来看看PPP协议的帧格式:

帧首部由四个字段构成,帧尾部由两个字段构成 ,各字段的长度以及帧的数据部分的最大长度如下图所示:

帧首和帧尾部中的标志字段(F,Flag)是PPP帧的定界符,取值为16进制的7E;

帧首部中的地址字段(A,Address)取值为十六进制的FF;

控制字段(C,Control)取值为十六进制的03(最初曾考虑以后再对A和C这两个字段的值进行其他定义,但至今也没有给出,可见这两个字段实际上并没有携带PPP针的信息);


帧首部中的协议字段(P,Protocol)指明了帧的数据部分应送交哪个协议处理。当协议字段取值为16进制的0021时,PPP帧的数据部分就是IP数据报、当协议字段取值为十六进制的C021时,PPP帧的数据部分就是链路控制协议LCP的分组、当协议字段取值为16进制的8021时,PPP帧的数据部分就是网络控制协议NCP的分组;


帧尾部中的帧检验序列FCS字段(Frame Check Sequence),其值是使用循环冗余校验CRC计算出的,校验位用于检查PPP帧是否存在误码。

透明传输

接下来我们来看看PPP协议是如何解决透明传输问题的。

当PPP帧的数据部分出现帧首和帧尾中的标志字段时,如果不采取措施,则会造成接收方对PPP帧是否结束的误判;因为标志字段是PPP帧的定界符,取值为十六进制的7E,也就是二进制的0111 1110。


PPP协议实现透明传输的方法取决于所使用的链路类型,如果是面向字节的异步链路,则采用字节填充法,也就是插入‘转义字符’。


如果是面向比特的同步电路,则采用比特填充法,也就是插入‘比特0’。


字节填充法

举例说明字节填充法,也就是以字节7E作为PPP帧的定界符,以字节为单位来讨论问题。

发送方对PPP帧数据部分的处理应为:

将出现的每一个7E字节转变成两字节序列7D、5E。如图所示:

这相当于在7E字节前插入了转义字节7D,并将7E字节减去16进制的20;

将出现的每一个7D字节转变成两字节序列7D、5D。如图所示:

在出现的每一个ASCII码控制字符前插入一个7D字节,同时将该字符的编码加上16进制的20。例如图中所示:

对于PPT帧的接收方,只要进行反变化即可恢复出原来的PPT帧的数据部分。

比特填充法

再来举例说明比特填充法,也就是以0111 1110作为PPP帧的定界符,以比特为单位来讨论问题。

假设PPP帧的数据部分如下图所示:

其中包含了两个帧定界符。

来看发送方对PPP帧数据部分的处理:

对帧的数据部分进行扫描(一般由硬件实现),只要发现5个连续的比特1,则立即填充一个比特0,如下图所示:

再来看接收方对PPP帧数据部分的处理:

对帧的数据部分进行扫描(一般由硬件实现),只要发现5个连续的比特1,就把其后的一个比特0删除。

差错检测

接下来我们来看看PPP协议是如何进行差错检测的。

PPP帧的尾部包含有一个两字节的帧检验序列FCS字段,使用循环冗余校验CRC来计算该字段的取值。

采用的生成多项式如下所示:

RFC1662文档的附录部分给出了FCS的计算方法的C语言实现,为了减少对CPU的占用

采用查表法来实现。


FCS的计算范围如下图所示:



接收方每收到一个PPP帧,就进行CRC检验。若CRC检验正确,就收下这个帧;反之就丢弃这个帧。使用PPP的数据链路层向上不提供可靠传输服务。

工作状态

PPP链路的开始和结束状态都是静止状态,这时并不存在物理层的连接。

  • 当检测到调制解调器的载波信号,并建立物理层连接后,PPP就进入链路的建立状态,这时列入控制协议LCP开始协商一些配置选项。
  1. 若协商成功则进入鉴别状态
  2. 若协商失败,则退回到静止状态

所协商的配置选项包括最大帧长、鉴别协议等,可以不使用鉴别、也可以使用口令鉴别协议PAP或挑战握手鉴别协议CHAP。


  • 若通讯双方无需鉴别或鉴别身份成功,则进入网络状态;若鉴别失败则进入终止状态。

进入网络状态后进行NCP配置,PPP链路的两端通过相互交换网络层特定的NCP分组来进行NCP配置。如果在PPP链路上运行的是IP协议,则使用IP控制协议IPCP来对PPP链路的每一端配置IP模块(例如分配IP地址)。


  • 配置完成后就进入打开状态,只要链路处于打开状态就可以进行数据通信。
  • 当出现故障或链路的一端发出终止请求时,就进入终止状态。
  • 当载波停止后则回到静止状态。



END



目录
相关文章
|
1天前
|
传感器 数据采集 网络协议
什么是网络通信中的 Modbus协议?
网络协议是网络通信中至关重要的一部分,它定义了网络中两个或多个设备之间通信的规则、过程和格式。这些规则确保了计算机网络设备能够使用一种通用语言来传输和接收数据,而不管它们的设计、硬件或基础设施如何。
10 1
|
3天前
|
JSON 数据挖掘 API
在会议系统工程中,Python可以用于多种任务,如网络请求(用于视频会议的连接和会议数据的传输)、数据分析(用于分析会议参与者的行为或会议效果)等。
在会议系统工程中,Python可以用于多种任务,如网络请求(用于视频会议的连接和会议数据的传输)、数据分析(用于分析会议参与者的行为或会议效果)等。
|
3天前
|
网络协议 数据安全/隐私保护 Python
在通讯系统工程中,这通常包括硬件、软件、网络协议、数据传输等多个方面的设计和实现。
在通讯系统工程中,这通常包括硬件、软件、网络协议、数据传输等多个方面的设计和实现。
|
5天前
|
网络协议 安全 Python
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
|
14天前
|
传感器 算法
基于LEACH路由协议的网络性能matlab仿真,包括数据量,能耗,存活节点
- **LEACH协议**在WSN中通过分簇减少能耗,普通节点向最近簇头发送数据,簇头融合后发送给基站。本项目研究LEACH在不同初始能量、数据包及控制包长度条件下的网络性能,如剩余节点、能量、接收数据量和累计接收量。
|
15天前
|
人工智能 缓存 网络协议
网络层之三层交换、icmp协议、arp协议
网络层之三层交换、icmp协议、arp协议
|
15天前
|
缓存 网络协议 网络性能优化
计算机网络—传输层-tcp、udp协议详解
计算机网络—传输层-tcp、udp协议详解
|
1月前
|
算法 网络架构
计算机网络: 点对点协议 PPP
计算机网络: 点对点协议 PPP
22 0
|
27天前
|
机器学习/深度学习 网络协议 网络性能优化
[计算机网络]深度学习传输层TCP协议
[计算机网络]深度学习传输层TCP协议
26 1
|
1月前
|
缓存
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
26 0
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)