(二)數據鏈路層--點對點協議PPP


點對點協議PPP

繼續上文的內容,本文介紹點對點協議PPP。

PPP協議的特點

互聯網用戶通常需要連接到某個ISP才能接入到互聯網,PPP協議就是用戶計算機和ISP進行通信時,所使用的數據鏈路層協議,它應滿足如下需求:

  • 簡單
    IETF在設計互聯網體系結構時,把其中最復雜的部分放在TCP協議中,網際協議IP相對簡單,它提供的是不可靠的數據報服務,這樣,數據鏈路層沒有必要提供比IP協議更多的功能,對於數據鏈路層的幀,不需要糾錯,不需要序號,不需要流量控制,接收方每收到一個幀,就進行CRC檢驗,如果檢驗正確,就收下這個幀,否則丟棄這個幀。
  • 封裝成幀
    PPP協議必須規定幀定界符,以便接收端從收到的比特流中能准確的找出幀的開始和結束位置。
  • 透明性
    PPP協議必須保證數據傳輸的透明性,就是說,如果數據中碰巧出現了和幀定界符一樣的比特組合時,就要采取有效的措施來解決這個問題。
  • 多種網絡層協議
    PPP協議必須能夠在同一條物理鏈路上同時支持多種網絡層協議(如IP或IPX)的運行。當點對點鏈路所連接的是局域網或路由器時,PPP協議必須同時支持在鏈路所連接的局域網或路由器上運行的各種網絡層協議。
  • 多種類型鏈路
    除了要支持多種網絡層的協議外,PPP還必須能夠在多種類型的鏈路上運行。例如:串行的(一次發送一個比特)、並行的(一次並行發送多個比特)、同步的、異步的、低速的、高速的、電的、光的、交換的(動態的)、非交換的(靜態的)。
    1999年公布的在以外網上運行的PPP,即PPP over Ethernet,簡稱PPPoE,這是PPP協議能夠適應多種類型鏈路上的一個典型例子。PPPoE是為寬帶上網的主機使用的鏈路層協議。這個協議把PPP幀再封裝到一個以太網幀中(當然增加了一些能夠識別各用戶的功能)。寬帶上網時由於數據傳輸速率高,因此可以讓多個連接在以太網上的用戶共享一條到ISP的寬帶鏈路,即使是只有一個用戶利用ADSL進行寬帶上網(不和其他人共享到ISP的寬帶鏈路),也是使用PPPoE協議。
  • 差錯檢測
    PPP協議必須能夠對接收端收到的幀進行檢測,並立即丟棄有差錯的幀。若在數據鏈路層不進行差錯檢測,那么已出現差錯的無用幀就還要在網絡中繼續向前轉發,會白白浪費許多的網絡資源。
  • 檢測連接狀態
    PPP協議必須具有一種機制能夠及時自動檢測出鏈路是否處於正常工作狀態。當出現故障的鏈路隔了一段時間后又重新恢復正常工作時,就特別需要有這種及時檢測功能。
  • 最大轉送單元
    PPP協議必須對每一種類型的點對點鏈路設置最大傳送單元(MTU)的標准默認值,如果高層協議發送的分組數據部分超過MTU的數值,PPP就要丟棄這樣的幀,並返回差錯。
  • 網絡層地址協商
    PPP協議必須提供一種機制使通信的兩個網絡層的實體能夠通過協商知道或能夠配置彼此的網絡層地址,這對撥號連接的鏈路特別重要,因為如果僅僅在鏈路層建立了連接而不知道對方網絡層地址,則還不能保證網絡層可以傳送分組。
  • 數據壓縮協商
    PPP協議必須提供一種方法來協商使用數據壓縮算法,但並不要求將數據壓縮算法進行標准化。

在TCP/IP協議族中,可靠傳輸由運輸層的TCP協議負責,因此數據鏈路層的PPP協議不需要糾錯,不需要設置序號,不需要進行流量控制。PPP協議不支持多點線路(即一個主站輪流和鏈路上的多個從站進行通信),只支持點對點的鏈路通信。此外,PPP協議只支持全雙工鏈路。

