PPPOE
来源:互联网 发布:淘宝的等级划分 编辑:程序博客网 时间:2024/04/30 06:09
PPPOE协议发现过程
先说什么是PPP协议?PPP协议叫做Point to Point Protocol ,点到点协议。
点到点协议以前运用广泛,例如窄带拨号就是点到点协议。
点到点协议的特点是用在点到点线路上。所谓点到点线路拓扑如下。
A---------------------------------B
一条线连接两端,除了A就是B。A发出必然B收入,反之亦然。
这样的结构下,PPP协议不考虑寻址,即发送者不必去考虑谁接收信息,接受者是否合法...压根儿没得选。
那么什么是PPPOE协议呢?Point to Point Protocol over Ethernet。翻译过来就是“在以太网上的点对点协议”。
在以太网上跑PPP协议的一个关键问题,在于以太网并非点到点网络,而是多点到多点的广播网络。那么如何在这个广播网络上模拟出点到点的线路呢?
PPPOE整个过程分为:PPPOE发现阶段、PPPOE会话阶段、PPPOE结束阶段。
一、PPPOE发现阶段。主要是用来发现PPPOE服务器和为PPPOE会话阶段做好准备。PPPOE发现阶段主要分为四步(这四个步骤,细心地朋友可能会发现类似DHCP的四个过程).
PPPOE发现过程第一步:
PADI(PPPOE Active Discovery Initiation)报文 PPPOE发现服务报文
这个报文是一个广播报文,目的地址为全1,源地址是发送者地址-即客户地址。
它实际上是一个寻求服务的报文,就像你走进一个酒吧,大喊一声:“有人吗?”
PADI就是PC在大喊:“有PPPOE服务器么?”
PPPOE发现过程第二步:
PADO(PPPOE Active Discovery Offer)报文 PPPOE发现提供报文
Offer就是提供的意思。这个报文是对PADI的一个反馈。
PPPOE 服务器(例如BRAS,就是一个PPPOE服务器)收到了PADI报文后,就会返回这个报文。
这个报文是标准的单播。源地址是PPPOE服务器的地址,目的地址是PADI报文发送者的地址-也就是客户地址。
这个报文附带的关键信息,除了PPPOE服务器的地址外,还提供了服务器的名称。
这就好比酒吧侍者反应你的呼喊:“我,netwolf.biz。我可以为你服务。”
PPPOE发现过程第三步:
PADR(PPPOE Active Discovery Request)报文 PPPOE发现请求报文
如果广播网内有多个PPPOE服务器,那么客户可能会接到多个PADO报文。那么客户必须选择某一个PPPOE服务器作为自己的服务员。一般来说,是选择反馈最快的那个。(PPPOE客户端可能收到多个PPPOE服务器发送过来的这种报文,PPPOE只会选择第一个到达的报文进行应答)
接着客户就会向这个服务器发出PADR报文,明确告诉对方:我选择你为我服务。
至于其他服务器,会用计时器计算时间,超时无响应就放弃了。
这就好比你听到了好几位酒吧侍者的反馈,然后选了其中一位:“OK,netwolf.biz,就是你了。”
PPPOE发现过程第四步:
PADS(PPPOE Active Discovery Session-confirmation)报文 PPPOE发现会话报文
那么接下来,就该侍者给你递菜单了。不过在PPPOE过程中,先得给你一个贵宾卡。
PADS是PPPOE服务器对PADR的反馈,主要内容是提供一个会话ID给客户。以后客户发出的所有报文,都必须带这个会话ID。服务器就是凭借这个会话ID(VIP卡号),知道你是谁,进而提供服务。
二、PPPOE会话阶段。PPPOE发现阶段结束后,进入的PPPOE会话阶段,在这个阶段主要靠的是PPP协议在进一步完成协商和业务数据。PPP的协商过程.
PPP协商过程分为几个阶段:Dead阶段,Establish阶段,Authenticate阶段,Network阶段和Termintate阶段,在不同的阶段进行不同协议的协商.只有前面的协商出现结果后,才能转到下一个阶段,进行下一个协议的协商.
1)当物理层不可用时,PPP链路处于dead阶段,链路必须从这个阶段开始和结束.当物理层可用时,PPP在建立链路之前首先进行LCP协商,协商内容包括工作方式是SP还是MP,验证方式和最大传输单元等.
2)LCP协商过后就进入Establish阶段,此时LCP状态为Opened,表示链路已经建立.
3)如果培植了验证(远端验证本地或者本地验证远端)就进入Authenticate阶段,开始CHAP或PAP验证.
4)如果验证失败进入Terminate阶段,拆除链路,LCP状态转为Down;如果验证成功就进入Network协商阶段(NCP),此时LCP状态仍为Opened,而IPCP状态从Initial转到Request.
5)NCP协商支持IPCP协商,IPCP协商主要包括双方的IP地址.通过NCP协商来选择和配置一个网络层协议.当选中的网络层协议配置成功后,该网络层协议就可以通过这条链路发送报文了.
6)PPP链路将一直保持通信,直至有明确的LCP或NCP帧关闭这条链路,或发生了某些外部事件.(例如,用户的干预).
PAP验证为两次握手验证,口令为明文,PAP验证的过程如下:
被验证方发送用户名和口令到验证方;验证方根据用户配置查看是否有此用户以及口令是否正确,然后返回不同的响应(Acknowledge Or Not Acknowledge).
如正确则会给对端发送ACK报文,通告对端已被允许进入下一阶段协商;否则发送NAK报文,通告对端验证失败.此时,并不会直接将链路关闭.只有当验证不通过次数达到一定值(缺省为4)时,才会关闭链路,来防止因误传,网络干扰等造成不必要的LCP重新协商过程.
PAP的特点是在网络上一明文的方式传递用户名及口令,如在传输过程中被截获,便有可能对网络安全造成极大的威胁.因此,它适用于对网络安全要求相对教低的环境.
CHAP验证为三次握手验证,口令为密文(密钥),CHAP验证过程如下:
验证方向被验证方发送一些随机产生的报文,并同时将本端的主机名附带上一起发送给被验证方;
被验证方接到对端对本端的验证(Challenge)请求时,便根据此报文中验证方的主机名和本端的用户表查找用户口令字,如找到用户表中与验证方主机名相同的用户,便利用接收到的随机报文、此用户的密钥用Md5算法生成应答(Response),随后将应答和自己的主机名送回;
验证方接到此应答后,利用对端的用户名在本端的用户表中查找本方保留的口令字,用本方保留的口令字(密钥)和随机报文用Md5算法得出结果,与被验证方应答比较,根据比较结果返回相应的结果(ACK or NAK)。
它的特点是只在网络上传输用户名,而并不传输用户口令,因此它的安全性要比PAP高。
总结:(简化的)PPP协商过程,分三步:LCP、认证、NCP。
(1)LCP完成建立、配置和检测数据链路连接。
(2)LCP完成后,进入认证阶段,认证方式有chap和pap等,认证方式的决定是由LCP协商好的。值得注意的是chap是密文认证,pap是明文认证,在安全性商chap更为安全。
(3)认证完成后便进入了NCP阶段,NCP是一个协议族,适用于配置不同网络类型的,这也PPP被广泛采用的原因之一。PPPOE调用的是IPCP协议,负责给PPPOE客户端提供IP和DNS服务地址等。
PADT(PPPOE Active Discovery Terminate)报文 PPPOE发现终结报
好吧,二人世界结束了。。。谁负了谁且不论,分手的过程是怎么样的呢?
有任何一方发出PADT报文(terminate是中断的意思),主要内容就是会话ID(VIP卡号)。通告对方,本会话结束,我们之间的点到点关系结束。
接到这个报文的一方无须回复,结束自己的相关业务即可。
不过,不是每个人分手都会发个短信给对方的。有些人的分手模式是直接玩消失。
在网络上,最经常直接玩消失的就是客户。
很多人下网的操作,不是去点开链接,再点击“断开链接”,而是直接关MODEM的电。
显然,突然断电的MODEM是没法发出PADT报文通知对方(不突然断电也发不了,这个报文应该电脑来发)。对于PPPOE服务器而言,这个客户端就在直接玩消失。
....
PPPOE服务器:就是。太没素质了!
客户端:你有素质!你小子脚踏多少只船了!
.....
那么脚踏N只船的PPPOE服务器怎么应对这种情况呢?它有一个keepalive机制。
简单说,就是隔三差五,定期询问对方:你还活着么?(keepalive,直接翻译就是保持活着)。
对方活着,就回答:“亲爱的,我还在。”
PPPOE服务器就知道这个船还没劈腿。
要是问了对方不回答呢?不能一次就算,得多问几次。一般是问三次,都没回答,那就知道对方已经玩消失了,删除对方会话ID。
不过PPPOE服务器是很有风度的绅士。即使判断被人家甩了,它在删除会话ID的时候,还是会发出PADT报文(其实客户端也一样。如果客户端判断被甩了,也会发出PADT)。
这个机制是为了避免误判。假设对端其实没有玩消失,只是某种原因,发不出信息来。那么PPPOE服务器的PADT也可以明确告诉对方结束会话,以避免挂死。
从PPPOE的协议过程来看,整个过程都没有出现ARP协议,所以你查看arp表是看不到任何MAC和IP绑定关系的。因此PPPOE可以保护客户不中ARP病毒攻击。
- pppoe
- PPPoE
- pppoe
- PPPoE
- PPPOE
- PPPOE
- pppoe
- PPPOE
- PPPoE
- PPPoE
- PPPOE
- PPPoE
- linux pppoe
- 嵌入式pppoe
- PPPoe简介
- PPPoE过程
- PPPOE服务器
- PPPoE实例
- tomcat 部署war linux or windows system
- java中的session与cookie
- linux内核驱动模块加载方式
- 结合Apache和Tomcat实现集群和负载均衡
- CAN总线的仲裁机制
- PPPOE
- 使用AutoIt做广东省英语A级与计算机水平考试的考前测试之第2版
- MySQL自带的性能压力测试工具mysqlslap详解
- 基础语法
- 二叉树分层遍历(递归以及非递归的实现)
- apt
- Cocos2d-x中与属性相关的宏
- 雅虎的收购战略
- C++第16周项目4 -处理C++源代码 - (2)花括号单独占一行