ppp协议解析二
转:http://blog.csdn.net/yangzheng_yz/article/details/11526747
PPP(Point to Point Protocol,点对点协议)协议是为在两个对等实体间传输数据包,建立简单连接而设计的。这种连接提供了同时的双向全双工操作,并且假定数据包是按顺 序投递的。PPP协议还满足了动态分配IP地址的需要,并能够对上层的多种协议提供支持。PPP在TCP/IP协议集中是位于数据链路层的协议,其物理实 现方式有两种:一种是通过以太网口(这时称之为PPPoE,即PPP over Ethernet),另一种就是利用普通的串行接口。本文主要讨论的就是后一种PPP协议的具体实现过程。
PPP协议是目前应用得最广的一种广域网协议,它主要由以下3部分组成:(1) 在串行线路中对上层数据包的封装(HDLC);(2) 用于建立、配置和检测数据链路连接的链路控制协议(LCP) ;(3) 用于建立和配置不同网络层协议的网络控制协议(NCP) 协议簇。下面从PPP协议的封装结构和PPP链路协商两个部分对PPP协议进行详细剖析。
PPP协议封装
PPP 封装用于消除上层多种协议数据包的歧义,加入帧头、帧尾, 使之成为互相独立的串行数据帧。PPP 采用HDLC 的组帧格式,它是面向字符的。在完整的PPP 帧中,帧头由帧开始标记、地址域、控制域、协议域组成,帧尾由校验域、帧结束标记组成(如表1 所示)。
表1:PPP帧封装格式
|
标记 1字节 0X7E |
地址 1字节 0XFF |
控制 1字节 0X03 |
协议 2字节 |
编码 1字节 |
ID 1字节 |
长度 2字节 |
载荷 0-1496字节 |
校验和 2字节 |
标记 1字节 0X7E |
表2:PPP协议代码 表3:编码对应含义
|
协议代码 |
对应协议 |
|
0XC021 LCP协议 0XC023 PAP协议 0XC223 CHAP协议 0X8021 IPCP协议 0X0021 IP协议 |
|
|
编码值 |
对应含义 |
|
1 配置请求(Req) 2 接受配置(Ack) 3 配置请求接受,其他拒绝(Nak) 4 配置请求不认识或不被接受(Rej) 5 终止链接 6 终止确认 |
|
PPP帧以0x7e作为一帧的开始和结束的标记,占一个字节。地址域和控制域固定的值,分别为0xff 和0x03,各占一个字节。协议域为两个字节,在实际应用中因数据包的不同而不同。PPP 帧具有错误检测机制,校验和中填写的就是发送方对帧数据的检验码,接收方在接收到该帧后对数据做校验,通过校验来判断数据帧在传送过程中是否有误。其中校 验和采用的是CRC算法,校验范围从地址字节到校验和位置之前的最后一个数据载荷。
PPP协议包含丰富的内容, 它能实现包括IP协议在内的多种网络协议的封装,那么,如何区分某个PPP包究竟是哪种数据协议包?这就是PPP协议帧第四、五两个字节关心的问题,表2列出常用的协议代码及其对应的协议。
PPP链路协商
通常,在一次PPP链路会话中,协商的双方并没有区分谁是服务器端谁是客户端。为了叙述方便,这里把申请请求PPP服务 的一端称为用户端,而把能提供PPP服务的机构称为ISP(比如本项目中的联通CDMA网络)。一般来讲,与ISP建立一次正常的PPP链路连接,要经历 下面3个阶段: (1)LCP协商,建立和配置连接以及帧参数设置等;(2)用户认证,这里将选择PAP认证;(3)NCP协商,即负责IP地址的动态分配等事务。这里把 常用的编码字节的意义列成上表3,这些代码对上述协议都适用。至于PPP封装帧结构中的ID字节,表示的是PPP包的序号,这在协商阶段用来识别该对哪个 包进行应答。需要说明的是,当PPP报文封装的是IP报文时,则已经不存在编码和ID部分了。
3 PPP协议在联通CDMA网络中的具体实现
PPP协议的格式虽然严格遵循既定标准,但不同的ISP可以有其自己的协商规范,也就是说协商的过程会因为使用网络的不同而有差别。因此PPP技术的应 用,关键的问题是要弄清楚不同的ISP提供商它们各自的一套协商会话流程,一旦协商过程完成,用户获得ISP分配的动态IP,剩下的工作只不过是把用户数 据以IP报文形式封装在一个个PPP报文中进行传输了。下图2就是利用中国联通CDMA网络实现视频传输的协商阶段的全过程。
图2 PPP协商过程数据帧实例
|
7E |
FF 7D 23 |
C0 21 |
7D 21 |
7D 21 |
7D 20 7D 34 |
7D 22 7D 26 7D 20 7D 20 7D 20 7D 20 |
7D 25 7D 26 |
||
|
52 7D 38 7D 30 44 |
7D 27 7D 22 |
7D 28 7D 22 |
6E E1 |
7E |
|||||
1 U
|
7E |
FF 7D 23 |
C0 21 |
7D 21 |
7D 21 |
7D 20 7D 3D |
7D 21 7D 24 7D 25 EA |
7D 22 7D 26 7D 20 7D 20 7D |
|||||
|
20 7D 20 |
7D 23 7D 25 C2 23 7D 25 |
7D 25 7D 26 2F 7D 35 B2 7D 31 |
7D 27 7D 22 |
7D 28 7D 22 |
7D |
|||||||
|
27 E6 |
7E |
|||||||||||
2 I
|
7E |
FF 7D 23 |
C0 21 |
7D 22 |
7D 21 |
7D 20 7D 34 |
7D 22 7D 26 7D 20 7D 20 2D 20 7D 20 |
7D 25 7D 26 |
||
|
52 7D 38 7D 30 44 |
7D 27 7D 22 |
7D 28 7D 22 |
85 88 |
7E |
|||||
3 I
|
7E |
FF 7D 23 |
C0 21 |
7D 23 |
7D 21 |
7D 20 7D 28 |
7D 23 7D 24 CO 23 |
22 48 |
7E |
4 U
|
7E |
FF 7D 23 |
C0 21 |
7D 21 |
7D 22 |
7D 20 7D 3C |
7D 21 7D 24 7D 25 EA |
7D 22 7D 26 7D 20 7D 20 7D |
||||||
|
20 7D 20 |
7D 23 7D 24 C0 23 |
7D 25 7D 26 2F 7D 35 B2 7D 31 |
7D 27 7D 22 |
7D 28 7D 22 |
9F 40 |
7E |
|||||||
5 I
|
7E |
FF 7D 23 |
C0 21 |
7D 22 |
7D 22 |
7D 20 7D 3C |
7D 21 7D 24 7D 25 EA |
7D 22 7D 26 7D 20 7D 20 7D |
|||||
|
20 7D 20 |
7D 23 7D 24 C0 23 |
7D 25 UD 26 2F 7D 25 B2 7D 31 |
7D 27 7D 22 |
7D 28 7D 22 |
AC 7D 3A |
|||||||
|
7E |
||||||||||||
6 U
|
7E |
FF 3 |
C0 23 |
1 |
1 |
0 E |
4 43 41 52 44 |
4 43 41 52 44 |
26 C2 |
7E |
7 U
|
7E |
C0 23 |
2 |
1 |
0 5 |
0 |
FD 30 |
7E |
8 I
|
7E |
80 21 |
1 |
3 |
0 10 |
2 6 0 2D F 0 |
3 6 DC C0 0 9 |
46 D8 |
7E |
9 I
|
7E |
FF 3 |
80 21 |
1 |
1 |
0 16 |
3 6 0 0 0 0 |
81 6 0 0 0 0 |
83 6 0 0 0 0 |
6E DB |
7E |
10U
|
7E |
FF 3 |
80 21 |
4 |
3 |
0 A |
2 6 0 2D F 0 |
F5 54 |
7E |
11U
|
7E |
80 21 |
3 |
1 |
0 16 |
3 6 DC CF 57 8C |
81 6 DC C0 0 82 |
83 6 DC C0 8 3A |
18 39 |
7E |
12I
|
7E |
FF 3 |
80 21 |
1 |
2 |
0 16 |
3 6 DC CF 57 8C |
81 6 DC C0 0 82 |
83 6 DC C0 8 3A |
67 AA |
7E |
13U
|
7E |
80 21 |
1 |
4 |
0 A |
3 6 DC C0 0 9 |
62 4C |
7E |
14I
|
7E |
80 21 |
2 |
2 |
0 16 |
3 6 DC CF 57 8C |
81 6 DC C0 0 82 |
83 6 DC C0 8 3A |
F1 C9 |
7E |
15I
|
7E |
FF 3 |
80 21 |
2 |
4 |
0 A |
3 6 DC C0 0 9 |
75 D6 |
7E |
16U
在上图中,每个报文最左边的数字是协商过程的报文序号,紧接着的U字母代表的是申请PPP服务的用户发出的PPP协商报文,而I则代表ISP发出的PPP协商报文,这里具体就是联通的CDMA网络。下面对整个协商过程进行详细解析:
1)在真正进行PPP协商之前,还有一个AT命令拨号过程,联通CDMA要求拨#777申请数据业务,而Q2358C模块的拨号命令是ATD,因此 合起来就是:ATD#777;,注意,Q2358拨号命令后面要加一个分号;拨号完后,要等待CDMA返回“CONNECT”,这时候才能进行后续的 PPP协商;
2)第一个起始PPP问旬包必须由用户发起,否则联通CDMA不会响应。包的内容见上图中第1序号包,这里要说明一点:在PPP协商的LCP阶段, 除了起始和结束的PPP报标志符7E,报文中任何地方的值小于0x20的字符,以及字符7F,7E和7D,都要转义,转义的方法是把其值和0x20异或后 的值紧接着7D发送。
3)从第1序号报的第三个框的“C0 21”字符结合上表2可以看出,这是一个LCP报文,第四个框“7D 21”就是01,根据上表3可以看出这是用户发出的请求报,而根据第五个框的内容知道这是用户发出的第一个报,第六个框是整个报文的长度,占两个字节,后 面的内容是各种选项,倒数第二个框的内容则是FCS校验值填充的地方,占两个字节;
4)CDMA接受到第1序号报后,将先后发送第2序号和第3序号LCP报,其中第2序号报是请求报,请求用户对其携带到选项进行同意或者拒绝,如2 号报第7个框“7D 21 7D 24 7D 25 EA”中“7D 21”表示第1个LCP协商选项,其长度为“7D 24”即4个字节,后面两个字节“7D 25 EA”即“05 EA”是其选项值,整个1号选项的用途就是规定PPP报文最大数据有限载荷是5EA,也就是1514个字节,其他选项的结构的理解与此完全一样,后面不再 赘述。关于LCP报文各种选项的意义,可参阅相关RFC文档;
5)CDMA的发出的第3序号报是同意用户发出的第1序号报的,这可以从其第四个框的值“7D 22”也即02,根据表3,其表示接受配置的意思;
6)从第4序号报的第4框内容“7D 23”即03,结合表3,可以得知用户拒绝了CDMA请求报中选项3的配置,表示用户不接受CHAP(C2 23)认证,用户只接受PAP认证(C0 23);
7)CDMA收到用户刚才的反应后,马上发出第2个请求报,这时候把第3选项的配置改成了用户希望的PAP认证(C0 23),见上图5号报;
8)第6序号报表示用户同意CDMA的LCP配置,这里要说明一点,选项2是设置是否要对0x20以下的字符值进行转义的,因为选项2的值是全0,则说明以后的PPP报文不再对值为0x20以下的值转义,但是对于值为7D、7E、7F的字符依然要进行转义发送;
9)从第7序号报开始,LCP协商过程结束,现在开始进行的是PAP认证,联通的PAP认证的用户名和密码都是“CARD”,也即ASCII值“0x43、0x41、0x52、0x44”;第8序号报表示CDMA通过了用户的认证;
10)根据表2,可以看出,第9序号报开始是NCP会话也即IPCP会话阶段,CDMA请求用户是否同意其网关IP地址:DC.C0.0.9,见其倒数第3个框也即3号选项所包含的值;
11)之后的过程完全可以按照上面类推分析下去,当全部16个PPP报文会话完毕后,将获得四项关健值:即分配的IP地址: DC.CF.57.8C; 远程网关:DC.C0.0.9;主DNS:DC.C0.0.82;次DNS:DC.C0.8.3A。之后就可以嵌入真正的IP数据报进行数据打包传输。
ppp协议解析二的更多相关文章
- PPP协议解析一
转:http://blog.csdn.net/yangzheng_yz/article/details/11526475 在网上搜集了一些有关PPP的资料,整理了一下,不能说是原创,仅供大家学习研究. ...
- SMB/CIFS协议解析二
一.拷贝文件(远程-->本地) 1.SMB_COM_NT_CREATE_ANDX (0xa2) 打开文件,获取文件名,获得读取文件的 总长度. 2.SMB_COM_READ ...
- [网络技术][转]PPTP协议解析
PPTP协议大体上可以分为两部分:控制层连接和隧道,下面简要介绍两部分的功能.如果要详细了解PPTP协议请阅读RFC文档. 一. Control Connection Protol 控制层连接是基于T ...
- VPN column: PPTP(2)--PPTP协议解析
zhu_hit原创,如需转载请注明出处.Thanks. PPTP协议大体上可以分为两部分:控制层连接和隧道,下面简要介绍两部分的功能.如果要详细了解PPTP协议请阅读RFC文档. 一. Control ...
- PPP协议总结
PPP协议总结 PPP协议是一种在点到点链路上传输.封装网络数据包的数据链路层协议,PPP支持同步/异步方式的链路上. 一. PPP支持的链路类型 1. 同步和异步专线 2. 同步拨号链路. 3. 异 ...
- [na]ppp协议链路认证-chap认证流程
Point-to-Point Protocol (PPP)协议是广域网链路的一种协议,不同于局域网的ethernetII协议 PPP协商过程,分三步:LCP.认证.NCP. 一 协议概述 PPP包含以 ...
- HTTP协议(二)header标头说明
HTTP协议(二):header标头说明 Header 解释 示例 Accept-Ranges 表明服务器是否支持指定范围请求及哪种类型的分段请求 Accept-Ranges: bytes Age 从 ...
- 路由器配置PPP协议 CHAP验证 PAP验证
路由器配置PPP协议 CHAP验证 PAP验证 来源 https://www.cnblogs.com/tcheng/p/5967485.html PAP是两次握手,明文传输用户密码进行认证:CHAP是 ...
- 协议解析Bug分析
协议解析Bug分析 源自邮件协议RPC(远程过程调用)处理的Request请求数据包的bug. 一.Bug描写叙述 腾讯收购的Foxmailclient能够作为outlookclient ...
随机推荐
- Linux信号、信号处理和信号处理函数
信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式.在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某种程序发生了什么事件,还可 ...
- 39.创建多进程及进程通讯 -- Queue--Pipe--Event
创建多进程 windows:进程.线程 linux:进程.线程(做了进程通信的多进程实现的线程) 进程之间内存彼此独立,不管是父子进程还是单个独立进程 multiprocessing:Process ...
- mui ajax提交问题点
<script type="text/javascript" charset="utf-8"> mui.init(); mui.ajax(__tes ...
- PowerShell使用Clear-Content命令删除、清空文件内容的例子
本文介绍PowerShell中如何将文件的内容进行删除或清空,使用VBScript要先创建FSO,然后再打开文件,再修改文件:PowerShell清空文件只要一句Clear-Content. 所谓清空 ...
- 【AtCoder】ARC058
ARC058 C - こだわり者いろはちゃん / Iroha's Obsession 暴力一个个枚举是最简单的方式 #include <bits/stdc++.h> #define fi ...
- Mybatis Plus带多条件的多表联合、分页、排序查询
目录 一.现有表 student学生表: facultylist学院表: 二.同时满足以下需求: 1.多表联合查询出学院名字 2.可以带多条件查询 3.指定页码,页数据大小进行物理分页查询 三.解决步 ...
- Kubernetes---Pod hook
Pod hook(钩子)是由Kubernetes管理的kubelet发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中.可以同时为Pod中的所有容器都配置 hook ...
- Spring4学习回顾之路09-基于注解的方式配置bean
一:基于注解配置Bean 首先介绍下组件扫描(component scanning): Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 包括: -@Component ...
- (十四)springMvc 对 restful 的支持
文章目录 restful 的概念 配置支持 restful 的前端控制器 配置不拦截静态资源 restful 的概念 restful 是一种开发理念: 对 url 进行规范 每个 url 代表一个资源 ...
- 剑指offer21:第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。(注意:这两个序列的长度是相等的)
1 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是 ...