写在前面:
仅供学习使用
PPP概述
-
PPP(点对点协议)是支持点到点连接的一种通信协议,既支持数据为8位的无奇偶校验的异步模式,也支持面向比特位的同步连接,提供从局域网到广域网的数据链路封装支持。
-
PPP是广域网数据链路层的封装协议,还有的是HDLC、SLIP、ATM、X.25。
-
PPP最大的特点是可以身份验证功能,提供了两种可选的身份验证方法分别是PAP(口令验证协议)、CHAP(挑战握手验证协议)。
-
PPP采用一个特殊的LCP(链路控制协议)来建立、配置、测试、终止链路,协商任何点到点链路的特性。
-
PPP针对封装的不同网络协议,采用NCP(网络控制协议)来完成点对点通信设备之间网络层通信所需参数的配置,它通过协议域来区分数据域中净载荷的数据类型。
SLIP概述
-
SLIP(网际协议)是一种在串行线路上对IP数据报进行封装的简单形式。定义了两种特殊字符END(0xc0)和ESC(0xdb),IP数据报某个字符为END表示到此结束,如果传输的数据中有END则将结束字符用连续传输的2个字节的0xdb和0xdc来替代。如果传输的数据中有ESC则用连续传输的2个字节的0xdb和0xdd来替代。实际上这是一种字符填充的方式,在串行链路上传输的总字节数会增加。
-
SLIP常用在拨号上网,但是有很多的缺陷,目前已经被PPP取代。
-
每一端都需要知道对方的IP地址;
-
没有办法把本地的IP地址通知给另外一端,帧中没有专门的地址段;
-
没有加入FCS,即没有检错功能,需要上层协议提供校验。
PPP数据帧结构分析
-
PPP的flag字段大小为0X7E,表示帧的开始。
-
PPP的地址字段,当为广播的时候值为0XFF,HDLC的值为0X8F或0X0F。
-
PPP的control字段值为0X03,HDLC为0X0。
-
PPP中的协议字段,IP的值为0X0021、LCP为0XC021、NCP为0X8021、PAP为0XC023、CHAP为0XC223。
-
CRC表示校验。
-
FCS表示帧的结束值为0X7E。
-
当PPP信息字段中出现一个和开始或者结束符相同值的时候,即出现了和转义字符一样的比特组合的时候,就会将数据字符转义。和SLIP的字符填充类似。例如0X7D就会转义成7D、5D,7E转义成7D、5E,如果数据中出现7D、5D的时候就会填充7D、5D、5D。
PPP的传输
-
串行链路普遍存在于广域网,数据传输方式:异步传输、同步传输。
-
异步传输:按字节传输,还要加上起始位(start)用0表示开始和停止位(stop)用1表示结束。中间还要插入一个空闲位用来分隔字符。
-
同步传输:面向帧传输,只要不超过1500字节就可以,前后都要加上flag。进行同步传输的时候要插入一个时钟传输信号。
-
DTE(数据终端设备)和DCE(数据通信设备),DCE端提供时钟频率,DTE端依靠DCE端提供的时钟信号来进行数据传输。
-
时钟频率默认为200万bit/s,有公式波特率*波特率因子=时钟频率。但是并不是所有设备都能接收这个频率,要看设备,不然可能ping不通,所以一般是要配置波特率clock rate,一般为64000bps。波特率因子啥的不懂,配置的时候配波特率就可以了,想深究网上都有。
-
PPP支持的网络层协议:IP\IPX\NetBEUI\AppleTalk\SNA。
-
PPP的阶段LCP->PAP\CHAP(可选)->NCP(IPCP)。
-
LCP链路参数协商的报文种类configure-request(code:0X01)、ACK(0X02)、NAK(0X03)、REJECT(0X04)。
-
MTU在PPP中的名称是MRU(最大接收单元),最大值都是1500字节。
-
LCP协商中会产生一个随机的数字为魔术字用于二层交换,防止路由环路,相同的魔术字为环路,不相同则可以通信。
-
PAP称为口令验证协议,也称两次握手协议。
-
PAP认证由被认证方发送authenticate-request报文(内含账号密码),成功回ACK,失败回NAK。
-
CHAP用来解决PAP认证包中账号密码的明文问题。
1.认证方发的challenge(随机ID+hostname+RANDOM)->MD5->16Byte的HASH。
2.被认证方发的RESPONSE(认证方的pwd+random)->MD5->16B的HASH-X。
3.将从被认证方获得的pwd和id, (被认证方的pwd+随机ID+random)MD5->16B的HASH-Y,当X=Y时,认证方发送SUCCESS。