PPP会话的建立,需要两端的设备都发送LCP数据包来配置和测试数据通信链路。

用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。一旦PPPoE会话开始,PPP数据就可以以任何其他的PPP封装形式发送。所有的以太网帧都是单播的。PPPoE会话的SESSION-ID一定不能改变,并且必须是发现阶段分配的值。

2.1 LCP协商阶段(LCP:Link Control Protocol)

LCP的Request主机和AC都要给对方发送,LCP协商阶段完成最大传输单元(MTU),是否进行认证和采用何种认证方式(Authentication Type)的协商。

(1)LCP协议数据报文分类

链路配置报文:用来建立和配置一条链路,主要包括Configure-Request、Configure-Ack、Configure-Nak和Configure-Reject报文

链路维护报文:用来管理和调试链路,主要包括Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply和Discard-Request报文

链路终止报文:用来终止一条链路,主要包括Terminate-Request和Terminate-Reply报文

(2)LCP协商过程

LCP协商的过程如下:协商双方互相发送一个LCP

Config-Request报文,确认收到的Config-Request报文中的协商选项,根据这些选项的支持与接受情况,做出适当的回应。若两端都回应了Config-ACK,则标志LCP链路建立成功,否则会继续发送Request报文,直到对端回应了ACK报文为止。

图2 LCP协商的基本过程

说明:

(1)Config-ACK:若完全支持对端的LCP选项,则回应Config-ACK报文,报文中必须完全协带对端Request报文中的选项。

(2)Config-NAK:若支持对端的协商选项,但不认可该项协商的内容,则回应Config-NAK报文,在Config-NAK的选项中填上自己期望的内容,如:对端MRU值为1500,而自己期望MRU值为1492,则在Config-NAK报文中埴上自己的期望值1492。

(3)Config-Reject:若不能支持对端的协商选项,则回应Config-Reject报文,报文中带上不能支持的选项,如Windows拨号器会协商CBCP(被叫回呼),而ME60不支持CBCP功能,则回将此选项拒绝掉。

2.2 认证阶段(PPP Authentication:PAP/CHAP)

会话双方通过LCP协商好的认证方法进行认证,如果认证通过了,才可以进行下面的网络层的协商。认证过程在链路协商结束后就进行。

Ⅰ PAP(Password Authentication Protocol,口令认证协议)认证

PAP为两次握手协议,它通过用户名及口令来对用户进行验证。PAP验证过程如下:

当两端链路可相互传输数据时,被验证方发送本端的用户名及口令到验证方,验证方根据本端的用户表(或Radius服务器)查看是否有此用户,口令是否正确。如正确则会给对端发送Authenticate-ACK报文,通告对端已被允许进入下一阶段协商;否则发送NAK报文,通告对端验证失败。此时,并不会直接将链路关闭。只有当验证不过次数达到一定值(缺省为10)时,才会关闭链路。

PAP的特点是在网络上以明文的方式传递用户名及口令,如在传输过程中被截获,便有可能对网络安全造成极大的威胁。因此,它适用于对网络安全要求相对较低的环境。

图3 PAP认证流程

Ⅱ CHAP(Challenge Handshake Authentication Protocol,质询握手认证协议)认证

CHAP为三次握手协议。只在网络上传输用户名,并不传输用户口令,因此它的安全性要比PAP高。CHAP的验证过程为:

首先由验证方(Server)向被验证方(Client)发送一些随机产生的报文,并同时将本端的主机名附带上一起发送给被验证方。被验证方接到对端对本端的验证请求(Challenge)时,便根据此报文中验证方的主机名和本端的用户表查找用户口令字,如找到用户表中与验证方主机名相同的用户,便利用报文ID、此用户的密钥用Md5算法生成应答(Response),随后将应答和自己的主机名送回。验证方接到此应答后,用报文ID、本方保留的口令字(密钥)和随机报文用Md5算法得出结果,与被验证方应答比较,根据比较结果返回相应的结果(ACK

or NAK)

(1)接受认证端发送Challenge

(2)申请认证端发验证请求报文

(3)接受认证端回应认证接受报文

经过以上三次报文交互后,CHAP认证完成。

图4 CHAP认证流程

2.3 NCP协商阶段(NCP:Network Control Protocol)

NCP有很多种,如IPCP、BCP、IPv6CP,最为常用的是

NCP流程与LCP流程类似,用户与ME设备之间互相发送NCP Config-Request报文并且互相回应NCP Config-Ack报文后,标志NCP己协商完,用户上线成功,可以正常访问网络了。

IPCP的协商过程是基于PPP状态机进行协商的。经过双方协商,通过配置请求、配置确认、配置否认等包文交换配置信息,最终由initial

(或closed)状态变为Opened状态。IPCP状态变为Opened的条件必须是发送方和接收方都发送和接收过确认包文。

IPCP协商过程中,协商包文可包含多个选项,即参数。各个选项的拒绝或否认都不能影响IPCP的UP,IPCP可以无选项协商,无选项协商也同样能够UP。选项有IP

Address、网关、掩码等,其中IP

Address是最重要的一个选项,有些厂家的实现必须这个选项得到确认,大多数厂家的实现允许这个选项为空。

NCP的基本协商流程见下图:

图5 NCP的基本协商流程

用户和接入设备对IP服务阶段的一些要求进行多次协商,以决定双方都能够接收的约定。

如:IP业务阶段使用的IP压缩协议等。双方的协议是通过报文中包含的Option项进行协商的,每一个Option都是一个需要协商的问题。

最后双方都需要对方答复Configure_Ack的同意报文。

