【网络协议详解】——PPP协议(学习笔记)

news2024/11/15 10:05:52

目录

  • 🕒 1. 数据链路层协议概述
  • 🕒 2. PPP协议分析
    • 🕘 2.1 概述
    • 🕘 2.2 工作流程
    • 🕘 2.3 帧格式
  • 🕒 3. LCP协议
    • 🕘 3.1 概述
    • 🕘 3.2 报文格式
    • 🕘 3.3 报文种类
      • 🕤 3.3.1 链路配置报文
      • 🕤 3.3.2 链路终止报文
      • 🕤 3.3.3 链路维护报文
    • 🕘 3.4 工作过程
      • 🕤 3.4.1 链路建立和配置流程
      • 🕤 3.4.2 链路终止流程
      • 🕤 3.4.3 链路维护流程
  • 🕒 4. NCP协议
    • 🕘 4.1 概述
    • 🕘 4.2 IPCP协议
      • 🕤 4.2.1 概述
      • 🕤 4.2.2 报文的格式
      • 🕤 4.2.3 配置选项
  • 🕒 5. PPP协议的认证
    • 🕘 5.1 PAP协议
      • 🕤 5.1.1 概述
      • 🕤 5.1.2 认证流程
      • 🕤 5.1.3 报文格式
    • 🕘 5.2 CHAP协议
      • 🕤 5.2.1 概述
      • 🕤 5.2.2 认证流程
      • 🕤 5.2.3 报文格式
  • 🕒 6. PPP协议实验

🕒 1. 数据链路层协议概述

  • 成帧(Framing)
  • 差错检测(Error Detection)
  • 可靠交付(Reliable Delivery)
  • 媒体访问(Medium Access)
  • 流量控制(Flow Control)

🕒 2. PPP协议分析

🕘 2.1 概述

现在全世界使用得最多的数据链路层协议是PPP(Point to Point Protocol,点到点协议) 。

PPP为点对点连接上传输多种协议的数据包提供了一种标准的方法,其最初的设计目的,是为两个对等结点之间的IP传输提供一种封装协议,除了IP以外,PPP还可以封装其它协议,包括Novell的IPX协议(Internetwork Packet Exchange,网间分组交换)等。

🕘 2.2 工作流程

在建立、保持和终止PPP链路的过程中,PPP链路需要经过5个阶段,除认证阶段外,其它4个阶段都是必要过程。 5个阶段如下:

  1. 链路不可用阶段(Dead)
  2. 链路建立阶段(Establish)
  3. 认证阶段(Authenticate)
  4. 网络层协议阶段(Network)
  5. 链路终止阶段(Terminate)

在这里插入图片描述

🕘 2.3 帧格式

在这里插入图片描述

  • Flag字段为帧定界标志,用来标识PPP帧的开始与结束,长度为1字节,取值固定为0x7E
  • Address字段为地址字段,用来标识接收方的地址,长度为1字节,由于点到点链路的接收方是唯一的,故此字段取值固定为0xFF,表示只有对端才能接受到数据。
  • Control字段为控制字段,长度为1字节,取值固定为0x03,表示无序号信息(Unnumbered Information)。
  • Protocol字段为协议字段,用来标识PPP帧封装的协议数据类型,长度为2字节。此字段使PPP得以封装不同的协议。
字段值协 议
0x0021IP(Internet Protocol)
0x0029Appletalk
0x8021 IPCP(Internet Protocol Control Protocol)
0xC021LCP(Link Control Protocol)
0xC023PAP(Password Authentication Protocol)
0xC025LQR(Link Quality Report)
0xC223CHAP(Challenge Handshake Authentication Protocol)
  • Information字段为信息字段,该字段长度不固定,最大长度等于MRU(Maximum Receive Unit)值,默认为1500字节。此字段存放承载的协议数据,包括LCP、NCP等。
  • FCS(Frame Checksum)字段为帧校验和字段,用来检测PPP帧的完整性,长度为2字节。

🕒 3. LCP协议

🕘 3.1 概述