PPP協議的組成

PPP協議有三個組成部分:

  • 一個將IP數據報封裝到串行鏈路的方法
    PPP既支持異步鏈路(無奇偶校驗的8比特數據),也支持面向比特的同步鏈路。IP數據報在PPP幀中就是其數據部分,它的長度收到MTU的限制。
  • 一個用來建立、配置、和測試數據鏈路連接的鏈路控制協議LCP
    LCP,即 Link Control Protocol。通信的雙方可協商一些選項。
  • 一套網絡控制協議NCP
    NCP,即Network Control Protocol。其中的每一個協議支持不同的網絡層協議,如IP、OSI的網絡層、DECnet、AppleTalk等。

PPP協議的幀格式

1、各字段的意義
如下圖所示:

首部的第一個字段和尾部的第二個字段都是標志字段F(Flag),規定為0x7E(二進制為01111110),標志字段表示一個幀的開始或結束,因此標志字段就是PPP幀的定界符。連續兩幀之間只需要用一個標志字段,如果出現連續兩個標志字段,就表示這是一個空幀,應當丟棄。
首部中的地址字段A規定為0xFF(二進制為11111111),控制字段規定為0x03(二進制為00000011)。最初曾考慮以后對這兩個字段的值進行其它定義,但至今也沒有給出,可見這個字段實際上並沒有攜帶PPP幀的信息。
PPP首部的第四個字段是2字節的協議字段。當協議字段為0x0021時,PPP幀的信息字段就是IP數據報;若為0xC021,信息字段是PPP鏈路控制協議LCP的數據;若為0x8021,表示這是網絡層的控制數據。
信息字段的長度是可變的,不超過1500字節。
尾部中的第一個字段(2字節)使用CRC的幀檢驗序列FCS。

2、字節填充
因為PPP幀的幀定界符是0x7E,所以當信息字段中出現一樣的比特組合時,就必須采取一些措施,使得和幀定界符一樣的比特組合不出現在信息字段中。
當PPP使用異步傳輸時,它把轉義符定義為0x7D(01111101),並使用字節填充。RFC 1662規定了如下填充方法:

  • 把信息字段處出現的每一個0x7E(幀定界符)轉變為2字節序列(0x7D,0x5E)
  • 若信息字段中出現一個0x7D的字節,即出現了和轉義字符一樣的比特組合,則把0x7D轉變為2字節序列(0x7D,0x5D)
  • 若信息字段中出現ASCII碼的控制字符,即數值小於0x20的字符,則在該字符前面加入一個0x7D字節,同時轉變該字符,例如:出現了0x03(在控制字符中,是“傳輸結束”ETX),就要把它轉變為2字節序列(0x7D,0x23)

3、零比特填充
PPP協議用在SONET/SDH鏈路時,使用同步傳輸(一連串的比特連續發送),而不是異步傳輸(逐個字符的傳送)。在這種情況下,PPP協議采用零比特填充方法來實現透明傳輸。具體做法是:

  • 在發送端,先掃描整個信息字段(通常用硬件實現,也可用軟件實現),只要發現有5個連續1,就立即填入一個0。因此經過這種零比特填充后的數據,就可以保證信息字段中不會連續出現6個1(6個1,可能為01111110,與幀定界符一致)。
  • 在接收端,當收到一個幀時,先找到幀定界符F,以確定一個幀的邊界,接着再用硬件對其中的比特流進行掃描。每當發現5個連續的1時,就把這5個連續的1后面的一個0刪除,以還原成原來的信息比特流。這樣就保證了透明傳輸,在傳送的數據比特流中,可以傳送任意組合的比特流,而不會引起對幀邊界的錯誤判斷。

PPP協議是如何工作的

