PPP PPOE详解
PPP协议是在串行线IP协议SLIP(Serial Line Internet Protocol)的基础上发展起来的。由于SLIP协议具有只支持异步传输方式、无协商过程(尤其不能协商如双方IP地址等网络层属性)、只能承载IP一种网络层报文等缺陷,在发展过程中,逐步被PPP协议所替代。
- 对物理层而言,PPP既支持同步链路又支持异步链路,而X.25、FR(Frame Relay)等数据链路层协议仅支持同步链路,SLIP仅支持异步链路。
- PPP协议具有良好的扩展性,例如,当需要在以太网链路上承载PPP协议时,PPP可以扩展为PPPoE。
- 提供LCP(Link Control Protocol)协议,用于各种链路层参数的协商。
- 提供各种NCP(Network Control Protocol)协议(如IPCP、IPXCP),用于各网络层参数的协商,更好地支持了网络层协议。
- 提供认证协议CHAP(Challenge-Handshake Authentication Protocol)、PAP(Password Authentication Protocol),更好的保证了网络的安全性。
无重传机制,网络开销小,速度快。

- Flag域
- Address域
- Control域
- Protocol域
- Information域
- FCS域


- 通信双方开始建立PPP链路时,先进入到Establish阶段。
- 在Establish阶段,(发送配置请求,回复ack报文)PPP链路进行LCP协商。协商内容包括工作方式是SP(Single-link PPP)还是MP(Multilink PPP)、最大接收单元MRU(Maximum Receive Unit)、验证方式和魔术字(magic number)等选项。LCP协商成功后进入Opened状态,表示底层链路已经建立。
- 如果配置了验证,将进入Authenticate阶段,开始CHAP或PAP验证。如果没有配置验证,则直接进入Network阶段。
- 在Authenticate阶段,如果验证失败,进入Terminate阶段,拆除链路,LCP状态转为Down。如果验证成功,进入Network阶段,此时LCP状态仍为Opened。
- 在Network阶段,PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。

- NCP协商成功后,PPP链路将一直保持通信。PPP运行过程中,可以随时中断连接,物理链路断开、认证失败、超时定时器时间到、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段。
7. 在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段,直到通信双方重新建立PPP连接,开始新的PPP链路建立。
PAP与CHAP认证

- 被验证方把本地用户名和口令发送到验证方。
- 验证方根据本地用户表查看是否有被验证方的用户名
- 若有,则查看口令是否正确,若口令正确,则认证通过;若口令不正确,则认证失败。
- 若没有,则认证失败

- 验证方配置了用户名的验证过程
- 验证方主动发起验证请求,验证方向被验证方发送一些随机产生的报文(Challenge),并同时将本端的用户名附带上一起发送给被验证方。
- 被验证方接到验证方的验证请求后,先检查本端接口上是否配置了ppp chap password命令,如果配置了该命令,则被验证方用报文ID、命令中配置的用户密码和MD5算法对该随机报文进行加密,将生成的密文和自己的用户名发回验证方(Response)。如果接口上未配置ppp chap password命令,则根据此报文中验证方的用户名在本端的用户表查找该用户对应的密码,用报文ID、此用户的密钥(密码)和MD5算法对该随机报文进行加密,将生成的密文和被验证方自己的用户名发回验证方(Response)。
- 验证方用报文ID和自己保存的被验证方密码和MD5算法对原随机报文加密,比较二者的密文,若比较结果一致,认证通过,若比较结果不一致,认证失败。
- 验证方没有配置用户名的验证过程
- 验证方主动发起验证请求,验证方向被验证方发送一些随机产生的报文(Challenge)。
- 被验证方接到验证方的验证请求后,利用报文ID、ppp chap password命令配置的CHAP密码和MD5算法对该随机报文进行加密,将生成的密文和自己的用户名发回验证方(Response)。
- 验证方用自己保存的被验证方密码和MD5算法对原随机报文加密,比较二者的密文,若比较结果一致,认证通过,若比较结果不一致,认证失败。
PPPOE
pppoe 是在以太链路上使用ppp协议进行数据包的封装,因为ppp链路是点到点链路,没有广播,在家用adsl拨号场景下需要更多的点到点链路,会造成基础线路资源极大的浪费,而以太网支持广播,但自身不支持认证,所以就有了pppoe的出现,ppp over ethernet


- PPPoE Client广播发送一个PADI(PPPoE Active Discovery Initial)报文,在此报文中包含PPPoE Client想要得到的服务类型信息。

- 所有的PPPoE Server收到PADI报文之后,将其中请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复一个PADO(PPPoE Active Discovery Offer)报文。

- 根据网络的拓扑结构,PPPoE Client可能收到多个PPPoE Server发送的PADO报文,PPPoE Client选择最先收到的PADO报文对应的PPPoE Server做为自己的PPPoE Server,并单播发送一个PADR(PPPoE Active Discovery Request)报文。

- PPPoE Server产生一个唯一的会话ID(Session ID),标识和PPPoE Client的这个会话,通过发送一个PADS(PPPoE Active Discovery Session-confirmation)报文把会话ID发送给PPPoE Client,会话建立成功后便进入PPPoE Session阶段。

- LCP阶段主要完成建立、配置和检测数据链路连接。
- LCP协商成功后,开始进行认证,认证协议类型由LCP协商结果(CHAP或者PAP)决定。
- 认证成功后,PPP进入NCP阶段。NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP),它主要负责协商用户的IP地址和DNS服务器地址。
PPP PAP与CHAP认证配置
拓扑

