pppoe

ppp工作在  数据链路层

PPPoE及TCP/IP協議棧 (protocol stack )
應用層 FTP SMTP HTTP DNS
運輸層 TCP UDP
網路層 IP IPv6
網路存取 PPP
PPPoE
Ethernet













http://zh.wikipedia.org/wiki/PPPoE

PPPoE (Point-to-Point Protocol over Ethernet),乙太網 上的點對點協議,是將點對點協議(PPP )封裝在乙太網 (Ethernet)框架中的一種網路隧道協議。由於協議中集成了PPP協議,所以實現了傳統乙太網 不能提供的身份驗證 、加密 以及壓縮 等功能,也可用於有線電視數據機 (cable modem)和數字用戶線路(DSL )等以乙太網 協議向用戶提供接入服務的協議體系。

本質上,它是一個允許在以太廣播域 中的兩個乙太網介面間建立點對點隧道的協議。

以Linux 系統常用的pppd 為例,支持PPP 介面上面的IP 、IPv6 和IPX 網路層協議。

 

 

http://baike.baidu.com/view/3246.htm

  1. 什么是PPP?

  TCP/IP信息包本身并不能够通过串行链路来传输,这使得它不适合于WAN广域网(Wide Area Networks)。截止到撰写此稿之时,还没有一个切实可行的方法来扩展以太网,虽然在不久的将来,随着光纤10G以太网的出现,这种情况将会得到改 观。而这些年来,电信公司在全世界建设了无数的串行通信链接网,因此他们迫切需要一种协议,使得TCP/IP信息包可以在串行线路上传送。因此出现两个有 用的协议。
  ·SLIP (Serial Line Internet Protocol) 串行线路互联网协议
  ·PPP
  其中PPP是Point to Point Protocol(点到点协议)的字母缩写。它是TCP/IP网络协议集的成员之一。也可以认为PPP是对TCP/IP的一个扩展,它增加了两组有用的功能。
  ·它可以通过串行链路来传送TCP/IP信息包。
  ·用户登录认证
  PPP性能更加丰富,而且很大程度上取代了SLIP的地位。因为在公用电话系统中也采用了部分 串行链路,所以必须确保通信的可靠性。为此,PPP将用户名与密码安全结合在一起,比如当接驳要求发起时,此要求通过PPP协议转发到路由器和服务器,这 时候就可以进行安全验证了。因为PPP具有在串行链路上传递TCP/IP 信息包的能力,并且还可以进行安全验证,所以互联网服务提供商ISP(Internet Service Providers)一般都是利用PPP协议,允许拨号用户与互联网相连。
  2.什么是PPPoE?
  

  PPP是为串行通信设计的,现在它与以太网(Ethernet)相结合,成为在以太网络中转播 PPP帧信息的技术。也称PPP over Ethernet,即PPPoE协议。PPP协议与以太网并不是兼容的东西,因此用户经常感到十分的迷惑,为什么要将以太网与PPP结合在一起呢?
  如果我们将TCP/IP通信与公路交通相比的话,那么基本的TCP/IP协议就是这个城市的街 道网。街道上有许多的路口(或者停车点),人们在马路上可以很容易地上车或者下车。但是人们不知道每条街上有多少辆车在跑,而且每新增加一个路口将带来新 的管理任务,因为你将更不清楚有多少人,有多少车在街道上跑了。PPP就好比铁路,人们只能在固定的站点上上车或者下车,因此对乘客的管理和控制也相对容 易(比如上车必须买票。)因此不妨再打个比喻,PPPoE就象是在街道上跑的火车,事实上这不是不可能的,比如电车轨道,地铁。它带来的好处是显而易见 的,首先它不影响城市里其它的交通,其次还给你带来铁路的优点,比如流量的控制。
  有些ISP并不是通过串行链路与用户相连的,这种情况下PPPoE也可以带来部分好处;使用串 行链路的ISP早已经在调制解调器通信上使用PPP了,另一方面,DSL提供商通过以太网,而不是串行链路通信,因此PPPoE可以满足许多人的需要。并 且,许多人对于PPPoE的付加能力感到特别满意。因为PPPoE允许ISP们对用户的登录安全进行控制和测量用户流量。
  3. 谁将使用PPPoE?
  

  然而目前为止,只有DSL提供商是在使用PPPoE协议,cable modem有线电视网络服务提供商将在近两年内也采用PPPoE。
  4. 谁将需要PPPoE软件?
  

  需要使用PPPoE的DSL提供商通常会给他们的用户提供多种PPPoE软件。如果你只是通过 DSL将一台电脑与互联网相连,那么这就足够了。然而如果是企业用户,需要将整个局域网通过DSL与互联网相连,DSL提供商所提供的软件就不够用了。在 局域网(LAN)与DSL的连接使用中,路由器和互联网共享软件的使用将存在一些兼容的问题。你需要与DSL服务提供商共同讨论解决这个问题。

 

 

 

