PPP協議
PPP協議是計算機用戶和ISP進行通信所使用的數據鏈路層協議
PPP協議的要求:
? 簡單:接收端每接收一個幀進行CRC 檢驗,正確就接收,錯誤則丟棄
? 封裝成幀
? 透明傳輸
? 支持多種網絡層協議:必須支持多種網絡層協議,(IP/IPX)
? 支持多種類型的鏈路:串行、並行、同步、異步、低速、高速、電的、光的、動態的、靜態的
? 差錯檢測
? 檢測連接狀態:PPP協議必須具有一種機制能夠自動檢測出鏈路是否處在正常的狀態,每隔一段時間自動檢查。
? MTU,數據鏈路層的幀的數據部分最大的可傳輸長度
? 網絡層地址協商:PPP協議必須提供一種機制使兩個通信的網絡層的實體能夠通過協商或配置彼此的網絡層地址
? 數據壓縮
PPP協議只支持全雙工通信
PPP協議的三個組成部分
? 一個將IP數據報封裝到串行鏈路的方法
? 一個用來建立、配置和測試數據鏈路連接的鏈路控制協議LCP,通信的雙方可以協商選項
? 一套網絡控制協議NCP,其中每個協議支持不同的網絡層協議,如IP,OSI的網絡層,DECnet,以及APPLETalk等。
PPP協議的幀格式
傳輸方式
? 同步傳輸:一連串的比特連續傳送,接收方有準備的接收數據
? 異步傳輸:逐個字符地 傳輸,接收方不知道數據什麽時候來
幀格式
F部分為標誌字段規定為“0x7E”,如果出現兩個連續的標誌F,代表這是一個空幀,應該丟棄
A字段規定為“0xFF”,即11111111
控制字段C規定為0x03,即00000011,A、C字段實際上並沒有攜帶任何PPP 幀的信息
協議字段的兩字節:
? 0x0021 數據部分為IP數據報
? 0xC021 數據部分為LCP的數據
? 0x8021 數據部分為網絡層的控制數據
FCS 是使用CRC 的幀檢驗序列 FCS
如何實現透傳輸?
? 當數據鏈路采用異步方式傳輸時,PPP協議把轉義字符定義為0x7D(01111101),並使用字節填充:,方法如下:
? 0x7E (F字段)轉換為 0x7D 和 0x5E
? 0x7D (轉義字符) 轉換為 0x7D 和0x5D
? 數據部分每出現一個ASCII碼的控制字符,在該字節前加入 0x7D,並改變原字符的編碼
? 當數據鏈路采用同步 傳輸時,PPP使用零比特填充方法,來實現透明傳輸
? 每出現5個連續的1,則立即填入一個0
PPP協議的初始化過程:
用戶撥號接入ISP,建立一條從用戶PC 到ISP的物理線路連接
PC 向ISP 發送一系列的LCP分組封裝成多個PPP幀,以建立LCP連接,選擇要使用的PPP參數,包括鏈路上的最大幀長,所使用的鑒別協議的規約、以及不使用PPP幀的地址和控制字段,
進行網絡層的配置,NCP協議給PC 分配臨時的IP地址,
通信完畢時,NCP釋放網絡層連接,收回網絡層地址,LCP釋放數據鏈路層連接,最後釋放物理層連接
在雙方建立物理層連接後,PPP就進入“鏈路建立”狀態,目的是建立鏈路層的LCP連接。然後LCP開始協商配置選項,發送LCP的配置請求幀,這是一個PPP幀,PPP幀的協議字段時0xC021,數據部分為包含特定請求的配置請求。鏈路的另一端可以做出如下反應:
配置確認幀:所有選項都接受
配置否認幀:所有選項都理解但是不能接受
配置拒絕幀:有的選項無法識別或不能接受,需要協商
然後進入鏈路“鑒別”狀態,這一狀態只允許傳送LCP協議的分組,鑒別協議的分組以及檢測鏈路質量的分組。鑒別成功就進入“網絡層協議的狀態”,PPP鏈路的兩端的NCP協議跟據網絡層的不同的協議互相交換網絡層的特定的網絡控制分組。PPP協議的兩端可以運行不同的網絡層協議,但仍然可以使用同一個PPP協議。
網絡層配置完畢之後,鏈路就進入可進行數據通信的“鏈路打開”狀態,兩個PPP端點可以向彼此發送分組,兩個PPP端點還可以發送回送請求LCP分組和回送回答LCP 分組,以檢查鏈路的狀態。
數據傳輸結束之後,可以由鏈路的一端發送終止請求LCP分組請求終止鏈路連接,在收到對方的終止確認LCP分組之後,鏈路進入“鏈路終止”狀態,如果鏈路出現故障,也會變成這一狀態,當調制解調器的載波停止之後,則回到“鏈路靜止”狀態,
PPP協議已不是單純的數據鏈路層的協議,還包含了網絡層和物理層的內容。
PPP協議