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

PPP协议讲解(PPP连接状态、CHAP/PAP认证、PPP报文)

目录

简介

PPP定义的一整套协议(3大部分)

PPP建立连接的五种状态(阶段)

Establish阶段

LCP简介

LCP报文类型---3大类报文

LCP协商报文交互过程

LCP协商状态—5种状态

Authenticate验证阶段(可选)

PAP认证报文交互过程

CHAP认证报文交互过程

Network网络层协商阶段

IPCP简介

IPCP报文类型

IPCP协商报文交互过程

IPCP协商状态

PPP报文

PPP头部

LCP报文格式

PAP报文格式

CHAP报文格式

IPCP报文格式

PPP排错


简介

PPP(点对点协议)为在点对点连接上传输多协议数据包提供了一个标准方法,是数据链路层封装协议的一种方法,支持同步和异步两种传输方式。(除了PPP还有HDLC等,不过HDLC只支持同步方式)

PPP优点:

1、支持同步传输和异步传输
2、具有良好的扩展性,当需要在以太网链路上承载PPP协议时,可扩展为PPPoE
3、提供了LCP(Link Control Protocol)协议,用于各种链路层参数协商
4、提供了各种NCP(Network Control Protocol),用于网络层参数协商
5、提供了认证:CHAP 、PAP
6、没有重传机制,网络开销小,速度快


PPP定义的一整套协议(3大部分)

LCP           用于各种链路层协商参数,主要用来建立、监控和铲除数据链路

PAP/CHAP:       验证认证,保护网络安全性

各种NCP协议:  用于网络层参数协商,更好的支持了网络层协议(例如IPCP、IPXCP等)


PPP建立连接的五种状态(阶段)

Dead    链路不可用阶段

Establish 链路建立阶段(链路层协商阶段)--进行LCP协商

Authenticate验证阶段(可选阶段)-----进行PAP/CHAP认证

Network    网络层协议阶段-----------进行NCP协商

Terminate   网络终止阶段

Establish阶段

PPP协议最关键和最复杂的阶段,主要是LCP协商

LCP简介

链路控制协议,简称LCP(Link Control Protocol)。它是PPP协议的一个子集,在PPP通信中,发送端和接收端通过发送LCP包来确定那些在数据传输中的必要信息

主要的协商内容

工作方式----SP(Single-link PPP)单链路、MP(Multilink PPP)多链路

最大接受单元MRU

验证方式----不验证、PAP、CHAP          

魔术字等----魔术字主要用于检查环路

    在进行链路协商时,如果魔术字一样,会重新进行协商并更换魔术字

    但是只要LCP链接建立成功,魔术字就不会改变

LCP报文类型---3大类报文

1.链路配置包—用来建立和配置链路

2.链路结束包—用来结束一个链路

3.链路维修包—用来管理和调试一个链路

LCP协商报文交互过程

LCP协商状态—5种状态

Authenticate验证阶段(可选)

主要进行PAP、CHAP认证

PAP认证报文交互过程

PAP验证协议为两次握手验证,密码为明文。被验证方发起认证,认证通过后不再认证

CHAP认证报文交互过程

CHAP验证协议为三次握手验证协议。它只在网络上传输用户名,而并不传输用户密码,因此安全性要比PAP高。验证方发起认证挑战,认证成功后,再次连接还需要认证。

认证方先发送一个随机数给请求方(可以选择是否携带用户名)

请求方收到之后用密码把随机数加密(hash),哈希完成之后把密文发送给认证方(携带用户名)
认证方同样把随机数通过密码进行hash,然后比较,如果一致则认证成功

Network网络层协商阶段

进行各种NCP协议协商,主要协商双方的IP地址(以下主要介绍IPCP)

IPCP简介

IPCP是一个网络控制协议,用来在点对点协议连接上建立和配置网际协议。 IPCP负责在点对点连接的两端配置、使能和去使能IP协议模块。

IPCP报文类型

IPCP的数据的报文同LCP的数据报文非常类似,不同之处有两点:

  1. 协议字段。IPCP是在网络层协议阶段协商配置参数选项,协议字段为0x8021

而LCP协议则是在链路建立阶段协商配置参数选项的,协议字段为0xC021

  1. code域字段。LCP共包括十几种报文,而IPCP只包括7种报文

