PPP点对点协议

概述

Point-to-Point Protocol,点到点协议,工作于数据链路层,在链路层上传输网络层协议前验证链路的对端,主要用于在全双工的同异步链路上进行点到点的数据传输。

PPP主要是用来通过拨号或专线方式在两个网络节点之间建立连接、发送数据。PPP是各类型主机、网桥和路由器之间简单连接的一种解决方案。在RFC1661中有详细的描述。PPP协议是目前广域网上应用最广泛的协议之一,它的优点在于简单、具备用户验证能力、可以解决IP分配等。

PPP协议是IETF在1992年制定的。经过1993年和1994年的修订,在1994年就已成为互联网的正式标准。

PPP

PPP包含如下三个部分:

  • 在串行链路上封装数据报的方法。PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分。这个信息部分的长度受最大传送单元MTU的限制;
  • 建立、配置和测试数据链路连接的链路控制协议(Link Control Protocol,LCP),用于对封装格式选项的自动协商、建立和终止连接,探测链路错误和配置错误;
  • 建立和配置不同网络层协议的一组网络控制协议(Network Control Protocol,NCP),PPP协议规定针对每一种网络层协议都有相应的网络控制协议,并用他们来管理各个协议不同的需求。

PPP协议定义三种认证协议:

  • PAP:Password Authentication Protocol,密码验证协议
  • CHAP:Challenge-Handshake Authentication Protocol,挑战—握手验证协议
  • EAP:Extensible Authentication Protocol,扩展认证协议

特点

  • PPP既支持同步传输又支持异步传输,而X.25、FR(Frame Relay)等数据链路层协议仅支持同步传输,SLIP仅支持异步传输
  • PPP 协议具有很好的扩展性。如,当需要在以太网链路上承载PPP协议时,PPP可扩展为PPPoE
  • PPP提供LCP协议,用于各种链路层参数的协商
  • PPP提供各种NCP协议(如IPCP、IPXCP),用于各网络层参数的协商,更好地支持网络层协议
  • PPP 提供认证协议CHAP、PAP,更好地保证网络安全性
  • 无重传机制,网络开销小,速度快

一个典型的PPP链路建立过程分为三个阶段:

  • 创建阶段:将对基本的通信方式进行选择。链路两端设备通过LCP向对方发送配置信息,建立链路。在链路创建阶段,只是对验证协议进行选择,具体的用户验证过程在认证阶段实现
  • 认证阶段:客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全的验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。认证成功,则转到网络层协商阶段。如果认证失败,则链路终止
  • 网络层协商阶段:认证阶段完成之后,PPP将调用在链路创建阶段选定的各种NCP协商高层协议问题,例如,在该阶段IP控制协议可以向拨入用户分配动态地址。

报文格式

在这里插入图片描述
包含字段:

  • Flag域:标识一个物理帧的起始和结束,该字节为二进制序列01111110(0x7E)
  • Address域:字节固定为11111111(0xFF),是一个广播地址
  • Control域:默认为00000011(0X03),表明为无序号帧
  • Protocol字段:用来说明PPP所封装的协议报文类型;典型字段值有:0xC021代表LCP,0xC023代表PAP报,0xC223代表CHAP报文。如果协议字段被设为0xC021,则说明通信双方正通过LCP报文进行PPP链路的协商和建立
  • Information字段:包含协议字段中指定协议的数据包
    • Code 字段:主要是用来标识LCP数据报文的类型。典型的报文类型有:配置信息报文(Configure Packets:0x01),配置成功信息报文(Configure-Ack:0x02),终止请求报文(Terminate-Request:0x05)
    • Identifier域:1个字节,用来匹配请求和响应
    • Data字段:默认最大长度(不包括协议字段)称为最大接收单元MRU(Maximum Receive Unit),MRU缺省值为1500字节
  • FCS:Drame Check Sequence,帧校验序列,是个16位的校验和,用于检查PPP帧的完整性

字节填充
当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。

当PPP使用异步传输时,它把转义符定义为0x7D(即01111101),并使用字节填充,RFC 1662规定如下填充方法:

  • 把信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D, 0x5E)
  • 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变成为2字节序列(0x7D, 0x5D)
  • 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是传输结束,ETX)就要把它转变为2字节序列(0x7D, 0x23)

由于在发送端进行字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

零比特填充
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送)。在这种情况下,PPP协议采用零比特填充方法来实现透明传输。

具体做法是:在发送端,先扫描整个信息字段(通常用硬件实现,也可用软件实现,只是会慢些)。只要发现有5个连续1,则立即填入一个0。经过这种零比特填充后的数据,可保证在信息字段中不会出现6个连续1。接收端在收到一个帧时,先找到标志字段F以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除,以还原成原来的信息比特流。这样就保证透明传输:在所传送的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的错误判断。

建立状态机

在这里插入图片描述
包含如下几个阶段:

  • Dead阶段:也称为物理层不可用阶段。当通信双方的两端检测到物理线路激活时,就会从Dead阶段迁移至Established阶段,即链路建立阶段
  • Established阶段:PPP链路进行LCP参数协商。协商内容包括最大接收单元MRU、认证方式、魔术字(Magic Number)等选项。LCP参数协商成功后会进入Opened状态,表示底层链路已经建立
  • Authenticate阶段:多数情况下,链路两端的设备是需要经过认证阶段(Authenticate)后才能够进入到网络层协议阶段。PPP链路在缺省情况下是不要求进行认证的。如果要求认证,则在链路建立阶段必须指定认证协议。认证方式是在链路建立阶段双方进行协商的。如果在这个阶段再次收到Configure-Request报文,则又会返回到链路建立阶段
  • Network阶段:PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。如果在这个阶段收到Configure-Request报文,也会返回到链路建立阶段。NCP协商成功后,PPP链路将保持通信状态
  • Terminate:PPP运行过程中,可以随时中断连接,例如物理链路断开、认证失败、超时定时器时间、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段。在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段,直到通信双方重新建立PPP连接。

工作原理

当用户拨号接入ISP后,就建立一条从用户个人电脑到ISP的物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。接着进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配了一个临时的IP地址,这样,用户个人电脑就成为互联网上的一个有IP地址的主机了。当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址,接着,LCP释放数据链路层连接,最后释放物理层连接。
在这里插入图片描述
步骤:

  • 当用户个人电脑通过调制解调器呼叫路由器时(比如点屏幕上点击宽带连接),路由器就能够检测到调制解调器发出的载波信号。在双方建立了物理层连接后,PPP进入链路建立状态(Link Establish),其目的是建立链路层的LCP连接。
  • 接下来,LCP开始协商一些配置选项,即发送LCP的配置请求帧,这是一个PPP帧,其协议字段为LCP对应的代码(0xC021),信息字段包含特定的配置请求。LCP配置选项包括:链路上的最大帧长、所使用的鉴别协议的规约(如果有)、不使用PPP帧中的地址和控制字段(因为这两个字段的值是固定的,没有任何信息量,可以在PPP帧的首部忽略这两个字节)。链路的另一端可以发送以下几种响应中的一种:
    • 配置确认帧(Configure-Ack):所有选项都接受
    • 配置否认帧(Configure-Nak):所有选项都理解但不能接受
    • 配置拒绝帧(Configure-Reject):有的选项无法识别或不能接受,需要协商
  • 协商结束后,双方就建立LCP链路,接着就进入鉴别状态(Authenticate)。在这一状态,只允许传送LCP协议的分组、鉴别协议的分组、监测链路质量的分组。若使用口令鉴别协议PAP(Password Authentication Protocol),则需要发起通信的一方发送身份标识符和口令。系统可允许用户重试若干次。如果需要有更好的安全性,则可使用更加复杂的口令握手鉴别协议CHAP(Challenge-Handshake Authentication Protocol)。若鉴别身份失败,则转到链路终止状态(Link Terminate),若鉴别成功,则进入网络层协议状态(Network Layer Protocol)
  • 在网络层协议状态,PPP链路的两端的网络控制协议NCP根据网络层的不同协议互相交换网络层特定的网络控制分组,现在的路由器都能够同时支持多种网络层协议,PPP协议的两端的网络层可以运行不同的网络层协议,但仍然使用同一个PPP协议。如果PPP链路上运行的是IP协议,则对PPP链路的每一端配置IP协议模块时(如分配IP地址)就要使用NCP中支持的协议—IP控制协议IPCP(IP Control Protocol)。IPCP分组也封账成PPP帧(协议字段为OX8021)在PPP链路上传送。在低速链路上运行时,双方还可以协商使用压缩的TCP和IP首部,以减少在链路上发送的比特数
  • 当网络层配置完毕后,链路就进入可进行数据通信的链路打开状态(Link Open)。链路的两端可以向彼此发送分组。两端还可发送回送请求LCP分组(Echo-Request)和回送回答LCP分组(Echo-Reply),以检查链路的状态。数据传输结束后,可以由链路的一端发出终止请求LCP分组(Terminate-Request),请求终止链路连接。在收到对方发来的终止确认LCP分组后(Terminate-Ack),转到链路终止状态。如果链路出现故障,也会从链路打开状态转到链路终止状态。当调制解调器的载波停止后,则回到链路静止状态。

从设备无链路开始,先建立物理链路,再建立链路控制协议LCP链路。经过鉴别后,再建立网络控制协议NCP链路,然后才能交换数据。可见,PPP协议已不是纯粹的数据链路层的协议,它包含物理层和网络层的内容。

PAP

PAP是一种简单的明文验证方式。网络接入服务器要求用户提供用户名和口令,PAP以明文方式返回用户信息,并且对回送或者重复验证和错误攻击没有保护措施。

很明显,这种验证方式的安全性较差,第三方可以很容易地获取被传送的用户名和口令,并利用这些信息与网络接入服务器建立连接获取网络接入服务器提供的资源。所以,一旦用户密码被第三方窃取,PAP无法提供避免受到第三方攻击的保障措施。

CHAP

CHAP是一种加密的验证方式,能够避免建立连接时传送用户的明文密码。网络接入服务器向远程用户发送一个挑战口令,其中包括会话ID和一个任意生成的挑战字串。远程客户端使用MD5散列算法返回用户名和加密的挑战口令、会话ID及用户口令。

CHAP对PAP进行了改进,不再直接通过链路发送明文口令,而是使用挑战口令以散列算法对口令进行加密。因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的散列操作,并将结果与用户返回的口令进行对照。

CHAP为每一次验证任意生成一个挑战字串来防止受到攻击。在整个连接过程中,CHAP将不定时地随机向客户端重复发送挑战口令,从而避免非法入侵者冒充远程客户进行攻击。

CHAP优点:

  • 通过可变的挑战口令和随机地、重复地发挑战口令,CHAP防止重放攻击
  • 该认证方法依赖于认证者和对端共享的密钥,密钥不是通过链路发送的
  • 虽然该认证是单向的,但是在两个方向都进行CHAP协商,同一密钥可以很容易地实现交互认证
  • 由于CHAP可以用在许多不同的系统认证中,因此可以用用户名作为索引,以便在一张大型密钥表中查找正确的密钥。这样也可以在一个系统中支持多个用户名—密钥对,在会话中随时改变密钥。

CHAP在设计上的要求:

  • CHAP算法要求密钥长度必须至少是1字节,至少应该不易让人猜出,密钥最好至少是散列算法所选用的散列码的长度,如此可以保证密钥不易受到穷举搜索攻击。所选用的散列算法,必须保证从已知挑战口令和响应值来确定密钥在计算上是不可行的。
  • 每一个挑战口令应该是唯一的,否则在同一密钥下,重复挑战口令将使攻击者能够用以前截获的响应值应答挑战口令。由于希望同一密钥可以用于地理上分散的不同服务器的认证,因此挑战口令应该做到全局临时唯一。
  • 每一个挑战口令也应该是不可预计的,否则攻击者可以欺骗对方,让对方响应一个预计的挑战口令,然后用该响应冒充对端欺骗认证者。虽然CHAP不能防止实时地主动搭线窃听攻击,但是只要能产生不可预计的挑战口令就可以防范大多数的主动攻击。

EAP

EAP是一个用于PPP认证的通用协议,可以支持多种认证方法。EAP并不在链路控制阶段而是在认证阶段指定认证方法,这样认证方就可以在得到更多的信息以后再决定使用什么认证方法。这种机制还允许PPP认证方简单地把收到的认证信息传给后方的认证服务器,由后方的认证服务器来真正实现各种认证方法。

