PPP协议
PPP协议是二层(数据链路层)协议,常用于拨号上网时客户端向服务器获取IP地址。PPP支持在各种物理类型的点对点串行线路上传输上层协议报文。它具有很多特性,比如支持多协议、提供可选的身份认证服务、以各种方式压缩数据、支持动态地址协商、支持多链路捆绑等等。

PPP协议帧格式
PPP数据帧格式如下所示:

7E FF 03       7E
标志 地址 控制 协议域 信息域 校验 标志
1B 1B 1B 2B 缺省1500B 2B 1B
 每个PPP数据帧都是以一个标志字节开始和结束的,该字节为0x7E.

接下来分别为地址域,值固定位0xFF(因为点对点协议,对方的地址固定);控制域(固定位0x3); 协议域,用来区分PPP数据帧中信息域所承载的数据报文的内容,几种常见的协议如下所示:

0xC021 LCP协议报文
0xC023 PAP协议的认证报文
0xC223 CHAP协议的认证报文
0x8021 NCP 协议报文
0x0021 IP数据报文

PPP协议栈
PPP更像是一种应用,类似一个拨号上网的应用软件,拨号成功后,本地主机就可以正常上网,可以使用TCP/IP协议,而完全感觉不到PPP的存在。PPP协议包含三组件:

  1. 链路控制协议LCP
  2. 网络控制协议NCP
  3. PPP扩展协议(如Multilink Protocol)

其中,LCP协议完成数据链路的配置和测试;NCP协议完成点对点通信设备之间网络层通信所需要的参数的配置;

工作流程
(1)当用户拨号接入ISP后,就建立了一条用户PC机到ISP的物理连接
(2)用户PC机向ISP发送一系列的LCP分组(封装成多个PPP帧),以便建立LCP连接
(3)这些分组及其响应选择了将要使用的一些PPP参数
(4)NCP协议给新接入的用户PC机分配了一个临时的IP地址,这样用户PC机就成了因特网上一个有IP地址的主机了
(5)用户通信完毕后,NCP释放网络层连接,收回原来释放出去的IP地址
(6)LCP释放数据链路层连接
(7)释放物理连接
其图示如下所示。

LCP连接
当用户PC机通过调制解调器呼叫ISP服务器,服务器能够检测到载波信号,双方建立了物理连接,之后PPP进入“链路建立”状态,其目的是建立链路层的LCP连接。
通信双方通过请求-响应帧来进行通信,主要是协商一些配置参数。包括链路上的最大帧长,所使用的鉴别协议的规约(如果有的话),以及不使用PPP帧中的地址和控制字段。协商完成后,LCP连接就建立完成,接着进入鉴别阶段。

鉴别状态(身份认证)
用户在拨号上网的时候需要输入用户名和密码来向服务器确定自己的身份,这个认证过程是在LCP连接建立完成之后进行的。
身份认证主要有两种方法:口令验证协议(PAP, Password Authentication
Protocol)和质询握手协议(Challenge Handshake Authentication Protocol,
CHAP)。如果双方在LCP配置的时候达成一致,也可以不使用任何身份认证的方法。
PAP协议使用两次握手,明文传送用户名和密码的方式进行身份认证;CHAP使用三次握手,MD5加密和随机数的方式进行身份认证。

CHAP认证方式

CHAP比PAP方法更安全,因为不在线路上传送明文密码,而是传送经过摘要算法加工过的随机序列。同时CHAP中,身份认证可以随时进行,包括在双方正常通信过程中,因此,非法用户就算截获并成功破解了一次密码,此密码也将在一段时间内失效。CHAP对端系统要求很高,因为需要多次进行身份质询、响应。这需要耗费较多的CPU资源,因此只用在对安全要求很高的场合。
当身份认证通过之后,会进入NCP连接建立阶段。

NCP连接
NCP根据网络层的不同协议互相交换网络层特定的网络控制分组,PPP协议两端的网络层可以运行不同的网络层协议,但仍然可以使用同一个PPP协议进行通信。NCP会配置客户端的IP地址,之后客户机就可以上网。
注意,在用户上网的时候,仍需要PPP协议对IP包进行封装传输数据

PPPoE

PPP协议要求进行通信的双方是点到点的关系,不适于广播类型的以太网和另外一些多点访问类型的网络,于是产生了PPPoE协议(Point-to-Point
Protocol over
Ethernet)。它不仅为使用桥接以太网接入的用户提供了一种宽带接入手段,同时还给你提供方便的接入控制和计费。每个接入用户均建立一个独一无二的PPP的会话。