LCP(Link Control Protocol,链路控制协议):用于建立、配置、维护和终止PPP链路

LCP负责PPP的链路管理,和上层(网络层)协议无关。

🕘 3.2 报文格式

当PPP帧中Protocol字段为0xC021时,表示Information 字段数据为LCP报文。

在这里插入图片描述

  • Code为代码字段(也称类型字段),长度为1字节,用来标识LCP中链路控制报文的类型。
  • Identifier为标识符字段,长度为1字节,是报文的唯一标识。
    • Identifier字段用于匹配请求和回复。
  • Length为长度字段,长度为2字节,Length字段指出该报文的长度,包括Code,Identifier,Length和Data。
  • Data为数据字段,长度是零或多个八位字节,由Length字段声明。
    • Data字段的格式由Code字段决定。

🕘 3.3 报文种类

类型功能报文类型报文代码
链路配置建立和配置链路Configure-Request1
Configure-Ack2
Configure-Nak3
Configure-Reject4
链路终止终止链路Terminate-Request5
Terminate-Ack6
链路维护管理和调试链路Code-Reject7
Protocol-Reject8
Echo-Request9
Echo-Reply10
Discard-Request11

🕤 3.3.1 链路配置报文

Configure-Request(配置请求)的Code字段值为0x01,Data字段值为一到多个选项(Options)列表,选项列表中的参数可同时协商。

在这里插入图片描述

  • Type为类型字段,用于区分协商不同参数。
Type值对应参数功能
0x00Reserved保留
0x01Maximum Receive Unit最大接收单元
0x02Asynchronous Control Character Map异步控制字符映射
0x03Authentication Protocol认证协议
0x04Quality Protocol质量协议
0x05Magic Number幻数
0x07Protocol Field Compression协议域压缩
0x08Address and Control Field Compression地址及控制域压缩
  • Length为长度字段,Length字段指出该配置选项(包括Type、Length和Data字段)的长度。
  • Data为数据字段,Data字段为零或者多个字节,其中包含配置选项的特定详细信息。

Configure-Request(配置请求)报文示例:

在这里插入图片描述

若接收的Configure-Request中的每一个配置选项的值都可接受,则回送Configure-Ack(配置确认)报文,回送的Configure-Ack中的Identifier字段必须与最后接收的Configure-Request相匹配。此外,Configure-Ack中的配置选项必须完全匹配最后接收的Configure-Request。

若收到的每个配置选项都可以识别,但是配置选项的值不能接受,接收方必须回送Configure-Nak(配置否认)。配置选项部分仅用不能接受的配置选项进行填充,回送的Configure-Nak中的Identifier字段必须与最后接收的Configure-Request相匹配。

若收到的部分配置选项是不可识别或不能接受,则回送Configure-Reject(配置拒绝确认)。配置选项部分仅用不可识别或不能接受的配置选项进行填充,回送的Configure- Reject中的Identifier字段必须与最后接收的Configure-Request相匹配。

上述报文除Code字段值不同,配置选项的格式与Configure-Request均相同。

🕤 3.3.2 链路终止报文

在这里插入图片描述

🕤 3.3.3 链路维护报文

Code-Reject(代码拒绝)报文表示无法识别报文的Code字段

若收到该类错误,应立即终止链路,该报文的格式如图,其中“被拒绝的报文”字段包含了无法识别的LCP报文。

在这里插入图片描述

Protocol-Reject(协议拒绝)报文表示无法识别报文的Protocol字段

若收到该类错误,应停止发送该类型的协议报文,该报文的格式如图所示,其中“被拒绝的协议”字段包含了被拒绝的PPP帧的数据区。

在这里插入图片描述

Echo-Request(回复请求)和Echo-Reply(回复应答)用于链路质量和性能测试,其格式如图所示。

在这里插入图片描述

Discard-Request(丢弃请求)是一个辅助的错误调试和实验报文,无实质用途。

这种报文收到即会丢弃。

🕘 3.4 工作过程

🕤 3.4.1 链路建立和配置流程