EAP的认证过程:在链路阶段完成以后,认证方向对端发送一个或多个请求报文。在请求报文中有一个类型字用来指明认证方所请求的信息类型,例如,可以是对端的ID、MD5的挑战口令、一次性密码及通用密码卡等。MD5的挑战口令对应于CHAP认证协议的挑战口令。典型情况下,认证方首先发送一个ID请求报文随后再发送其他的请求报文。对端对每一个请求报文响应一个应答报文。和请求报文一样,应答报文中也包含一个类型字段,对应于所回应的请求报文中的类型字段。认证方再通过发送一个成功或者失败的报文来结束认证过程。

优点:它可以支持多种认证机制,而不需要在建立连接阶段指定;某些设备,例如,网络接入服务器,不需要关心每一个请求信息的真正含义,而是作为一个代理把认证报文直接传给后端的认证服务器,设备只需关心认证结果是成功还是失败,然后结束认证阶段。

缺点:需要在LCP中增加一个新的认证协议,这样现有的PPP要想使用EAP就必须进行修改。同时,使用EAP也和现有的在LCP协商阶段指定认证方法的模型不一致。

参考

  • 数据链路层-点对点协议PPP

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

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

相关文章

docker-本地私有仓库、harbor私有仓库部署与管理

一、本地私有仓库: 1、本地私有仓库简介: docker本地仓库,存放镜像,本地的机器上传和下载,pull/push。 使用私有仓库有许多优点: 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下…

SQL查询语句(三)范围查找关键字

在上一篇文章中,我们介绍了SQL语句中,逻辑关键字的作用,并举例演示了如何用逻辑关键字来组合WHERE子句。在文章的末尾我们提到了两个用于范围查找的关键字IN和BETWEEN。这两个关键字都可以与NOT关键字灵活组合,起到对字句结果取反…

Jmeter用jdbc实现对数据库的操作

我们在用Jmeter进行数据库的操作时需要用到配置组件“JDBC Connection Configuration”,通过配置相应的驱动能够让我们通过Jmeter实现对数据库的增删改查,这里我用的mysql数据库一起来看下是怎么实现的吧。 1.驱动包安装 在安装驱动之前我们要先查看当前…

【刷题篇】双指针(二)