當用戶撥號接入ISP后,就建立了一條從用戶個人電腦到ISP的物理連接。這時,用戶個人電腦向ISP發送一系列的鏈路控制協議LCP分組(封裝多個PPP幀),以便建立LCP連接。這些分組及其響應選擇了將要使用的一些PPP參數。接着進行網絡層配置,網絡控制協議NCP給新接入的用戶個人電腦分配了一個臨時的IP地址,這樣,用戶個人電腦就成為互聯網上的一個有IP地址的主機了。當用戶通信完畢時,NCP釋放網絡層連接,收回原來分配出去的IP地址,接着,LCP釋放數據鏈路層連接,最后釋放物理層連接。
如下圖所示:

  • 當用戶個人電腦通過調制解調器呼叫路由器時(比如點屏幕上點擊寬帶連接),路由器就能夠檢測到調制解調器發出的載波信號。在雙方建立了物理層連接后,PPP就進入“鏈路建立”狀態(Link Establish),其目的是建立鏈路層的LCP連接。
  • 接下來,LCP開始協商一些配置選項,即發送LCP的配置請求幀,這是一個PPP幀,其協議字段為LCP對應的代碼(oxC021),信息字段包含特定的配置請求。鏈路的另一端可以發送以下幾種響應中的一種:
    (1)配置確認幀(Configure-Ack):所有選項都接受
    (2)配置否認幀(Configure-Nak):所有選項都理解但不能接受
    (3)配置拒絕幀(Configure-Reject):有的選項無法識別或不能接受,需要協商
    Lcp配置選項包括:鏈路上的最大幀長、所使用的鑒別協議的規約(如果有)、不使用PPP幀中的地址和控制字段(因為這兩個字段的值是固定的,沒有任何信息量,可以在PPP幀的首部忽略這兩個字節)。
  • 協商結束后,雙方就建立了LCP鏈路,接着就進入“鑒別”狀態(Authenticate)。在這一狀態,只允許傳送LCP協議的分組、鑒別協議的分組、監測鏈路質量的分組。若使用口令鑒別協議PAP(Password Authentication Protocol),則需要發起通信的一方發送身份標識符和口令。系統可允許用戶重試若干次。如果需要有更好的安全性,則可使用更加復雜的口令握手鑒別協議CHAP(Challenge-Handshake Authentication Protocol)。若鑒別身份失敗,則轉到“鏈路終止”狀態(Link Terminate),若鑒別成功,則進入“網絡層協議”狀態(Network-Layer Protocol)。
  • 在網絡層協議狀態,PPP鏈路的兩端的網絡控制協議NCP根據網絡層的不同協議互相交換網絡層特定的網絡控制分組,現在的路由器都能夠同時支持多種網絡層協議,PPP協議的兩端的網絡層可以運行不同的網絡層協議,但仍然使用同一個PPP協議。如果PPP鏈路上運行的是IP協議,則對PPP鏈路的每一端配置IP協議模塊時(如分配IP地址)就要使用NCP中支持的協議--IP控制協議IPCP(IP Control Protocol)。IPCP分組也封賬成PPP幀(協議字段為OX8021)在PPP鏈路上傳送。在低速鏈路上運行時,雙方還可以協商使用壓縮的TCP和IP首部,以減少在鏈路上發送的比特數。
  • 當網絡層配置完畢后,鏈路就進入可進行數據通信的“鏈路打開”狀態(Link Open)。鏈路的兩端可以向彼此發送分組。兩端還可發送回送請求LCP分組(Echo-Request)和回送回答LCP分組(Echo-Reply),以檢查鏈路的狀態。數據傳輸結束后,可以由鏈路的一端發出終止請求LCP分組(Terminate-Request),請求終止鏈路連接。在收到對方發來的終止確認LCP分組后(Terminate-Ack),轉到“鏈路終止”狀態。如果鏈路出現故障,也會從“鏈路打開”狀態轉到“鏈路終止”狀態。當調制解調器的載波停止后,則回到“鏈路靜止”狀態。
    上圖給出了PPP協議的說明。從設備無鏈路開始,先建立物理鏈路,再建立鏈路控制協議LCP鏈路。經過鑒別后,再建立網絡控制協議NCP鏈路,然后才能交換數據。由此可見,PPP協議已不是純粹的數據鏈路層的協議,它包含了物理層和網絡層的內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM