PPPOE

PPPOE协议发现过程

先说什么是PPP协议?PPP协议叫做Point to Point Protocol ,点到点协议。

点到点协议以前运用广泛,例如窄带拨号就是点到点协议。

点到点协议的特点是用在点到点线路上。所谓点到点线路拓扑如下。

A---------------------------------B

一条线连接两端,除了A就是BA发出必然B收入,反之亦然。

这样的结构下,PPP协议不考虑寻址,即发送者不必去考虑谁接收信息,接受者是否合法...压根儿没得选。

 

那么什么是PPPOE协议呢?Point to Point Protocol over Ethernet。翻译过来就是“在以太网上的点对点协议”。

在以太网上跑PPP协议的一个关键问题,在于以太网并非点到点网络,而是多点到多点的广播网络。那么如何在这个广播网络上模拟出点到点的线路呢?

 

 

 

PPPOE整个过程分为:PPPOE发现阶段、PPPOE会话阶段、PPPOE结束阶段。

一、PPPOE发现阶段。主要是用来发现PPPOE服务器和为PPPOE会话阶段做好准备。PPPOE发现阶段主要分为四步(这四个步骤,细心地朋友可能会发现类似DHCP的四个过程).

PPPOE发现过程第一步:

PADIPPPOE Active Discovery Initiation)报文 PPPOE发现服务报文
这个报文是一个广播报文,目的地址为全1,源地址是发送者地址-即客户地址。

它实际上是一个寻求服务的报文,就像你走进一个酒吧,大喊一声:“有人吗?

PADI就是PC在大喊:“有PPPOE服务器么?”

 

 

 

PPPOE发现过程第二步:

PADOPPPOE Active Discovery Offer)报文 PPPOE发现提供报文
Offer就是提供的意思。这个报文是对PADI的一个反馈。

PPPOE 服务器(例如BRAS,就是一个PPPOE服务器)收到了PADI报文后,就会返回这个报文。 
这个报文是标准的单播。源地址是PPPOE服务器的地址,目的地址是PADI报文发送者的地址-也就是客户地址。

这个报文附带的关键信息,除了PPPOE服务器的地址外,还提供了服务器的名称。

这就好比酒吧侍者反应你的呼喊:“我,netwolf.biz我可以为你服务。”

 

 

 

PPPOE发现过程第三步:

PADRPPPOE Active Discovery Request)报文 PPPOE发现请求报文

如果广播网内有多个PPPOE服务器,那么客户可能会接到多个PADO报文。那么客户必须选择某一个PPPOE服务器作为自己的服务员。一般来说,是选择反馈最快的那个。(PPPOE客户端可能收到多个PPPOE服务器发送过来的这种报文,PPPOE只会选择第一个到达的报文进行应答)

接着客户就会向这个服务器发出PADR报文,明确告诉对方:我选择你为我服务。

至于其他服务器,会用计时器计算时间,超时无响应就放弃了。

这就好比你听到了好几位酒吧侍者的反馈,然后选了其中一位:“OKnetwolf.biz就是你了。

 

 

 

PPPOE发现过程第四步:

PADSPPPOE Active Discovery Session-confirmation)报文 PPPOE发现会话报文

那么接下来,就该侍者给你递菜单了。不过在PPPOE过程中,先得给你一个贵宾卡

PADSPPPOE服务器对PADR的反馈,主要内容是提供一个会话ID给客户。以后客户发出的所有报文,都必须带这个会话ID。服务器就是凭借这个会话IDVIP卡号),知道你是谁,进而提供服务。

 

 

二、PPPOE会话阶段。PPPOE发现阶段结束后,进入的PPPOE会话阶段,在这个阶段主要靠的是PPP协议在进一步完成协商和业务数据。PPP的协商过程.

 

PPPOE <wbr>server
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帧关闭这条链路,或发生了某些外部事件.(例如,用户的干预).

PPPOE <wbr>server

PAP验证为两次握手验证,口令为明文,PAP验证的过程如下:

被验证方发送用户名和口令到验证方;验证方根据用户配置查看是否有此用户以及口令是否正确,然后返回不同的响应(Acknowledge Or Not Acknowledge).

如正确则会给对端发送ACK报文,通告对端已被允许进入下一阶段协商;否则发送NAK报文,通告对端验证失败.此时,并不会直接将链路关闭.只有当验证不通过次数达到一定值(缺省为4)时,才会关闭链路,来防止因误传,网络干扰等造成不必要的LCP重新协商过程.

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

PPPOE <wbr>server

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服务地址等。

   这个阶段完成后,业务数据就能正常传输了。数据的封装是自上而下的,那么PPPOE数据封装过程(以TCP/IP模型讨论)是这样的;应用层数据封装于传输层,再被网络层封装,再被PPP协议头部封装,再接着被PPPOE协议头部封装,最后就是MAC封装(指在LAN中).

     到这一步,双方的PPPOE链接已经建立,在以太广播网上,建立了一条PPP(点到点)线路,一端为PPPOE服务器,一端为PPPOE的客户。然后你们就只管传数据了,你传我收,我传你收,绝无第三者。

  三、PPPOE结束阶段--分手:

PADTPPPOE Active Discovery Terminate)报文 PPPOE发现终结报

好吧,二人世界结束了。。。谁负了谁且不论,分手的过程是怎么样的呢?

有任何一方发出PADT报文(terminate是中断的意思),主要内容就是会话IDVIP卡号)。通告对方,本会话结束,我们之间的点到点关系结束。

接到这个报文的一方无须回复,结束自己的相关业务即可。

 

 

不过,不是每个人分手都会发个短信给对方的。有些人的分手模式是直接玩消失。

在网络上,最经常直接玩消失的就是客户。

很多人下网的操作,不是去点开链接,再点击“断开链接”,而是直接关MODEM的电。

显然,突然断电的MODEM是没法发出PADT报文通知对方(不突然断电也发不了,这个报文应该电脑来发)。对于PPPOE服务器而言,这个客户端就在直接玩消失。

....

PPPOE服务器:就是。太没素质了!

客户端:你有素质!你小子脚踏多少只船了!

.....

 

那么脚踏N只船的PPPOE服务器怎么应对这种情况呢?它有一个keepalive机制。

简单说,就是隔三差五,定期询问对方:你还活着么?(keepalive,直接翻译就是保持活着)。

对方活着,就回答:“亲爱的,我还在。”

PPPOE服务器就知道这个船还没劈腿。

要是问了对方不回答呢?不能一次就算,得多问几次。一般是问三次,都没回答,那就知道对方已经玩消失了,删除对方会话ID

 

不过PPPOE服务器是很有风度的绅士。即使判断被人家甩了,它在删除会话ID的时候,还是会发出PADT报文(其实客户端也一样。如果客户端判断被甩了,也会发出PADT)。

这个机制是为了避免误判。假设对端其实没有玩消失,只是某种原因,发不出信息来。那么PPPOE服务器的PADT也可以明确告诉对方结束会话,以避免挂死

 

从PPPOE的协议过程来看,整个过程都没有出现ARP协议,所以你查看arp表是看不到任何MAC和IP绑定关系的。因此PPPOE可以保护客户不中ARP病毒攻击。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值