PPP Internet協議控制協議(IPCP)
1. 介紹
PPP有三個主要組件:
- 在串列線路上對資料報進行加密;
- 用於建立,配置和檢測資料鏈路串連的串連控制協議(LCP)。
- 用於建立和配置不同網路層協議的網路控制協議(NCP)協議族。
為了在點對點連接上建立通訊,每個PPP端必須首先發送LCP包以配置和檢測資料連結。在串連建立而且可選的選項都已經由LCP設定完成後,PPP必須必鬚髮送NCP包用以選擇和配置一個或多個網路層協議。在每層的協議被配置完成後,就可以在鏈種上進行通訊了。在LCP或NCP顯式地關閉串連以前串連一保持開放。
2. 對IP的PPP網路控制協議
IP控制協議(IPCP)負責建立,使能和中止IP模組。IPCP和LCP協議使用相同的包交換器制。IPCP包在PPP沒有達到網路層協議階段以前不能進行交換,如果有IPCP包在到達此階段前到達會被拋棄。IPCP和LCP基本相同,除了以下幾點:
資料連結層協議域方面。一個IPCP包被包括在PPP資料連結層幀的資訊域內,在幀中的協議域會有指示類型的數值8021。編碼域僅用到編碼1到7。其它編碼被認為是不可識別而被拋棄。逾時方面。IPCP包在PPP沒有到達網路層協議以前不能交換。在實現中應該在未接收到配置確認或其它響應前準備等待認證和連結品質決定的完成。實現中應該保證串連在除使用者幹擾或超的其它情況下不得中斷。配置選項類型方面。IPCP有不同的配置選項集合,在下面會具體談到。
2.1. 發送IP資料報
在進行IP包通訊前,PPP必須達到網路層協議階段,IPCP必須到達開啟狀態。在PPP資料連結層幀的資訊域中包括了一個IP包,幀中的協議域指示了類型值0021。在PPP串連上傳送IP包的最大長度和PPP資料鏈種層幀的資訊域的最大長度一致。過大的IP資料報必須被重新分段。如果系統不希望分段重組就必須使用TCP最大段大小選項和MTU發現。
3. IPCP配置選項
IPCP配置選項可以選擇希望的IP參數。IPCP使用與LCP相同的配置選項格式。IPCP選項類型域的值如下所示:
1 IP地址1
2 IP壓縮協議
3 IP地址2
3.1. IP地址1
使用配置選項IP地址是不好的,這在實現中已經證明了。IP地址配置選項可以替換這個域,應該使用IP地址配置選項。如果接收到的配置請求中包括IP地址或IP地址選項,此選項不應該在配置請求中包括這個選項。如果因為IP地址選項而收到配置拒絕時,或接收到的配置未確認中包括IP地址選項作為附加選項時,才發送這一選項。
3.2. 壓縮協議
此配置選項可以使用系統使用特定的壓縮協議,預設情況下不需要進行壓縮。IP壓縮協議配置選項格式如下所示,傳送順序從左至右。
類型 2
長度 >= 4
IP壓縮協議域由兩個位元組組成,指示希望的壓縮協議,此域的值和PPP資料連結層協議域指示的壓縮協議一致。當前能夠使用的壓縮協議值如下:002d代表Van Jacobson Compressed TCP/IP。資料域為0個或多個位元組,儲存特定的壓縮協議的一些參數。
3.3. IP地址2
這個域提供了確定用於本地串連端的IP地址的方法。它使得配置請求的寄件者可以要求自己希望的IP地址,或者要求對方提供相應的資訊。對方可以通過返回NAKing選項和合法的IP地址提供這方面的資訊。
如果確定遠程IP地址是必須的,而對方又未在它的配置請求選項中提供,此選項應該加在配置拒絕選項後。IP地址值要麼是一個合法的遠程IP地址,要麼要求對方提供資訊。預設情況下未指定IP地址。下面是IP地址配置選項格式,傳送順序是從左至右。
類型 3
長度 6
四個位元組的IP地址是配置請求發送方希望本地地址。如果這四位全部為零,則要求對方提供IP地址資訊。
4. Van Jacobson TCP/IP包頭壓縮
Van Jacobson TCP/IP包頭壓縮降低了TCP/IP包頭的大小到接近3個位元組,這對於慢速的串列線路來說是一大提高。IP壓縮協議配置選項用於指示接收壓縮包的能力。如果需要兩個方向都進行壓縮則需要雙方獨立申請。在傳送IP包時PPP協議域被設定為以下值:
0021 類型IP。IP協議不是TCP,或包是一個資料區段,或未經過壓縮。
002d 壓縮的TCP。TCP/IP包頭由壓縮的包頭替換。
002f 未壓縮的TCP. IP協議域由槽(slot)標記取代。
4.1. 配置選項格式
IP壓縮協議配置選項格式如下所示,傳送順序從左至右:
類型 2
長度 6
IP壓縮協議
002d指示Van Jacobson Compressed TCP/IP包頭。Max-Slot-Id域一個位元組,指示最大的槽標記,它比實際的槽數少一,槽標記從0到Max-Slot-Id。在實際中,如果Max-Slot-Id = 0,可能會有問題。Comp-Slot-Id域一個位元組,指示槽標記域是否壓縮。
0 槽標記不得壓縮。所有壓縮的TCP包必須在每個變更掩碼(change mask)中設定C位,並要包括槽標記。
1 可壓縮槽標記。