在这里插入图片描述

  • 当需要建立逻辑链路时,发起方发送Configure-Request(配置请求)报文,用于协商参数;
  • 若接收方收到的每一个配置选项的值都可接受,则回送Configure-Ack(配置确认)报文;
  • 若收到的配置选项是可以识别,但部分配置选项参数不能接受,则回送Configure-Nak(配置否认)报文,并标示出需要重新协商的配置选项;
  • 若配置选项不可识别或不可接受,则回送Configure-Reject(配置拒绝)报文。

🕤 3.4.2 链路终止流程

在这里插入图片描述

  • Terminate-Request(终止请求)报文
  • Terminate-Ack(终止应答)报文

🕤 3.4.3 链路维护流程

在这里插入图片描述

  • Code-Reject(代码拒绝)
  • Protocol-Reject(协议拒绝)
  • Echo-Request(回复请求)和Echo-Reply(回复应答)
  • Discard-Request(丢弃请求)

🕒 4. NCP协议

🕘 4.1 概述

NCP(Network Control Protocol,网络控制协议)用于建立、配置网络层协议,进行参数协商。

不同的网络层协议会使用不同的NCP协议。

  • IP协议使用IPCP(Internet Protocol Control Protocol,IP控制协议);
  • Appletalk协议使用Appletalk NCP进行协商;
  • Novell的 IPX协议使用IPE(Internet Packet Exchange,互连网包交换协议)进行协商。

🕘 4.2 IPCP协议

🕤 4.2.1 概述

若PPP帧中Protocol字段取值0x8021,表示PPP帧正在使用IPCP协商相关通信参数。

IPCP会完成协商IP地址等工作,其后在该PPP链路上传送IP数据报;

若IP数据报传送完毕,若要关闭IP协议,仍需通过IPCP协商终止;

若要释放链路,则需借助LCP协议。

🕤 4.2.2 报文的格式

在这里插入图片描述

类型功能报文类型报文代码
链路配置建立和配置链路Configure-Request1
Configure-Ack2
Configure-Nak3
Configure-Reject4
链路终止终止链路Terminate-Request5
Terminate-Ack6
链路维护管理和调试链路Code-Reject7

与LCP报文格式几乎一样

🕤 4.2.3 配置选项

IPCP协议中,通信双方可协商的配置选项包括3个:

  • 多个IP地址(IP-Addresses)
    • 多个IP地址很难全部协商成功
    • 本选项很少使用
  • IP压缩协议(IP Compression Protocol)
    • 用于协商使用的压缩协议
    • IPCP中仅规定了“Van Jacobson”一个压缩协议,编号为0x002D,Type字段取值为0x02。
    • 该选项默认值为不进行压缩。
  • IP地址(IP Address)
    • 若发起方请求对端分配一个IP地址,接收方应会返回一个合法的IP地址。此时,发起方发送configure-request,type为0x03,length为0x06,其后4字节全为0x00,指明由对端提供IP地址。

在这里插入图片描述

IPCP Configure-Request报文示例:
在这里插入图片描述

🕒 5. PPP协议的认证

🕘 5.1 PAP协议

🕤 5.1.1 概述

PAP(Password Authentication Protocol,口令认证协议)

优点:PAP的整个认证流程非常简单

缺点:认证只能在链路建立阶段进行,身份和口令是以明文进行传输,安全性低

目前PPP协议的认证阶段多使用CHAP认证协议。

🕤 5.1.2 认证流程

在这里插入图片描述

🕤 5.1.3 报文格式

PAP协议的报文共有三种:

  • Authenticate-Request(认证请求)
  • Authenticate-Ack(认证确认)
  • Authenticate-Nak(认证否认)

若PPP帧中Protocol字段取值为0xC023时,表示Information字段承载的是PAP报文。

在这里插入图片描述

🕘 5.2 CHAP协议

🕤 5.2.1 概述

CHAP(Challenge Handshake Authentication Protocol,基于挑战的握手认证协议)

CHAP为三次握手协议,可以在链路建立和数据通信阶段多次使用,进行认证,同时安全性较高

