PPPOE協定

pppoe協定是point-to-point protocol over ethernet的簡稱,可以使乙太網的主機通過一個簡單的橋接設備連到一個遠端的接入集中器上。通過pppoe協定,遠端接入設備能夠實現對每個接入用戶的控制和計費。

介紹

與傳統的接入方式相比,pppoe具有較高的性能價格比,它在包括小區組網建設等一系列套用中被廣泛採用,現在流行的寬頻接入方式adsl就使用了pppoe協定。

modem接入技術面臨一些相互矛盾的目標,既要通過同一個用戶前置接入設備連線遠程的多個用戶主機,又要提供類似撥號一樣的接入控制,計費等功能,而且要儘可能地減少用戶的配置操作。

PPPOE的目標就是解決上述問題,1998年後期問世的乙太網上點對點協定(PPPoverEthernet)技術是由Redback網路公司、客戶端軟體開發商RouterWare公司以及Worldcom子公司UUNET Technologies公司在IETFRFC的基礎上聯合開發的。通過把最經濟的區域網路技術-乙太網和點對點協定的可擴展性及管理控制功能結合在一起,網路服務提供商和電信運營商便可利用可靠和熟悉的技術來加速部署高速網際網路業務。它使服務提供商在通過數字用戶線、電纜數據機或無線連線等方式,提供支持多用戶的寬頻接入服務時更加簡便易行。同時該技術亦簡化了最終用戶在選擇這些服務時的配置操作。

PPPoE:乙太網上的 PPP
(PPPoE:point to point protocal over Ethernet)
在 乙太網上承載PPP協定(點到點連線協定),它利用乙太網將大量主機組成網路,通過一個遠端接入設備連入網際網路,並對接入的每一個主機實現控制。計費功能,極高的性能價格比使pppoe在包括小區組網建設等一系列套用中廣泛採用。

PPPoE 的乙太網有效載荷顯示如下:
4
8
16
32 bit
Ver
Type
Code
Session-ID
Length
Payload
VER ― PPPOE 版本。必須設定為 0x1。
TYPE ― 必須設定為 0x1。
CODE ― Discovery 和 PPP Session 階段有定義。

SESSION_ID ― 無符號值。Discovery 數據包中有該欄位定義。對於特定的 PPP Session 而言,該值為固定值。實際上,該欄位定義了包括乙太網 SOURCE_ADDR 和 DESTINATION_ADDR 的 PPP。0xffff 作為預留值,不作使用。

LENGTH ― 表示 PPPoE 有效載荷長。不包括乙太網或 PPPoE 頭的長度。

隨著低成本的寬頻技術變得日益流行,DSL(Digital subscriber line)數字用戶線技術更是使得許多計算機在網際網路上能夠酣暢淋漓的衝浪了。但是這也增加了DSL服務提供商們對於網路安全的擔心。

通過DSL方式上網的計算機大都是通過以太網卡(Ethernet)與網際網路相連的。同樣使用的還是普通的TCP/IP方式,並沒有付加新的協定。另外一方面,數據機的撥接,使用的是PPP協定,即Point to Point Protocol,點到點協定,該協定具有用戶認證及通知IP位址的功能。PPP over Ethernet(PPPoE)協定,是在乙太網絡中轉播PPP幀信息的技術,尤其適用於DSL等方式。

工作原理

PPPoE協定的工作流程包含發現和會話兩個階段,發現階段是無狀態的,目的是獲得PPPoE終結端(在局端的ADSL設備上)的乙太網MAC地址,並建立一個惟一的PPPoESESSION-ID。發現階段結束後,就進入標準的PPP會話階段。

當一個主機想開始一個PPPoE會話,它必須首先進行發現階段,以識別局端的乙太網MAC地址,並建立一個PPPoESESSION-ID。在發現階段,基於網路的拓撲,主機可以發現多個接入集中器,然後允許用戶選擇一個。當發現階段成功完成,主機和選擇的接入集中器都有了他們在乙太網上建立PPP連線的信息。直到PPP會話建立,發現階段一直保持無狀態的Client/Server(客戶/伺服器)模式。一旦PPP會話建立,主機和接入集中器都必須為PPP虛接口分配資源。

PPPoE協定會話的發現和會話兩個階段具體進程如下。