PAP认证:
配置要点,客户端需要在接口配置用户名密码,认证过程需要主动把接口配置的用户名密码发送给服务端进行认证,服务端需要在本端aaa配置相应的用户名密码,server-type为ppp,接口开启pap认证
client端
interface Serial0/0/0
link-protocol ppp
ppp pap local-user test password simple test123
ip address 12.1.1.1 255.255.255.252 server端
aaa
local-user test password cipher test123
local-user dark service-type ppp
interface Serial0/0/0
link-protocol ppp
ppp authentication-mode pap
ip address 12.1.1.2 255.255.255.252
验证


CHAP认证:
配置要点,两端接口chap用户名必须配置,接口可以不配置chap用户密码,使用local用户密码进行验证,此外认证方与被认证方接口用户名无需配置一致,只需要local用户与对方接口用户密码一致即可通过认证
client端
aaa
local-user test password cipher O>Sr/xA!t<:z9:%F`[a=}'4#
local-user test service-type ppp
interface Serial0/0/0
link-protocol ppp
ppp chap user test
ip address 12.1.1.1 255.255.255.252
server 端
aaa
local-user test password cipher O>Sr/xA!t<:z9:%F`[a=}'4#
local-user test service-type ppp
interface Serial0/0/0
link-protocol ppp
ppp chap user test
ip address 12.1.1.1 255.255.255.252
验证


PPPOE 配置
配置要点,server端需要配置vt模板和aaa用户,可配置地址池给客户端分配地址使用,可以使用ipcp推送dns配置,cilent端需要配置dialer接口,在端口绑定dialer接口
server端配置
aaa
local-user test password cipher %$%$h[N|$6~U{T%b/20~1P-Qaay#%$%$
local-user test service-type ppp
ip pool 1
gateway-list 10.0.0.1
network 10.0.0.0 mask 255.255.255.0
interface Virtual-Template1
ppp authentication-mode chap
remote address pool 1
ppp chap user test
ppp ipcp dns 8.8.8.8
ip address 10.0.0.1 255.255.255.0
interface GigabitEthernet0/0/0
pppoe-server bind Virtual-Template 1
client端配置
aaa
local-user test password cipher %$%$|L!;K*)DVT,1I2-Pd9|BacpC%$%$
local-user test service-type ppp
interface Dialer1
link-protocol ppp
ppp chap user test
ip address ppp-negotiate
dialer user test
dialer bundle 1
interface GigabitEthernet0/0/0
pppoe-client dial-bundle-number 1
验证

PPP PPOE详解的更多相关文章
- 详解PPP模式下的产业投资基金运作【基金管理】
详解PPP模式下的产业投资基金运作[基金管理] 点击标题下「搏实资本」可快速关注 搏实资本 研究型的投资机构,实操型的专家团队 ﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ 一.产业投资基金概述 ...
- iptables详解
Netfilter包含有三种表,三种表下共包含有五种链,链下面包含各种规则.即表包含若干链,链包含若干规则. (一)三种表为:filter nat mangle 1.filter:处理与本机有 ...
- 动态选路、RIP协议&&OSPF协议详解
动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ...
- 详解Linux目录(目录树详细解释)
给大家一篇关于Linux目录 方面的详细说明,好好读一下! Linux目录详解(RHEL5.4) linux有四种基本文件系统类型:--普通文件:如文本文件.c语言源代码.shell脚本等,可以用ca ...
- TCP/IP详解 (转)
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...
- TCP IP详解(转)
大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 网络七层协议简称OSI.TCP/IP刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...
- 《TCP/IP详解卷1:协议》第2章 链路层-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- C++构造函数详解及显式调用构造函数
来源:http://www.cnblogs.com/xkfz007/archive/2012/05/11/2496447.html c++类的构造函数详解 ...
- C++中构造函数详解及显式调用构造函数
C++构造函数详解及显式调用构造函数 c++类的构造函数详解 一. 构造函 ...
随机推荐
- Azure DevOps (八) 通过流水线编译Docker镜像
上一篇文章我们完成了最简单的传统部署:上传应用到服务器上使用守护进程进行应用的部署. 本篇文章我们开始研究容器化和流水线的协作. 在开始操作之前,我们首先需要准备一下我们的dockerfile,这里我 ...
- Leetcode刷题之矩阵中的指针用法
矩阵中的指针用法 1 快慢指针 Leetcode27移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度.不要使用额外的数组 ...
- 纯干货数学推导_傅里叶级数与傅里叶变换_Part4_傅里叶级数的复数形式
- js 关于setTimeout和Promise执行顺序问题
js 关于setTimeout和Promise执行顺序问题 异步 -- Promise和setTimeout 执行顺序 Promise 和 setTimeout 到底谁先执行 定时器的介绍 Jav ...
- 原生JavaScript实现AJAX、JSONP
相信大多数前端开发者在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的 ...
- ES6-11学习笔记--Symbol
Symbol:一种新的原始数据类型 声明方式: let s1 = Symbol() let s2 = Symbol() console.log(s1); // Symbol() console.l ...
- CCF201403-2窗口
问题描述 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域.窗口的边界上的点也属于该窗口.窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的 ...
- JSTL详解(常用标签以及c:forEach遍历集合)
JSTL标签 一. JSTL的简介 1. 什么是JSTL 2. JSTL常用标签库 3. JSTL使用步骤 二. 核心标签库常用标签 1. c: set 标签 2. c: out 标签 3. c: i ...
- EMS邮箱数据库常用命令(二)
1.查询邮箱数据库的使用空间 查询Exchange环境中所有邮箱数据库. 键入以下命令 Get-MailboxDatabase -Status | FL name,DatabaseSize 命令执行后 ...
- vue 相关问题整理