认证过程中需配合事先协商好的算法,确认被认证方的身份,通常使用MD5(Message Digest Algorithm 5)作为其默认算法。只在网络上传输用户名,而不传输用户口令。

目前PPP协议的认证阶段多使用CHAP认证协议

🕤 5.2.2 认证流程

在这里插入图片描述

🕤 5.2.3 报文格式

CHAP协议的报文共有四种:

  • Challenge
  • Response
  • Success
  • Failure

若PPP帧中Protocol字段取值为0xC223时,表示Information字段承载的是CHAP报文。

在这里插入图片描述

🕒 6. PPP协议实验

题目:本实验模拟企业网络环境。R1为分支机构接入网关设备,PC-1为企业分支机构终端。R2为企业总部接入终端网关设备,PC-2为企业总部终端,网络管理员在分支机构访问总部时部署PPP认证 ,R1和R2互为认证路由器和被认证路由器。只有认证通过才能建立PPP连接进行正常访问。

步骤:开启GNS3虚拟机,新建拓扑文件,在工作区添加两台路由器(c3745)和两台PC,按下图连接路由器、PC,开启设备。并按照下图和下表,在R1和R2之间配置PPP协议,并开启CHAP认证(此时s0/0口关闭),将路由器的配置指令截图如下:
在这里插入图片描述

设备接口IP地址地址掩码默认网关
R1S0/010.1.1.1255.255.255.0-
F0/1192.168.3.1255.255.255.0-
R2S0/010.1.1.2255.255.255.0-
F0/1192.168.4.1255.255.255.0-
PC-1E0192.168.3.2255.255.255.0192.168.3.1
PC-2E0192.168.4.2255.255.255.0192.168.4.1

配置R1:

# 进入全局模式
R1#configure terminal
# 创建本地用户名和密码,为CHAP认证做准备,用户名为对方hostname
R1#username R2 password 1234
# 进入接口模式,对f0/1口进行配置
R1(config)#interface f0/1
R1(config-if)#ip address 192.168.3.1 255.255.255.0
# 进入接口模式,对s0/0口进行配置
R1(config)#interface s0/0
# 配置s0/0口的IP地址
R1(config-if)#ip address 10.1.1.1 255.255.255.0
# 设置s0/0口作为DCE设备,为DTE设备提供时钟以便同步,时钟速率为128000(bit/s)
R1(config-if)#clock rate 128000
# 在s0/0口封装ppp协议
R1(config-if)#encapsulation ppp
# 设置ppp协议的认证方式为chap
R1(config-if)#ppp authentication chap
# 停用s0/0口
R1(config-if)shutdown

配置R2:

# 进入全局模式
R2#configure terminal
# 创建本地用户名和密码,为CHAP认证做准备,用户名为对方hostname
R2#username R1 password 1234
# 进入接口模式,对f0/1口进行配置
R1(config)#interface f0/1
R1(config-if)#ip address 192.168.4.1 255.255.255.0
# 进入接口模式,对s0/0口进行配置
R2(config)#interface s0/0
# 配置s0/0口的IP地址
R2(config-if)#ip address 10.1.1.2 255.255.255.0
# 在s0/0口封装ppp协议
R2(config-if)#encapsulation ppp
# 设置ppp协议的认证方式为chap
R2(config-if)#ppp authentication chap
# 停用s0/0口
R2(config-if)shutdown

Q:DCE设备和DTE设备是什么?为什么R1要设置时钟而R2不用?
A:DCE 和 DTE 分别代表数据通信设备和数据端点设备。
DCE (Data Circuit-terminating Equipment) 通常指在数据传输中终止数字电路的设备,负责将数字信号转换为模拟信号,以便在通信设备之间传输。例如,MODEM 设备通过电话线将数字信号转换为模拟信号,然后通过电话线进行传输,以连接到互联网。
DTE (Data Terminal Equipment)指的是终端设备,例如电脑、终端、打印机等。在通信中,DTE 既可以接收数据,也可以发送数据,但必须通过通信线路与 DCE 进行连接。
在数据通信中,DCE 和 DTE 通常通过串行通信线(例如 RS-232、V.35 或 X.21)进行连接,DCE 端常常为对方提供时钟同步信号。一些常见的 DCE 设备包括调制解调器、CSU (Channel Service Unit)、DSU (Data Service Unit) 等。
需要注意的是,相同的设备可能在不同情况下被视为 DTE 或 DCE。例如,一个串口可以连接到一个调制解调器作为 DTE,也可以连接到一个计算机作为 DCE。在本次实验中,R1为分支机构接入网关设备(DCE),R2为企业总部接入终端网关设备(DTE),clock rate 128000 命令仅在 DCE 设备上使用,表示 DCE 设备要发送或接收数据的速率。在这里,另一端是一个 DTE 设备,无需使用 clock rate 命令。

配置PC-1和PC-2:

PC-1> ip 192.168.3.2/24 192.168.3.1
PC-2> ip 192.168.4.2/24 192.168.4.1

抓包分析:
在R1和R2的链路上右键start capture

在这里插入图片描述

# 开启R1的链路
R1(config)#interface s0/0
R1(config-if)#no shutdown
# 开启R2的链路
R2(config)#interface s0/0
R2(config-if)#no shutdown

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

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

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

相关文章

3年经验,面试测试岗只会功能测试开口要求18K,令我陷入沉思

由于朋友临时有事, 所以今天我代替朋友进行一次面试,公司需要招聘一位自动化测试工程师,我以很认真负责的态度完成这个过程, 大概近30分钟。 主要是技术面试, 在近30分钟内, 我与被面试者是以交流学习的方式…

STM32F407+LWIP+DP83848以太网驱动移植

最近有个项目上需要用到网络功能,于是开始移植网络相关代码。在移植的过程中感觉好难,网上找各种资料都没有和自己项目符合的,移植废了废了好的大劲。不过现在回头看看,其实移植很简单,主要是当时刚开始接触网络&#…

【数据分享】2020年我国地级市医疗资源空间分布数据(Shp格式/Excel格式)

医疗资源的配置情况直接反映了一个城市的发展水平,医疗资源相关数据也是经常使用到的数据! 我们发现学者刘海猛在科学数据银行(ScienceDB)平台上分享了2020年我国341个城市(地区、州、盟)的基础医疗资源数…

电脑安装软件时,如何避免捆绑安装?

在网络上非正规网站下载安装软件时,经常会遇到捆绑安装的情况。你明明下载了一个软件,电脑上却多出好几个。那么我们在安装软件时,如何才能避免捆绑安装呢? 什么是捆绑安装? 捆绑安装是指用户安装一个软件时&#xff…

Spring boot框架 JWT实现用户账户密码登录验证

目录 1、JWT定义 1、1 JWT工作流程 1、2 JWT优点 2、添加依赖项到pom.xml 3、创建用户实体类 4、实现认证服务 5、登录请求处理 6、生成JWT 1、JWT定义 JWT(JSON Web Token)是一种用于在网络应用间传递信息的安全传输方式。它是一种紧凑且自包含…

tolua源码分析(五)lua使用C#的enum

tolua源码分析(五)lua使用C#的enum 上一节我们讨论了C#类是如何注册到lua的过程,以及lua调用C#函数时底层所做的事情。在此基础之上,本节我们来看看C#的enum是如何注册到lua的,它和一般类的注册有哪些区别。 老规矩&a…

互联网医院资质代办|互联网医院牌照的申请流程

随着互联网技术的不断发展,互联网医疗已经逐渐成为人们关注的热点话题。而互联网医院作为互联网医疗的一种重要形式,也越来越受到社会各界的关注。若想开展互联网医院业务,则需要具备互联网医院牌照。那么互联网医院牌照的申请流程和需要的资…

算法——归并排序和计数排序

