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 介面上面的IPIPv6IPX 網路層協議。

 

 

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通道。

 

 

 

 


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會話階段。  

 

 

 

 

 

 

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章