当前位置: 首页 > article >正文

HCIA-Access V2.5_10_1_PPP协议

PPP协议与PPPoE协议

目前家庭宽带都采用拨号上网方式,它其实就是在用户跟BRAS之间跑的报文,就是PPPoE报文,为什么要使用PPPoE呢,PPPoE是在PPP协议之上扩展而来的一个协议,为什么使用PPP协议呢,其实主要是因为PPP能够支持用户的认证,整个PPP协议,它缺省是采用不认证,但是它其实还可以采用第一种叫PAP认证。第二种方法还有可能会采用CHAP认证,我们目前现网中所采用的都是PAP,当然还有一种叫不认证,不对账号来进行认证,现在来讲,一般采用CHAP认证,因为CHAP认证更加安全,它在网络上面并没有采用明文的方式去传输用户的密码.

前言

 目标

PPP协议简介

PPP(Point to Point Protocal),它们于TCP/IP或者OSI数据链路层。

PPP协议三个组件

PPP协议包含三个组件,第一个叫LCP,LCP链路控制协议,第二个PPP的网络控制协议NCP,第三个多协议数据报的封装方式,PPP它其实位于数据链路层,那上面很多网络层协议,是可以采用PPP协议来进行封装的,所以它能够支持多种的三层协议封装。所以叫多协议数据封装。这个是PPP的三个组件。

PPP数据帧格式

 前面有个标志位,后面也有个标志位,它个值都是固定的,0x7E,用来表示PPP帧的开始和结束,标志字段用来表明PPP帧的开始和结束。

地址,目前有的是0xFF,就是广播的,因为其实PPP是点到点的,从我接口出来之后,对方只有一个,所以这个时候其实我并不关心对方的地址,所以这个时候地址就要以使用FF,全1就可以了。

控制,也没有什么特别的意义,目前的值是固定的03,

协议域,它一共是两个字节长度,用来区分它的里面到底承载哪一种数据类型,值有以下这几个值,需要大家能够记住,一个是0021,0021表明信息域装的是IP报文,如果是C021表明它后面装的是LCP,如果是8021,表明它后面装的是NCP报文,因为它一共是两个字节,要求第一字节(从右往往左)位的最后一位比特位必须为1,然后高字节的最后一个比特位必须为0。如果不符合要求,往往这个地方收到之后,认为报文是不能识别的,就会向这个地方去发送叫Protocol Rejest。协议拒绝报文。这是它的协议域部分。几个常见的值。当然还有可能会出现一些其它的值。比如说C023,表明它后面装的是PAP认证报文,如果是装的C223报文,表明它后面装的是CHAP认证报文。

信息域,1500B。

检验。

PPP数据帧所承载的几种常见的报文

PPP状态转移图(1)

都是从链路不可用阶段开始的,然后当它检测到物理线路有载波信号时,线路上肯报文了,就会进入链路建立阶段。链路建立阶段往往会发送一些LCP报文,通过LCP协议进行链路参数的配置。LCP报文里面有一种用于叫链路配置报文,当然也会有链路终止报文。也有用于链路的维护报文。在链路配置报文里面,其实比较常见的是发送这种Configuration,然后Request,请求建立链路,中间会去协商一些参数。参数主要有三个参数。一个叫MRU值,就相当于它的最大传输单元了。然后一些魔术字,还有认证方式。这些东西都属于LCP阶段去进行协商的。尤其是通过链路控制报文,来进行协商。如果协商成功,如果采用认证。就进入验证阶段。如果认证失败,会发送链路终止报文,终断这个连接。最终又会变到链路不可用阶段。但是如果认证成功之后,会进入到网络层协议阶段(NCP协商)。NCP协商,它其实主要是地址的协商,IP地址的协商。如果成功的话,后面如果我想终止这个链接,你就终止,如果不终止链接,就一直可用。这个就是PPP的状态转移图。

PPP状态转移图(2)

在链路建立阶段,如果链路建立失败,也会直接返回到链路不可用阶段。

PPP状态转移图(3)

LCP协议数据报文的格式

信息域里面会进一步细分,里面有代码域,有标识域,有长度域,有数据,在数据里面的话,又会分为类型域,长度域,数据。

代码域,如果这个地方是01,表明是配置请求报文,属于链路配置报文,如果说OK,然后给你返回ACK,如果说你的参数不合法,它会回一个NAK,会告诉你哪个参数不合法,如果你的参数不能识别,它会给你回一个Reject。02就表明是确认,03表明NAK,你的参数不合法,04你的参数不可识别。当然像维护报文,如果代码域没有这个值,它可能给你回代码域拒绝,Code-Reject(07)。当然还有可能给你08,表示协议域拒绝(Protocol-Reject)。属于链路的维护报文。当然LCP报文还有链路的终止,发送Terminate-Request指令,这个是用来终止LCP链路的,响应Terminate-Request Reply。所以整个LCP报文,其实主要分为链路配置报文,链路终止报文,还有链路维护报文,我在配置阶段的话,到底要协商什么东西呢?

标识域,用来匹配请求响应,它ID号要相同,表明对这个事物的响应。

类型域,其实主要包含这几种,

LCP协议数据报文的分类

