PPP与PPPOE的关系
作者:游子 http://www.cnitblog.com/liaoqingshan/ 2008.12.22
刚做好了PPP协议,公司又要用PPPOE,于是开始看PPPOE。原来两种协议有着密切的,但又不是简单的包含与被包含的关系。
为了弄明白他们之间的关系,以及他们与TCPIP之后又有什么关系,我先把他们报文举个例子说明一下:
===================报文识别=================
PPP报文样例:
7E FF 03
起始 PPP头
00 21 45 00 00 30 86 65 40 00 80 06 6C 6F
IP类型 版本 服务长度 帧ID FLGS OFF TTL 类型tcp CRC
0A 0A 2A 2E 3D 87 96 34
源IP地址 目的IP地址
06 D3 00 50 BD 9D C6 F0 00 00 00 00 70 02 40 00 AF 7A 00 00
源端口 目的端口 SEQ 4字节 ACK 4字节 头长度 FLGS WIN TCP校验 紧急指针
02 04 05 B4 01 01 04 02
TCP选项 8字节
E5 6C 7E
PPP校验 结束
这是一个PC用MODM拨号上网号,发起TCP连接时发送的数据,用串口监控软件获得的报文。实际上,从串口发出的数据,并不是这样,还需要经过转义(把0x10,0x13或所以不大于0x20的字节转义),再发给对方。
再看一个PPPOE报文样例:
00 90 1A 40 F2 27 00 09 6B 50 A1 14 88 64 11 00 0A 85 00 32
目的MAC 6字节 源MAC 6字节 PPPOE类型 版本与长度 代码 session 长度
00 21 45 00 00 30 C9 08 40 00 80 06 3F 97
IP类型 版本 服务长度 帧ID FLGS OFF TTL 类型tcp CRC
CA 69 6C 46 3D 91 7D E7
源IP地址 目的IP地址
09 A8 00 50 9B 93 C3 78 00 00 00 00 70 02 40 00 E8 20 00 00
源端口 目的端口 SEQ 4字节 ACK 4字节 头长度 FLGS WIN TCP校验 紧急指针
02 04 05 86 01 01 04 02
TCP选项 8字节
这是用PC用ADSL拨号上网,发起TCP连接时发送的数据,用网络抓包工具ethereal获取的报文。与上述PPP不同,这已经是发送到网卡的数据,不需要转义。
从上面的两个报文我们可以看出两者有许多相同与不同之处:
相同:
从IP到TCP,两段数据完全一样,以普通以太网传输的内容没有区别。
不同:
1、PPP含有7E做为起始和结束,并有FF03作为报文头。而PPPOE没有。
2、PPP含有PPP CRC字段作为检验,而PPPOE没有。
3、PPPOE仍旧有以太网的MAC,作为接收和发送地址,而PPP没有。
4、PPPOE头中有一些session等字段,而PPP没有。
===================协商步骤=================
PPP的典型步骤为:
1、LCP:链路控制协议,主要商议转义规则和选择客户授权协议,典型4个报文
2、PAP或CHAP:使用其中一种协议申请授权,典型2个报文
3、IPCP:获取IP地址,DNS地址等(注意没有网关和子网掩码),典型3个或5个报文。
而PPP的典型步骤为:
1、PPPOE的发现阶段:典型4个报文,目的是获取对方的MAC地址和确定一个sessionid。
2、PPPOE的会话阶段:包含上述所有PPP步骤。
由此可见,PPPOE是在以太网链路上通过发现阶段打通一条PPP链接,再进行PPP协议。
posted on 2008-12-22 15:30
游子 阅读(4858)
评论(6) 编辑 收藏 引用 所属分类:
原创技术