文章目录 1、有效三角形的个数2、查找总价格为目标值的两个商品3、三数之和4、四数之和 1、有效三角形的个数 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 class Solution { public:int triangleNumber(vector<int>& n…

MQTT服务搭建及python使用示例

1、MQTT协议 1.1、MQTT介绍 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的、基于发布/订阅模式的通信协议&#xff0c;通常用于物联网设备之间的通讯。它具有低带宽、低功耗和开放性等特点&#xff0c;适合在网络带宽有限或者网络连接不稳定…

联发科天玑AI开发套件亮相:开发智能终端生成式AI应用的全面工具

在今日召开的天玑开发者大会2024&#xff08;MDDC 2024&#xff09;上&#xff0c;联发科向外界展示了其最新力作——天玑AI开发套件。该套件是为合作伙伴提供终端生成式AI应用开发的一站式工具包&#xff0c;意在简化并加速开发过程。 联发科推出的天玑AI开发套件包括四大核心…

去除图片水印软件-inpaint

一、普通使用教程 亲眼看看使用 Inpaint 从照片中删除不需要的元素是多么容易&#xff1a; 1.1加载图片 1.2 选择要纠正的问题区域 1.3 告别不需要的对象并保存 二、功能 1 修复旧照片 老并不总是意味着坏。我们拥有的一些旧照片对我们来说仍然很重要&#xff0c;因为它们仍…

minio上传文件失败如何解决

1. 做了什么操作 通过接口上传excel文件&#xff0c;返回响应值 2. 错误如图 2. 如何解决 根据错误描述定位到了部署minio的地方minio通过docker部署&#xff0c;找到docker - compose发现配置文件中minio有两个端口&#xff0c;一个是用于api的&#xff0c;一个是用于管理界面…

Dell EMC Storage Unity: Remove/Install Memory Module

SP A 一个内存故障 点击system view -> Enclosures->Top查看 再次查看Alert&#xff0c; 确认内存出现问题 进入Service &#xff0c; 将SP A置为service状态 移出SP A &#xff0c;进行内存更换 更换完内存后&#xff0c;将SP A插入设备&#xff0c;并进行线缆连接 进入…

6层板学习笔记2

说明:笔记基于6层全志H3消费电子0.65MM间距BGA 67、多层板的电源建议直接大面积铺铜,不建议走线,铺铜充分满足其载流能力 68、凡亿推荐表层1OZ的铜厚线宽20MIL能承载1A的电流,内层0.5OZ的铜厚线宽为40MIL能承载1A的电流,过孔直径20MIL(0.5MM)能承载1A左右的电流,实际设…

Django项目中的Nginx+uWSGI

Django项目中的NginxuWSGI部署 配合另一篇博客共同饮用Django项目服务器部署&#xff08;2024最新&#xff09; 一&#xff1a;Nginx uWSGI部署框架 用户浏览器向nginx发送请求&#xff0c;nginx判断请求是动态海事静态&#xff0c;如果是静态请求&#xff0c;则直接返回静态…

(五)JSP教程——response对象

response对象主要用于动态响应客户端请求&#xff08;request&#xff09;&#xff0c;然后将JSP处理后的结果返回给客户端浏览器。JSP容器根据客户端的请求建立一个默认的response对象&#xff0c;然后使用response对象动态地创建Web页面、改变HTTP标头、返回服务器端地状态码…

c++ socket基于TCP

linux网络编程基础api socket 地址api&#xff1a;ip地址和端口对&#xff0c;成为 soccket 地址。 socket 基础api&#xff1a; sys/socket.h 中&#xff0c;包括创建、命名、监听 socket &#xff1b;接受连接、发起连接、读写数据、获取地址信息、检测带外标记、读取设置 s…

unity ui 同屏

一共有三个摄像机&#xff0c;上屏&#xff0c;下屏 和 类似照相机的ccamera 类似照相机的ccamera的设置&#xff1a; 下屏摄像机设置&#xff1a; 下屏交互的Canvas设置&#xff1a; 新建一个canvas&#xff0c;下面放上rawimage&#xff1a; 如果下屏不想显示的内容&#xf…

创建和管理数据库

1. 一条数据的存储过程 存储数据是处理数据的第一步.只有正确的把数据存储起来&#xff0c;我们才能进行有效的处理和分析.否则&#xff0c;只能是一团乱麻.在MySQL中&#xff0c;一个完整的数据存储过程一共有四步 : 创建数据库&#xff0c;确认字段&#xff0c;创建数据表&a…

【练习3】

1.将二叉搜索树转为排序的双向链表 (好久没看数据结构&#xff0c;忘完了&#xff0c;学习大佬的代码&#xff09; class Solution { public:Node* prenullptr,*headnullptr; //pre为每次遍历时的前一个节点&#xff0c;head记录头节点Node* treeToDoublyList(Node* root) {if…

漏扫神器Invicti V2024.4.0专业版

前言 Invicti Professional是Invicti Security公司推出的一个产品&#xff0c;它是一种高级的网络安全扫描工具。Invicti Professional旨在帮助组织发现和修复其网络系统中的潜在安全漏洞和弱点。它提供了全面的漏洞扫描功能&#xff0c;包括Web应用程序和网络基础设施的漏洞扫…

xhs 旋转滑块流程分析

声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 前言 本文首发于公众号…

近似消息传递算法(AMP)单测量模型(SMV)

1、算法解决问题 很多人致力于解决SLM模型的求逆问题&#xff0c;即知道观测值和测量矩阵&#xff08;字典之类的&#xff09;&#xff0c;要求未知变量的值。SLM又叫做标准线性模型&#xff0c;后续又在此基础上进行升级变为广义线性模型。即SLM是yAxe&#xff0c;这里是线性…

STM32单片机实战开发笔记-独立看门狗IWDG

嵌入式单片机开发实战例程合集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11av8rV45dtHO0EHf8e_Q0Q?pwd28ab 提取码&#xff1a;28ab IWDG模块测试 1、功能描述 STM32F10X内置两个看门狗&#xff0c;提供了更高的安全性&#xff0c;时间的精确下性和使用的灵活性…