链路配置报文,链路终止报文以及链路维护报文。这几个值的,大家简单记住一下。这个地方我们通过01 02 03 04来进行标识,这个其实就是我们前面说的所谓的代码域,代码域的值。如果是05,就是链路终止请求报文,06就是确认报文,然后07,就是代码域拒绝。08属于协议域拒绝。然后这边当然主要是用来进行确定链路的通与不通,Request和Reply。

配置参数选项的种类

数据类型域,0x01用的多,用来协商它的MRU值,就是最大接收单元,然后03用来协商它的认证协议,05是用来协商魔术字。

链路配置报文(1)

 客户端跟服务器之间去协商一些参数,客户端会发送Config-Request报文,向它来协商一些参数,主要来协商刚才提到的MRU,然后魔术字以及认证方式,如果它跟你协商,你发送的所有东西,我给你发确认。但是在协商过程中很有可能会出现一些问题。

链路配置报文(2)

出现多次交互,这个地方的多次是指两次交互,你同样发送一个请求,然后对方看到里面的某个参数不合法,给你回了一个NAK,当你收到之后怎么办,我会重新修改这个地方的值,修改之兵器重新发送配置请求,它认证OK之后,给它回了一个ACK,这是两次认证。当然还有可能会现现另外一种情况。

链路配置报文(3)

路由器A发送配置请求,路由器B收到之后,发现那个参数根本不认识,客户端收到怎么办,直接删除不识别的参数。然后重新来进行认证。然后它如果OK,就会ACK。这是两次交互。但是在交互的过程中可能比这还要稍微复杂一些。可能会涉及到更多次的一些交互。

链路配置报文(4)

 比如说像这个地方发送配置请求,然后它出现拒绝,拒绝什么,我不认证,不认识怎么办,删掉,重新发送语法,之后发现参数不合法,不合法怎么办,然后按照合法的参数来,然后重新发起请求,然后发现所有的参数都OK,所以它的一个链路配置里面可能会涉及到多次交互。

魔术字(Magic Number)

用来防止环路。

PAP认证(两次握手)

两次握手会有认证方和被认证方。认证方可以把它当成服务器,被验证方当作客户端,客户端把自己的用户名和密码采用明文的方式在网络上面发送,明文的方式,通过抓包的方式,其实是能够知道它的用户名和密码的,非常不安全。服务器收到之后,根据发送过的用户名和密码从我这个设备的数据库里找到了它的密码,然后你的密码跟我这里的密码是否一致,如果 致就是认证通过,接收,如果不一致,就拒绝。PAP认证,它是两次握手。它给你回的,要么接收,要么拒绝。因为它在网络上面是以明文方式传的,它其实确实不太安全,所以现在我们很少使用PAP认证方式。

CHAP认证(三次握手)

 现在经常使用的认证方式叫CHAP认证,CHAP认证更加安全,它为什么更加安全,CHAP认证,叫挑战握手认证协议,这是通过三次握手机制,服务器端,客户端,首先服务器端,比如ME60,主动向客户端发起挑战,发起Challenge,里面当然会有ID号,以及和一段随机的Challenge ID号,这个值就是value这个值,然后送给被认证方,被认证方收到之后,会把自己的账号,和值(IID号加我的密码加Challenge里面的一段随机的Value的值)合在一起做MD5加密运算,加密运算的结果,然后发送给认证方,认证方收到之后,它其实加为MD5加密过程不可逆,所以导致这边根据你给我回送来的账号,从 综本地的数据库存里找它的密码,找到密码之后,然后客户端是怎么算的,因为ID号和vlaue都是服务端发的,把这两个值和密码同样也采用MD5加密运算,把服务端计算结果和传送过来的结果进行比较,如果一致接收,不一致拒绝。所以基本上CHAP认证,在网络上并没有去传输用户的密码,相对来讲,更加安全。

IPCP静态地址协商

 静态协商,我有IP 地址,你有 IP地址。NCP其实主要是一个IP地址协商的一个过程。

IPCP动态地址协商


http://www.kler.cn/a/525736.html

相关文章:

  • AI会对你的行业产生什么影响
  • 一文掌握ADB的安装及使用
  • Ubuntu-手动安装 SBT
  • 98.1 AI量化开发:长文本AI金融智能体(Qwen-Long)对金融研报大批量处理与智能分析的实战应用
  • 16、智能驾驶域控的材料回收
  • Linux基础指令
  • 【Block总结】OutlookAttention注意力,捕捉细节和局部特征|即插即用
  • vim操作简要记录
  • 日志技术的使用
  • 网络编程套接字(上)
  • QPS 值是怎样进行计算和应用的
  • 【时时三省】(C语言基础)文件的随机读写
  • docker中运行的MySQL怎么修改密码
  • 【go语言】gorm 快速入门
  • 2021版小程序开发4——基础加强
  • 《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(31):HTTPS和TLS/SSL
  • 大数据Hadoop入门2
  • 单调栈算法
  • Vue 3 30天精进之旅:Day 09 - 组合式API
  • vscode和pycharm的区别
  • PYH与MAC的桥梁MII/MIIM
  • 代理模式 -- 学习笔记
  • 深入理解Java并发编程中的原子操作、volatile关键字与读写锁
  • 手写MVVM框架-环境搭建
  • C#方法(练习)
  • rsync安装与使用-linux015