Ⅰ. 归并排序 1. 基本思想 归并排序( MERGE-SORT )是建立在归并操作上的一种有效的排序算法 , 该算法是采用分治法( Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;…

Python爬虫| 一文掌握XPath

本文概要 本篇文章主要介绍利用Python爬虫爬取付费文章,适合练习爬虫基础同学,文中描述和代码示例很详细,干货满满,感兴趣的小伙伴快来一起学习吧! 🌟🌟🌟个人简介🌟&…

公司来了个00后,我愿称之为卷王之王,卷的让人崩溃...

前几天我们公司一下子来了几个新人,看样子好像都是一些00后,这些年轻人是真能熬啊,本来我们几个老油子都是每天稍微加会班就打算下班走了,这几个新人一直不走,搞得我们也不好提前走。 2023年春招已经过去了&#xff0…

网络安全前景怎么样?怎么自学?看这一篇就够了

一、网络安全前景 网络安全行业细分岗位比较多,目前需求量比较大的几类网络安全岗位有渗透测试、安全运维、等保测评等,在岗位需求量和薪资待遇方面都比较可观。 这时很多人就会问,网络安全人才需求量这么大,进入行业的人就会越来…

【redis】案例--迷你版微信抢红包

系列文章目录 文章目录 系列文章目录前言在这里插入图片描述 一、业务描述二、需求分析三、架构设计关键点拆红包算法 二倍均值算法 图解 四、编码实现 RedPackageController整体思路:发红包代码进入拆分红包算法抢红包代码 五、多学一手 前言 一、业务描述 二、需求…

鲁棒优化入门(四)——超详细讲解:两阶段鲁棒优化以及列与约束生成算法(CCG)的matlab+yalmip代码实现

本文的主要参考文献: Zeng B , Zhao L . Solving Two-stage Robust Optimization Problems by A Constraint-and-Column Generation Method[J]. Operations Research Letters, 2013, 41(5):457-461. 1.两阶段鲁棒优化问题的引入 鲁棒优化是应对数据不确定性的一种优…

从零玩转设计模式之单例模式-danlimos

title: 从零玩转设计模式之单例模式 date: 2022-12-12 12:41:03.604 updated: 2022-12-23 15:35:29.0 url: https://www.yby6.com/archives/danlimos categories: - 单例模式 - 设计模式 tags: - Java模式 - 单例模式 - 设计模式 前言 单例设计模式是23种设计模式中最常用的设…

面试题背麻了,花3个月面过华为测开岗,拿个26K不过分吧?

计算机专业,代码能力一般,之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做前端开发,第二份实习由于大三暑假回国的时间比较短(小于两个月),于是找的实习是在一家初创…

基于 ZYNQ 的电能质量系统高速数据采集系统设计

随着电网中非线性负荷用户的不断增加 , 电能质量问题日益严重 。 高精度数据采集系统能够为电能质 量分析提供准确的数据支持 , 是解决电能质量问题的关键依据 。 通过对比现有高速采集系统的设计方案 , 主 控电路多以 ARM 微控制器搭配…

抖音seo排名系统/账号矩阵源码关键词开发部署

抖音seo排名系统/账号矩阵源码关键词开发技术 如何提高 抖音 搜索排名?如何优化抖音搜索排名? 部分代码分析:场景:创建一个Tree()函数来实现以下特性,当我们需要时,所有中间对象 branch1、branch2 和 bra…

Mysql常见的索引模型

目录 有序数组哈希表二叉搜索树B-TreeBTree 有序数组 我们指定一个列为索引,然后按照这个列的值排序,以有序数据存放入数据表中,如下所示 这样,我们在查找数据的时候,就可以通过id这个列,在数据表中进行二…

阿里 P8 整理的《百亿级并发系统设计》实战手册,实在是太香了

面试官问:如何设计一个高并发系统? 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥有高并发经验者优先。 如果你确实有真才实学,在互…

9-《数据结构》

[TOC](9-《数据结构》 一、数组1.稀疏数组 二、链表三、队列四、栈五、树5.1 完全二叉树5.2 满二叉树:深度为k且有2^k-1个结点的二叉树称为满二叉树**5.3 二叉排序树(二叉搜索树、二叉查找树)5.4 平衡二叉树:5.5 红黑树 六、堆七、…