1.發現(Discovery)階段
在發現(Discovery)階段中用戶主機以廣播方式尋找所連線的所有接入集中器(或交換機),並獲得其乙太網MAC地址。然後選擇需要連線的主機,並確定所要建立的PPP會話標識號碼。發現階段有4個步驟,當此階段完成,通信的兩端都知道PPPoESESSION-ID和對端的乙太網地址,他們一起惟一定義PPPoE會話。這4個步驟如下。

(1)主機廣播發起分組(PADI),分組的目的地址為乙太網的廣播地址0×ffffffffffff,CODE(代碼)欄位值為0×09,SESSION-ID(會話ID)欄位值為0×0000。PADI分組必須至少包含一個服務名稱類型的標籤(標籤類型欄位值為0×0101),向接入集中器提出所要求提供的服務。

(2)接入集中器收到在服務範圍內的PADI分組,傳送PPPoE有效發現提供包(PADO)分組,以回響請求。其中CODE欄位值為0×07,SESSION-ID欄位值仍為0×0000。PADO分組必須包含一個接入集中器名稱類型的標籤(標籤類型欄位值為0×0102),以及一個或多個服務名稱類型標籤,表明可向主機提供的服務種類。

(3)主機在可能收到的多個PADO分組中選擇一個合適的PADO分組,然後向所選擇的接入集中器傳送PPPoE有效發現請求分組(PADR)。其中CODE欄位為0×19,SESSION_ID欄位值仍為0×0000。PADR分組必須包含一個服務名稱類型標籤,確定向接入集線器(或交換機)請求的服務種類。當主機在指定的時間內沒有接收到PADO,它應該重新傳送它的PADI分組,並且加倍等待時間,這個過程會被重複期望的次數。

(4)接入集中器收到PADR分組後準備開始PPP會話,它傳送一個PPPoE有效發現會話確認PADS分組。其中CODE欄位值為0×65,SESSION-ID欄位值為接入集中器所產生的一個惟一的PPPoE會話標識號碼。PADS分組也必須包含一個接入集中器名稱類型的標籤以確認向主機提供的服務。當主機收到PADS分組確認後,雙方就進入PPP會話階段。

2.PPP會話階段
用戶主機與接入集中器根據在發現階段所協商的PPP會話連線參數進行PPP會話。一旦PPPoE會話開始,PPP數據就可以以任何其他的PPP封裝形式傳送。所有的乙太網幀都是單播的。PPPoE會話的SESSION-ID一定不能改變,並且必須是發現階段分配的值。

PPPoE還有一個PADT分組,它可以在會話建立後的任何時候傳送,來終止PPPoE會話,也就是會話釋放。它可以由主機或者接入集中器傳送。當對方接收到一個PADT分組,就不再允許使用這個會話來傳送PPP業務。PADT分組不需要任何標籤,其CODE欄位值為0×a7,SESSION-ID欄位值為需要終止的PPP會話的會話標識號碼。在傳送或接收PADT後,即使正常的PPP終止分組也不必傳送。PPP對端應該使用PPP協定自身來終止PPPoE會話,但是當PPP不能使用時,可以使用PADT。以上各個階段的會話流程可用圖4-5描述。

驗證過程

假如客戶端要通過一個區域網路與遠程的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一定不能改變,並且必須是發現階段分配的值。

技術概要

通信過程概述

建立PPPOE通道(ADSL撥號)分兩個階段:發現階段和PPP會話階段。

在發現階段,乙太網上的客戶機要找到一個訪問集中器(AC,Access Concentrator),就是ADSL MODEM,在家用時一般就只有一個AC;但如果是一個乙太網內可能會有多條ADSL,就會有多個AC,這時客戶機就從中選擇一個。發現階段完成後,客戶機和AC都得到要在乙太網上建立PPP通道的相關信息。

發現階段是無狀態的,也就是兩邊都不用保存以前的狀態信息;只有PPP會話開始後,雙方就要建立一個虛擬的PPP通信接口,具體在Linux下會有ppp0網卡,在windows下網路連線中增加ADSL的接口。

協定頭格式

