ppp
Introduction
Introduction
HDLC是点对点和多点配置的通用协议,但是点对点访问最常用的协议就是point-to-point protocol(ppp),ppp 是一种面向字节(Byte-oriented)的协议。
下图是一个主机连接路由器

Structure
Frame format

- 下面一个多路复用的例子,这个多路意思是网络层(Network layer)的各种协议。

- 数据是从网络层(Network layer)来到数据链层(data link layer)。
- 在数据链层(data link layer)加上各种协议组成一个payload。
Byte-Stuffing
我们知道PPP是一个字节协议,所以在数据从网络层加封到数据层,或是从物理层解封到数据链层,我们需要填充7D字节
7D: 01111101
- 我们先看一个图表来详细知道其过程

stuffed是填充,unstuffed就是解封。不懂每个层次直接的关系可以回去结构篇看看,总而言之就是通过每个层就需要加封或解封,如物理层frame到数据链层就需要解封。
- 这个过程跟HDLC的是一样的,有区别的是它是替代两个字节(byte),HDLC只是一个bit.

仔细看深绿色的两组,一组是7D 5D 它的加封前是7D, 另一组是7D 5E 它加封前是7E。这就是替换两个字节的意思。
Flag = 0x7E
ESC = 0x7DESC = control escape
Transition Phases

根据上图的流程,我们主要注重Authentication流程和Network to Open的configuration流程。
- Example


从这里我们可以知道LCP(Link Control protocol)在ppp里非常重要。
什么是LCP呢
Protocols

协议的类型,和它具体的协议和代码。
默认参数

- payload区等最大容量默认1500
- 默认没有验证协议
- 默认协议区没有压缩
- 默认地址区和控制区不压缩
LCP

上图是一个LCP的frame format结构。
结合上面的流程,我们可以给出每个数据包的意思

A电脑想向B电脑传数据
- A需要发送Configure-request 要求给B电脑
- B回应一个ack给A(只有回应了ack才能传数据,其他的不行),当然有可能不是ack,可能是nak或reject。
- 如果是nak说明B觉得A的有些数据不能接收。
- reject就是B觉得A的数据不可识别或不确定有错误等,所以直接拒绝。
下图是例子

PAP
PAP(Password authentication protocol)
验证的协议,只是ppp通常不会用,下面将告诉你为什么。

-
user向发送data给user,但是需要pap验证
-
Authenticate-request的frame里需要你的password给system
-
正确则ack,不正确则nak
为什么现在不用pap,因为容易被别人截胡我的密码了,不安全。
CHAP
CHAP(Challenge-Handshake Authentication Protocol)

可以发现和pap不同的是CHAP多了个Challenge和response的流程。
这个流程其实是组成HASHing密码的过程。
下图是一个例子,我们可以知道大小写不一样,Hash密码完全不一样,保证了随机性和安全性。

- Challenge是system发过来的一串随机值,然后user将密码和challenge的随机值结合起来。
- respond challenge和password结合的fixed size Hash,这个system可以验证密码和随机值。
- 成功了success, 失败 failure
- 别人截胡了只会看到一串随机数,不知道密码,安全的很。