ppp

[toc]

Introduction

HDLC是点对点和多点配置的通用协议,但是点对点访问最常用的协议就是point-to-point protocol(ppp),ppp 是一种面向字节(Byte-oriented)的协议。

下图是一个主机连接路由器

Structure

Frame format

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

  1. 数据是从网络层(Network layer)来到数据链层(data link layer)。
  2. 在数据链层(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 = 0x7D ESC = 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电脑传数据

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

下图是例子

PAP

PAP(Password authentication protocol)

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

  1. user向发送data给user,但是需要pap验证

  2. Authenticate-request的frame里需要你的password给system

  3. 正确则ack,不正确则nak

为什么现在不用pap,因为容易被别人截胡我的密码了,不安全。

CHAP

CHAP(Challenge-Handshake Authentication Protocol)

可以发现和pap不同的是CHAP多了个Challenge和response的流程。

这个流程其实是组成HASHing密码的过程。

下图是一个例子,我们可以知道大小写不一样,Hash密码完全不一样,保证了随机性和安全性。

  1. Challenge是system发过来的一串随机值,然后user将密码和challenge的随机值结合起来。
  2. respond challenge和password结合的fixed size Hash,这个system可以验证密码和随机值。
  3. 成功了success, 失败 failure
  4. 别人截胡了只会看到一串随机数,不知道密码,安全的很。
  • Copyrights © 2022-2024 Jessy Huang
  • Visitors: | Views:

请我喝杯咖啡吧~