2.1 協定值
PPPOE數據是直接在以太頭數據之上的,其等級和ARP、IP等是相同的,在以太頭的類型欄位中,用0x8863 表示是PPPOE發現階段數據,用0x8864表示PPP會話階段數據,如下所示。(類比:0x0800表示IP數據,0x0806表示ARP數據)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DESTINATION_ADDR |
| (6octets) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SOURCE_ADDR |
| (6octets) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ETHER_TYPE (2octets) |
| 0x8863 or0x8864 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| PPPOE Header |
| (6octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ~
~ payload ~
~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CHECKSUM |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2.2 PPPOE協定頭
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 78 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VER |TYPE | CODE | SESSION_ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LENGTH | payload ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
PPPOE協定頭有6個位元組,正好和14位元組的以太頭實現了4位元組對齊,包括以下欄位:
VER:版本號,4位,必須為0x01TYPE:類型,4位,必須是0x01CODE:8位,在發現階段和PPP會話階段有不同的定義,表示PPPOE數據類型SESSION_ID:16位,用來定義一個PPP會話,在發現過程中定義。LENGTH:16位,表示負載長度,不包括以太頭和PPPOE頭。

發現階段

PPPOE發現階段數據的以太類型是0x8863。

3.1 TAG
在發現階段用於交換客戶機和AC的信息,建立PPPOE通道,負載信息都是PPPOE信息,並沒有上層協定數據。
發現階段的負載稱為TAG,一個TAG信息格式如下,負載信息中可能會包含多個TAG:
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 78 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TAG_TYPE | TAG_LENGTH |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TAG_VALUE ... ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
TAG_TYPE:16位,TAG類型TAG_LENGTH:16位,表示TAG_VALUE部分的長度TAG_VALUE:TAG值
TAG_TYPE可取以下值(注意第一位元組為2表示是錯誤信息):
0x0000 End-Of-List
0x0101 Service-Name
0x0102 AC-Name
0x0103 Host-uniq
0x0104 AC-Cookie
0x0105 Vendor-Specific
0x0110 Relay-Session-Id
0x0201 Service-Name-Error
0x0202 AC-System-Error
0x0203 Generic-Error
3.2 PPPOE主動發現初始包
PPPOE主動發現初始包(PPPoE Active Discovery Initiation, PADI)由客戶機發出,以太頭中的目的地址是以太廣播地址FF:FF:FF:FF:FF:FF,PPPOE頭中的CODE為0x09,SESSION_ID值必須為0,負載部分必須只包含一個Service-Name類型的TAG表示請求的服務類型,另外可以包含其他TAG,整個PPPOE包不能超過1484位元組,這樣省出的16位元組可以由ADSL中繼設備添加中繼TAG。

一個PADI包的例子為:
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 45 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0xffffffff |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0xffff | Host_mac_addr |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Host_mac_addr (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ETHER_TYPE = 0x8863 | v = 1 | t = 1 | CODE =0x09 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SESSION_ID =0x0000 | LENGTH =0x0004 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TAG_TYPE = 0x0101 | TAG_LENGTH = 0x0000 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.3 PPPOE主動發現提議包
PPPOE主動發現提議包(PPPoE Active Discovery Offer, PADO)由AC發出,用來回應客戶機的PADI包,以太頭中的目的地址是客戶機的MAC地址,PPPOE頭中的CODE為0x07,SESSION_ID值必須為0,負載部分必須包含一個AC-Name類型的TAG,用來指示本AC的名稱,一個在PADI包中指定的Service-Name的TAG,另外可以包含其他Service-Name的TAG。如果AC不對該客戶機提供服務,AC就不回應PADO包。 一個PADO包的例子為:
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 45 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Host_mac_addr |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Host_mac_addr (cont) | Access_Concentrator_mac_addr |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Access_Concentrator_mac_addr (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ETHER_TYPE = 0x8863 | v = 1 | t = 1 | CODE =0x07 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SESSION_ID =0x0000 | LENGTH =0x0020 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TAG_TYPE = 0x0101 | TAG_LENGTH = 0x0000 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TAG_TYPE = 0x0102 | TAG_LENGTH = 0x0018 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x47 | 0x6f | 0x20 | 0x52 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x65 | 0x64 | 0x42 | 0x61 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x63 | 0x6b | 0x20 | 0x2d |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x20 | 0x65 | 0x73 | 0x68 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x73 | 0x68 | 0x65 | 0x73 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x68 | 0x6f | 0x6f | 0x74 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.4 PPPOE主動發現請求包
PPPOE主動發現請求包(PPPoE Active Discovery Request, PADR)由客戶機發出,因為可能會有多個AC對客戶機發出的PADI包回應了PADO包,客戶機從回應的PADO包中選擇一個AC傳送PADR包,以太頭中的目的地址是該AC的MAC地址,PPPOE頭中的CODE為0x19,SESSION_ID值必須為0,負載部分必須只包含一個Service-Name類型的TAG表示請求的服務類型,另外可以包含其他TAG。

3.5 PPPOE主動發現會話確認包
PPPOE主動發現會話確認包(PPPoE Active Discovery Session-confirmation, PADS)由AC發出,收到客戶機的PADR包後,AC將產生一個SEESSION_ID值用來標誌本次PPP會話,以PADR包方式傳送給客戶機。以太頭中的目的地址是客戶機的MAC地址,PPPOE頭中的CODE為0x65,SESSION_ID值必須為所生成的那個SESSION_ID,負載部分必須只包含一個Service-Name類型的TAG,表示該服務類型被AC接受,另外可以包含其他TAG。如果AC不接受PADR中的Server-Name,PADS中則包含一個Service-Name-Error類型的TAG,這時SESSION_ID設定為0。

3.6 PPPOE主動發現停止包
PPPOE主動發現停止包(PPPoE Active Discovery Terminate, PADT)表示PPPOE會話過程的結束,AC和客戶機都可以主動發出。以太頭中的目的地址是對方的MAC地址,PPPOE頭中的CODE為0xa7,SESSION_ID值必須為PPPOE會話過程的SESSION_ID,不需要TAG。

PPP會話階段

在PPP會話階段,PPP包被封裝在PPPOE以太幀中,以太包目的地址都是單一的,以太協定為0x8864,PPPOE頭的CODE必須為0,SESSION_ID必須一直為發現階段協商出的SEESION_ID值,PPPOE的負載是整個PPP包,PPP包前是兩位元組的PPP協定ID值。

一個PPPOE會話過程包的例子為:
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 45 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Access_Concentrator_mac_addr |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Access_Concentrator_mac_addr(c)| Host_mac_addr |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Host_mac_addr (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ETHER_TYPE = 0x8864 | v = 1 | t = 1 | CODE =0x00 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SESSION_ID =0x1234 | LENGTH =0x???? |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PPP PROTOCOL = 0xc021 | PPP payload ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
注意:由於PPPOE頭是6位元組,PPP協定ID號兩個位元組,一共要占用8個位元組,而乙太網的MTU值為1500,所以上層PPP負載數據不能超過1492位元組,所以PPP協商時協商的最大接收單元值不能超過1492位元組,也就是相當於在PPPOE環境下的MTU是1492位元組。

ADSL撥號過程簡述

客戶機啟動撥號程式,傳送PADI包,ADSL MODEM回應PADO包,客戶機再傳送PADR包,ADSL MODEM回應PADS包後建立PPPOE通道,隨後客戶機進行普通的PPP協定撥號過程,不過PPP數據包都是包裝進以太幀中的,撥號成功後客戶機和伺服器之間建立了PPP通道,ADSL MODEM起到將以太幀轉換為PPP包的作用。ADSL雖然是用電話線,但所用頻率不是通話用的頻率,所以ADSL撥號不影響打電話。通信結束後,會傳送PADT斷開PPPOE通道。

知識問答

我們用以下一問一答的方式提供PPPoE的有關知識,希望能夠對讀者有一定的幫助。這些知識大都來源Vicomsoft公司對TCP/IP路由技術的一些解釋及我們對網際網路連線的理解。

Vicomsoft公司開發和提供了Network Address Translation(網路地址翻譯)和TCP/IP路由技術,其中包括了PPP和PPPoE的全部特性。我們的軟體允許用戶以一種或多種方式將整個LAN(區域網路)與網際網路相連,也稱軟路由。Vicomsoft在TCP/IP協定(包括PPP,PPPoE)的領域內取得很多寶貴經驗,並且願意將它的信息與有志於此的人分享。

什麼是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協定,允許撥號用戶與網際網路相連。

什麼是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們對用戶的登錄安全進行控制和測量用戶流量。

誰將使用PPPoE?

然而目前為止,只有DSL提供商是在使用PPPoE協定,cable modem有線電視網路服務提供商將在近兩年內也採用PPPoE。

誰將需要PPPoE軟體?

需要使用PPPoE的DSL提供商通常會給他們的用戶提供多種PPPoE軟體。如果你只是通過DSL將一台電腦與網際網路相連,那么這就足夠了。然而如果是企業用戶,需要將整個區域網路通過DSL與網際網路相連,DSL提供商所提供的軟體就不夠用了。在區域網路(LAN)與DSL的連線使用中,路由器和網際網路共享軟體的使用將存在一些兼容的問題。你需要與DSL服務提供商共同討論解決這個問題。

Vicomsoft公司的建議

如果你是通過DSL和PPPoE將一台電腦與網際網路相連,那么DSL提供商為你提供的軟體是已經足夠的,但是仍然有可以替換的產品。Vicomsoft公司推出的SurfDoubler軟體為PPPoE提供全方位的支持,隨著頻寬的增加,對各種類型的網際網路連線都可提供升級版。

如果你是使用DSL和PPPoE將一個區域網路與網際網路相連,最經濟的方法就是使用由你的DSL ISP為你分配的唯一的公用IP位址。通過網際網路共享軟體和硬體,區域網路內的用戶都可以享受到寬頻上網的樂趣了。但是要考慮的是網際網路共享軟體和硬體是否與你的PPPoE軟體兼容呢?我們的建議是你登錄到網際網路共享軟體和硬體的網站,在搜尋引擎內鍵入"PPPoE",你將很快地找出他們是否支持"PPPoE"。

PPPoE是一個標準,你可以假定所有的解決方案都是"平等"的。然而事實上,還是有些小小的差別,該標準要求PPPoE軟體在每一個TCP/IP信息包前加上一個附加的頭信息。這樣信息包的尺寸就比允許的尺寸要大,某些軟體提出這樣的解決方案,在區域網路的客戶機上重新設定TCP/IP協定。

常見故障及分析

(1)645故障描述:撥號適配器未裝
這種情況主要針對Windows ME和Windows98而言,解決辦法是在Windows98下添加撥號適配器組件即可。對Windows ME而言,因為它沒有直接添加撥號適配器的選項,所以必須在控制臺中先刪除撥號網路組件,再添加撥號網路組件完成適配器的添加。

(2)691/629故障描述:不能通過驗證
可能的原因是用戶的賬戶或者密碼輸入錯誤,或用戶的賬戶餘額不足,用戶在使用時未正常退出而造成用戶賬號駐留,可等待幾分鐘或重新啟動後再撥號。

(3)630故障描述:無法撥號,沒有合適的網卡和驅動
可能的原因是網卡未安裝好、網卡驅動不正常或網卡損壞。檢查網卡是否工作正常或更新網卡驅動。

(4)633故障描述:找不到電話號碼簿,沒有找到撥號連線
這可能是沒有正確安裝PPPoE驅動或者驅動程式已遭損壞,或者Windows系統有問題。建議刪除已安裝的PPPoE驅動程式,重新安裝PPPoE驅動,同時檢查網卡是否工作正常。如仍不能解決問題,可能是系統有問題,建議重灌系統後再添加PPPoE驅動。

(5)720故障描述:不支持PPPoE連線
它是Windows 2000特有的故障,建議重新啟動後再進行連線,如仍不能排除故障,建議重灌系統。

(6)697故障描述:網卡禁用
只要在設備管理中重新啟用網卡即可。

(7)769故障描述:撥號時報769錯誤
Windows XP系統中網卡被禁用、系統檢測不到網卡或者撥號軟體故障,有時會報769錯誤。重新啟用網卡、檢查網卡工作是否正常或重裝撥號軟體即可解決。

(8)678故障描述:無法建立連線
這個故障比較複雜,用戶和BRAS鏈路中任何一個環節有問題,都可能導致678故障,應根據不同的情況作相應處理。

相關詞條

相關搜尋

熱門詞條

聯絡我們