但它的报文类型只是LCP数据报文的一个子集(只有LCP代码域从1到7这七种报文:Config-Request,Config-Ack,Config-Nak,Config-Reject,Terminate-Request,Terminate-Ack和Code-Reject),而且实际的数据报文交换过程中链路终止报文一般而言是不在网络协议阶段使用的。

IPCP协商报文交互过程

静态IP地址协商

动态IP地址协商

IPCP协商状态

类似于LCP协商状态


PPP报文

PPP头部

Address由于点对点链路无需知道对方数据链路层地址,所以没有意义。按照规定为0xff

Control无实际意义,规定为0x03(该域与Address域一起标识了PPP报文,即PPP报文头为FF03)

Protocol协议域,区分数据帧中信息域所承载的数据报文的内容

Information信息域,最大长度1500字节

LCP报文格式

Code代码域名,主要标识LCP数据报文的类型

                   

Identifier标识域,标识进行协商报文的匹配关系(匹配请求报文和响应报文)。当连续发送多个配置请求报文时,这些报文数据域的值可能完全一样,但是标志域是不同的

Length长度域,此协商报文的长度

Data(可变):数据域,携带的是协商报文的内容

PAP报文格式

CHAP报文格式

IPCP报文格式


PPP排错

PPP的协议一般排错故障:

 a、线检查LCP协议是否为Opened状态

 b、检查PPP协议是否配置的Auth

debugging ppp pap all
debugging ppp chap all

 c、检查PPP的IPCP协议是否为Opened

debugging ppp ipcp all
是否有大量的IPCP的报文,IPCP的状态是否为Req_Send或Ack_Rcvd 

 d、检查PPP的NCP 查看是否有路由通过该接口

PPP常见故障的解决措施::

1、LCP如果不是Opened 可能是物理线路的问题(debug ppp all或者打环测试)

2、当LCP协议发送了大量Confreq,收不到Ack_Recv可能是Link封装不匹配(检查对端路由器的协议封装)

3、当LCP状态为Opened,但是IPCP协议为Inital初始化,可能是PPP的认证出现问题(检查设备的认证配置)

4、当LCP状态为Opened,但是发送了大量的IPCP的报文,可能是IP地址Pool分配的问题(检查IPCP是否与认证结合使用)

5、当LCP状态为Opened,IPCP的状态为Opened,可能是由于路由的问题(检查是否有路由条目)

6、当配置单向认证的时候,被认证方是不需要配置[R1-Serial0/0]ppp authen pap

7、认证密码不对的时候,密码可能会被加入"空格"

PPPoE---共享DCC实验配置_绑定物理接口_静下心来敲木鱼的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/125010122


http://www.taodudu.cc/news/show-7669530.html

相关文章:

  • 数据结构-二叉搜索树
  • 二叉搜索树的应用
  • Java二叉搜索树
  • 数据结构——二叉搜索树详解
  • 二叉搜索树--BinarySerachTree(BSTree)
  • LruCache和DiskLruCache
  • android 日历控件_UI界面开发工具Calendar日历插件示例合集
  • 【模式匹配】之 —— BM算法
  • 学习笔记0714----NOSQL之redis
  • Java集合框架--HashMap
  • ORBSLAM2-ORBextractor
  • C++迭代器失效你真的理解了吗,看博主用vector的代码实现给你讲清楚迭代器失效以及解决方案!(超详细)
  • Spring Refresh
  • EIGRP的优势分析
  • EIGRP基础
  • CCNP 3 EIGRP
  • EIGRP综合实验解析
  • CCNA 6 EIGRP
  • EIGRP总结
  • EIGRP回顾
  • 3.4.2 CSMA/CD协议
  • CSMA 简介
  • 以太网 CSMA-CD与CSMA-CA的区别与工作方式
  • 【基础】static搭配inline 味道更佳(explicit_bzero-rawmemchr)
  • bzero 和 memset 的区别
  • bzero()
  • ModuleNotFoundError: No module named ‘sklearn‘
  • 成功解决ModuleNotFoundError: No module named ‘torchtext.legacy‘
  • ModuleNotFoundError: No module named ‘selenium
  • No module named ‘pyautogui‘