2.4 会话维持(Session Keep-alive)

设备主动发送Echo Request进行PPPoE心跳保活,若3次未得到服务器的响应,则设备主动释放地址。发LCP Echo Request 的时候,魔术字字段要和之前通信的Configure_Request使用的魔术字字段保持一致。

有些设备或终端不支持主动发送 Echo-Request 报文, 只能支持回应Echo-Reply报文。

2.5 会话结束(Session Termination)

PPPoE 还有一个PADT(PPPOE Active Discovery Terminate)分组,它可以在会话建立后的任何时候发送,来终止PPPoE会话,也就是会话释放。它可以由主机或者接入集中器发送,目的地址填充为对端的以太网的MAC地址。

当对方接收到一个 PADT(PPPOE Active

Discovery

Terminate)分组,就不再允许使用这个会话来发送PPP业务。PADT分组不需要任何标签,其CODE字段值为0xa7(PADT

Code),SESSION-ID字段值为需要终止的PPP会话的会话标识号码。在发送或接收PADT后,即使正常的PPP终止分组也不必发送。PPP对端应该使用PPP协议自身来终止PPPoE会话,但是当PPP不能使用时,可以使用PADT。

java pppoe_PPPoE拨号流程相关推荐

  1. Telephony 拨号流程

    一.进入Dialer App 使用adb logcat -vtime -b events命令查看手机的运行日志,最后操作手机,点击dialer进入拨号界面. 05-26 19:20:41.633 I/ ...

  2. Phone拨号流程(Android9.0 Phone拨号)

    今天讲解一下Dialer呼出 直达底层 目录结构 进程 描述 packages/app/Dialer 拨打电话的入口,来电不会经过Dialer.但是拨打电话的出口不光是Dialer,在联系人和短信里也 ...

  3. android9.0紧急号码拨号流程

    https://blog.csdn.net/liuchao329282455/article/details/82928086#%E7%B4%A7%E6%80%A5%E7%94%B5%E8%AF%9D ...

  4. 安卓10拨号流程梳理

    电话应用框架 Android电话模块是一个典型的分层结构设计,如下: 电话框架分为4个层次,分别为:应用层.框架层(framework层,简称fw).RIL(Radio Interface Layer ...

  5. 安卓10拨号流程详细总结

    电话应用框架 Android电话模块是一个典型的分层结构设计,如下: 电话框架分为4个层次,分别为:应用层.框架层(framework层,简称fw).RIL(Radio Interface Layer ...

  6. 拨号流程分析(第一篇)

    本文基于Android 8.0 Dialer到Telecom流程 打开手机通话应用的拨号盘 进入拨号界面DialtactsActivity placeCall方法执行 Dialer拨号流程图 备注 打 ...

  7. 4、java中的流程控制(程序结构)

            说一下java的流程控制(程序结构),其实对于计算机而言,无非就那几类执行流程(程序结构),程序从头到尾依次执行每一行代码,这就是顺序结构:也可能在执行过程中遇到条件判断,造成程序运行 ...

  8. ec200t 拨号_移远EC20 R2.0 AT指令拨号流程

    使用AT指令进行拨号,可快速的集成EC20 4G模块,只需要给EC20供电和接上通信UART串口,就能实现网络连接. EC20管脚分配 最小系统电路图 TCP/IP AT命令拨号流程 AT指令拨号流程 ...

  9. OpenJDK源码赏析之二:java虚拟机启动流程到首函数调用全流程

    承接上一谈 OpenJDK源码赏析之一:漫谈java的历史渊源_星空_AZ的博客-CSDN博客 JAVA从启动到第一个函数执行的发生的流程: WinMain->JLI_Launch->JV ...

最新文章

  1. Code Hunt SECTOR2(Loops) SECTOR3(Loops2)
  2. Java接口和Java抽象类的认识
  3. Kinect v1和Kinect v2的彻底比较
  4. linux IP 设置
  5. MySQL备份之mysqlhotcopy与注意事项
  6. 创建Android Virtual Device
  7. [python] 在指定目录下找文件
  8. BlockingQueue的核心方法
  9. 源码多多- Discuz x2.5 版块的常用设置方法和技巧
  10. 北理工嵩天Python面向对象程序设计笔记
  11. Word怎么删除空白页?6个方法随便用!
  12. excel取整数的函数_EXCEL的知识考点
  13. 【MM模块】Credit Memos and Reversals 红字发票和冲销
  14. css3 背景模糊属性 背景滤镜 backdrop-filter
  15. JAVA毕业设计家用电器销售网站计算机源码+lw文档+系统+调试部署+数据库
  16. Gossiping --解题报告
  17. 8086-逻辑运算指令
  18. 为什么OpenCV4 “pkg-config --modversion opencv”显示“ No package ‘opencv‘ found”?解决方法!
  19. 模拟IC学习笔记 Bandgap设计
  20. 暗角教程,如何加镜头晕影暗角效果

热门文章

  1. NOI2010~NOI2018选做
  2. 揭秘《英雄联盟》的游戏数据服务器
  3. 职场礼仪_举止_站姿
  4. VisionPro 工具
  5. 04.VisionPro工具说明
  6. 什么是 AI(人工智能(Artificial Intelligence)
  7. 中文名称:(尼姆亚,熊猫烧香)
  8. 赵明magic4升鸿蒙,荣耀Magic新机生猛:折叠屏+骁龙888+鸿蒙系统,赵明:超越华为...
  9. ESP32 PM2.5测试
  10. Linux使用C语言实现ls命令