PPPoE的通信过程

  [1] 假如客户 端要通过一个局域网与远程的PPPoE服务器进行身份验证,这时,它们会有两个不同的会话阶段,Discovery阶段和PPP会话阶段。当一个客户端想 开始一个PPPoE会话时,它必须首先进行发现阶段以识别对端的以太网MAC地址,并建立一个PPPoESESSON_ID。在发现阶段,基于网络的拓扑 结构,客户端可以发现多个PPPoE服务器,然后从中选择一个,不过通常都是选择反应最快的一个。
  Discovery阶段是一个无状态的阶段,该阶段主要是选择接入服务器,确定所要建立的 PPP会话标识符Session ID,同时获得对方点到点的连接信息;PPP会话阶段执行标准的PPP过程。当此阶段完成,通信的两端都知到PPPoESESSON_ID和对端的以太网 地址,它们一起定义了一个唯一的PPPoE会话。这些步骤包括客户端广播一个发起分组(PASI),一个或多个PPPoE服务器发送响应分组 (PADO),客户端向选中的服务器发送请求分组(PADR),选中的PPPoE服务器发送一个确认分组(PADS)给客户端。当客户端接收到确认分组, 它可以开始进行PPP会话阶段。当PPPoE服务器发送出确认分组,它可以开始PPP会话。
  当客户端在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时 间,这个过程会被重复期望的次数。如果客户端正等待接收PADS,应该使用具有客户端重新发送PADR的相似超时机制。在重试指定的次数后,主机应该重新 发送PADI分组。PPPOE还有一个PADT分组,它可以在会话建立后的任何时候发送,来终止PPPOE会话。它可以由客户端或者PPPOE服务器发 送。当接收到一个PADT,不再允许使用这个会话来发送PPP业务在发送或接收PADT后,即正常的PPP不能使用时,可以使用PADT,一旦PPPOE 会话开始,PPP数据就可以以任何其它的PPP封装形式发送。所有的以太网帧都是单播的,身份验证是发生在会话阶段的,PPPoE会话的 SESSION_ID一定不能改变,并且必须是发现阶段分配的值。

 

 

  2. 协议头格式

 

参考: http://baike.baidu.com/view/3246.htm

 

 

 

ADSL拨号过程简述

  客户机启动拨号程序,发送PADI包,ADSL MODEM回应PADO包,客户机再发送PADR包,ADSL MODEM回应PADS包后建立PPPOE通道,随后客户机进行普通的PPP协议拨号过程,不过PPP数据包都是包装进以太帧中的,拨号成功后客户机和服 务器之间建立了PPP通道,ADSL MODEM起到将以太帧转换为PPP包的作用。ADSL虽然是用电话线,但所用频率不是通话用的频率,所以ADSL拨号不影响打电话。通信结束后,会发送 PADT断开PPPOE通道。

 

pppoe_第1张图片

 

 

 


2。 PPP over Ethernet基本帧格式
  建立一个以太网上点对点协议会话包括两个阶段:1。 发现(Discovery)阶段。在Discovery过程中用户主机以广播方式寻找可以连接的所有的接入集线器,并获得其以太网MAC地址。然后选择需 要连接的主机并确定所要建立的PPP会话识别标号。2。 PPP会话阶段。用户主机与接入集线器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。因此对应于这两种过程,以太网上点对点协议帧格式(如图 2)也包括两种类型:发现阶段的以太网帧中的类型字段为0x8863;PPP会话阶段的以太网帧中的类型字段为0x8864,它们均已得到IEEE的认 可。PPPoE包中的版本(VER) 字段和类型(TYPE)字段长度均为4比特,在当前版本PPPoE建议中这两个字段值都固定为0x1。代码(CODE)字段长度为8比特,根据两阶段中各 种数据包的不同功能而值不同。在PPP会话阶段CODE字段为0x00,发现阶段中的各种数据包格式将在下面详细介绍发现阶段时给出。版本标识号码 (SESSION_ID)字段长度为16比特,在一个给定的PPP会话过程中它是固定不变的。值0xffffff为保留值。长度(LENGTH)字段为 16比特长,指示PPPoE净荷长度。发现阶段PPPoE载荷可以为空或由多个标记(TAG)组成,每个标记都是TLV(类型-长度-值)的结构;PPP 会话阶段PPPoE载荷为标准的点对点协议包。
3。 发现(Discovery)阶段的详细介绍
一个典型的发现(Discovery)阶段共包括4个步骤:
  1、主机发出PPPoE有效发现启动(PADI)包。以太网目的地址为广播地址0xffffffffffff,       CODE字段为0x09,SESSION_ID为0x0000。PADI包必须至少包含一个服务名称类型的标签(标签类型字段为0x0101),向接入集 线器提出所要求提供的服务。
  2、接入集线器收到在服务范围内的PADI包后,发送PPPoE有效发现提供(PADO)包以响应请求。其CODE字段为0x07 ,SESSION_ID仍为0x0000。PADO包必须包含一个接入集线器名称类型的标签(标签类型字段为0x0102)以及一个或多个服务名称类型标 签,表明可向主机提供的服务种类。
  3、主机在可能收到的多个PADO包中选择一个合适的,然后向所选择的接入集线器发送PPPoE有效发现请求(PADR)包。其CODE字段为 0x19 ,SESSION_ID仍为0x0000。PADR包必须包一个服务名称类型标签,确定向接入集线器请求的服务种类。
  4、接入集线器收到PADR包后准备开始PPP会话,它发送一个PPPoE有效发现会话确认(PADS)包。其CODE字段为0x65 ,SESSION_ID为接入集线器所产生的一个唯一的PPPoE会话标识号码。PADS包也必须包含一个接入集线器名称类型的标签确认向主机提供的服 务。当主机收到PADS包确认后,双方就进入PPP会话阶段。  

 

 

 

 

 

 

 

 

 

 

 
 

你可能感兴趣的:(网络协议)