PPP协议的更多相关文章

  1. 2016.6.17 计算机网络复习要点之PPP协议

    点对点协议PPP是目前使用最广泛的数据链路层协议. 1.PPP协议的特点: **我们知道因特网用户通常需要连接到某个ISP才能接入到因特网,PPP协议就是用计算机和ISP进行通信时所使用的数据链路层协 ...

  2. PPP协议总结

    PPP协议总结 PPP协议是一种在点到点链路上传输.封装网络数据包的数据链路层协议,PPP支持同步/异步方式的链路上. 一. PPP支持的链路类型 1. 同步和异步专线 2. 同步拨号链路. 3. 异 ...

  3. ppp协议介绍(转)

    原文:https://www.cnblogs.com/gtarcoder/p/6259105.html PPP协议PPP协议是二层(数据链路层)协议,常用于拨号上网时客户端向服务器获取IP地址.PPP ...

  4. [na]ppp协议链路认证-chap认证流程

    Point-to-Point Protocol (PPP)协议是广域网链路的一种协议,不同于局域网的ethernetII协议 PPP协商过程,分三步:LCP.认证.NCP. 一 协议概述 PPP包含以 ...

  5. 数据链路层--PPP协议

    数据链路层使用的信道主要有两种类型:点对点信道和广播信道. 点对点 路由器在转发分组时只使用了下面的三层. 链路是从一个结点到相邻结点的一段物理线路,中间没有其他交换结点. 必须有一些必要的通信协议来 ...

  6. 路由器配置PPP协议 CHAP验证 PAP验证

    路由器配置PPP协议 CHAP验证 PAP验证 来源 https://www.cnblogs.com/tcheng/p/5967485.html PAP是两次握手,明文传输用户密码进行认证:CHAP是 ...

  7. 路由器配置深入浅出—路由器接口PPP协议封装及PAP和CHAP验证配置

    知识域: 是针对点对点专线连接的接口的二层封装协议配置 PPP的PAP和CHAP验证,cpt支持,不一定要在gns3上做实验. 路由器出厂默认是hdlc封装,修改为ppp封装后,可以采用pap验证或者 ...

  8. ppp协议解析二

    转:http://blog.csdn.net/yangzheng_yz/article/details/11526747 PPP(Point to Point Protocol,点对点协议)协议是为在 ...

  9. PPP协议解析一

    转:http://blog.csdn.net/yangzheng_yz/article/details/11526475 在网上搜集了一些有关PPP的资料,整理了一下,不能说是原创,仅供大家学习研究. ...

随机推荐

  1. oracle 笔试题

    ORACLE笔试题一.单选题1.在Oracle中,以下不属于集合操作符的是( ). A. UNION B. SUM C. MINUS D. INTERSECT2.在Oracle中,执行下面的语句:SE ...

  2. C# ComBox 垂直滚动条

    用到Combox控件两个属性: 1 MaxDorpDownItems 显示条数 2 IntegralHeight 设置 为false 例如:显示最多20条,超过20条显示垂直滚动条 this.comb ...

  3. 压力测试工具JMeter入门教程

    1.Jmeter 概要描叙 jmeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台.多数情况下是用作压力测试,该测试工具在阿里巴巴有着广泛的使用,估计是不要钱吧,哈哈,功能上来说,整个平台 ...

  4. 使用JDOM操作XML

    JDOM介绍 JDOM是使用Java语言编写的,用于读写及操作XML的一套组件,Jdom同时具有DOM修改文件的优点和SAX读取快速的优点. JDOM的使用 首先下载JDOM的JAR包,本文使用的是j ...

  5. 扩展GridView实现的一个自定义无刷新分页,排序,支持多种数据源的控件TwfGridView

    最近项目View层越来越趋向于无刷新化,特别是数据展示方面,还要对Linq有很好的支持.在WebFrom模式的开发中,GridView是一个功能很强大,很常用的控件,但是他也不是完美的,没有自带的无刷 ...

  6. 如何结合自己本地数据库,使用【百度地图】API

    如何结合自己本地数据库,使用[百度地图]API百度地图使用越来越多,官网上的示例数据都是写死的,实际上我们的开发中的数据都是从数据库中取出来的,最近看了很多大神的文章,结合自己本地数据库使用百度地图A ...

  7. three.js初涉略(一)

    <!-- 最近要研究一下webgl,发现了webgl中文网(http://www.hewebgl.com/article/articledir/1).边研究教程边做下记录 --> thre ...

  8. django 富文本展示 以及 post提交出错

    1.富文本转义 使用 {{ content.record.content | safe }} 2.post提交报错 页面表单内追加 <form id="f"action=&q ...

  9. Android 通过JNI实现守护进程,使得Service服务不被杀死

    来自: http://finalshares.com/read-7306 转载请注明出处: http://blog.csdn.net/yyh352091626/article/details/5054 ...

  10. Scala相关

    vim conf for scala: http://stackoverflow.com/questions/3626203/text-editor-for-scala http://fengshen ...