鏈路層PPP協議


在博客上看到很多關於PPP協議的總結,寫的都很官方,感覺都是從書上面抄來的,我今天就加入自己的理解:

我們都知道,數據鏈路層是兩個網絡節點之間的通信,實際上局域網內的通信也屬於數據鏈路層。因為並沒有通過路由器進入另一個網絡,所以不屬於網絡層。

  PPP協議特點:

  1、簡單

  PPP協議簡單,只是進行幀的發送和檢錯,並不進行糾錯、序號和流量控制,它並不提供可靠的數據服務。

  2、封裝成幀

  PPP協議規定特殊的字符作為定界符,並將其加到一個幀的開始和結束,並在接收端檢測定界符來判斷一個幀的結束和開始。

  3、透明性

  PPP協議還必須保證數據傳輸的透明性。這就是說,如果數據中碰巧出現了和幀定界符一樣的彼特組合時,就要采取有效的措施來解決這個問題。

  4、多種網絡層協議

  PPP協議必須能夠在同一條物理鏈路上同時支持多種網絡層協議,不如IP和IPX等的運行。當點對點鏈路所連接的是局域網或者路由器時,PPP協議必須支持所在的鏈路所連接的局域網或路由器上運行的各種網絡層協議。

  5、多種類型鏈路

  除了要支持多種網絡層的協議外,PPP還必須能夠在多種類型的鏈路上運行。例如,串行的或並行的,同步的或者異步的,低速的或高速的,電的或光的,交換的或非交換的點對點鏈路。

  6、差錯檢驗

  PPP協議必須能夠對接收端收到的幀進行檢測,並立即丟掉有差錯的幀。若在數據鏈路層不進行差錯檢測,那么已出現的差錯的無用幀就還要在網絡中繼續傳送,因而會白白浪費許多寶貴的網絡資源。

  7、檢測連接狀態

  PPP協議必須有一種機制能夠及時自動檢測出鏈路是否處於正常的狀態。當出現故障的鏈路隔了一段時間后又重新恢復了正常工作時,就特別需要這種及時檢測的功能。

  8、最大傳送單元

  PPP協議必須對每一種類型的點對點鏈路設置最大的傳送單元MTU的標准默認值。這樣做的目的是為了促進各種實現之間的互操作性。如果高層協議發送的分組過長並超過了MTU的數值,PPP協議就要丟棄這樣的幀,並且返回錯誤。需要強調的是,MTU是數據鏈路層的幀可以載荷的數據部分的最大長度,而不是幀的總長度。

  9、網絡層地址協商

  PPP協議必須提供一種機制是通信的兩個網絡層的實體通過協商知道能夠配置彼此的網絡層地址。協商的算法應盡可能的簡單,並且能夠在所有的情況下得出協商的結果。這對撥號連接的鏈路特別的重要,因為僅僅在鏈路層建立了連接而並不知道對方網絡層地址時,還不能保證網絡層能夠傳遞分組。

  10、數據壓縮協商

  PPP協議必須提供一種方法來協商使用數據壓縮的算法。但是PPP協議並不要求將數據壓縮算法進行標准化。

  PPP協議的組成

  PPP協議的組成由三部分組成:

  (1)一個將IP數據報封裝到串行鏈路的方法。PPP協議既支持異步鏈路(無奇偶的8比特數據),也支持面向比特的同步鏈路。IP數據報在PPP幀中就是其信息部分,這個信息部分的長度受最大傳送單元MTU的限制。(這一部分就是將網絡層來的IP數據報,加上首部和尾部,在鏈路間傳輸)

  (2)一個用來建立、配置和測試數據鏈路連接的鏈路控制協議LCP(Link Control Protocol),通信的雙發可以協商一些選項。建立物理鏈路,只有在建立物理鏈路的前提下,才能進行相應的配置)

  (3)一套網絡控制協議NCP,其中每一個協議支持不同的網絡層協議(配置網絡IP地址,之后便可以進行正常的通信了)

  1、PPP協議的幀的格式

  字段的意義

  

  PPP幀的格式如圖所示,PPP幀的首部和尾部分別有四個字段和兩個字段。

  首部的第一個字段和尾部的最后一個字段是標志字段F,規定為0x7E,標志字段表示一個幀的開始和結束,標志字段就是幀的定界符。連續兩幀之間只需要一個標志字段。(我的理解就是如果我要發送兩個連續的幀的話,我發送的第二個幀的尾部定界符是第二個幀的首部定界符)如果出現兩個連續的標志字段,那么就表示這個幀是個空的幀,應當丟棄。首部中的地址字段A規定為0xFF,控制字段為0x03(不知道多加這兩個字節有什么意義,完全沒必要啊,不知道為什么出現這種情況)

  PPP首部的第四個字段是2個字節的協議字段,當協議字段為0x0021時,PPP幀的信息字段就是IP數據報,當為0xC021時,則信息字段是PPP鏈路控制協議LCP的數據,而0x8021表示這個網絡層的控制數據。(PPP協議的三個功能,后面的信息字段代表什么類型的信息,這個字段就填寫什么,實際上,這種工作模式在單片機里面很常見)

  信息字段的長度是可變的,但是不超過1500字節。

  尾部的第一個字段是二字節,是使用CRC的幀檢驗序列FCS。

  2.字節填充

  當信息字段中出現和標志字段一樣的比特(0x7E)組合時,即必須采取一些措施使這種形式上和標志字段一樣的比特組合不出現在信息字段中。

  當PPP使用異步傳輸時,它把轉義符定義為0x7D,並使用字節填充,RFC1662規定的的填充方法:

  (1)把信息字段中出現的么一個0x7E字節轉變為2字節序列(0x7D,0x5E)。

  (2)若信息中出現一個0x7D的字節,則把它轉化為0x7D,0x5D

  (3)若信息中出現了ASCII碼中的控制字符,即數值小於0x20的字符,則在該字符前面要加入一個0x7D字節,同時將該字符的編碼加以改變。例如,出現0x03,在控制字符中是傳輸結束ETX,需要將它轉變為2字節序列0x7D,0x31

  由於在發送端進行了字節的填充,因此在鏈路上傳送的信息字節數就超過了原來的信息字節數,在接收端收到的數據后再進行與發送端字節填充相反的變換,就可以正確的恢復原來的信息了。

  零比特填充

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

  零比特填充的具體做法是:在發送端,先掃描整個信息字段,通常使用硬件來實現,但也可應軟件來實現,軟件實現相對來說較慢些。只要發現有5個連續的1,就立即填充一個0,經過這種零比特填充后,就保證在信息字段中不會出現6個連續的1。接收端在收到一個幀時,先找到標志字段F以確定一幀的邊界,接着再用硬件對其中的比特流進行掃描,每當發現五個連續的1時,就把這五個連續的1后面的0刪除,以還原原來的信息比特流。這樣就保證了透明傳輸,在所傳送的數據比特流中可以傳送任意組合的比特流,而不會引起對真邊界錯誤判斷。

  以上兩種填充都是為了保證PPP協議的透明性

  4、PPP協議的工作狀態

  當用戶PC機撥號接入ISP后,就建立了一條從用戶PC機到ISP的物理連接,這時,用戶PC機向ISP發送一序列的LCP分組,封裝成PPP幀,以便建立LCP連接。這些分組及其響應選擇了將要使用的一些PPP參數。接着還要進行網絡層配置,NCP給新接入的用戶PC機分配了一個臨時的IP地址,這樣,用戶PC機就稱為了因特網上的一個有IP地址的主機了。當用戶通信完畢后,NCP釋放網絡層的連接,回收原來分配出去的IP地址,接着,LCP釋放數據鏈路層連接,最后釋放的是物理層的連接。

  當用戶通信完畢時,NCP釋放網絡層連接,收回原來分配出去的IP地址,接着LCP釋放數據鏈路層連接,最后釋放的物理層的連接。

  

  PPP鏈路的起始和終止狀態都是鏈路靜止狀態,這種狀態下,用戶PC機和ISP的路由器之間並不存在物理層的連接。

  當用戶的PC機通過調制解調器呼叫路由器時,路由器就能夠檢測到調制解調器發出的載波信號。在雙方建立了物理層連接后,PPP就進入了鏈路建立的狀態,其目的是建立鏈路層的LCP連接。

  這時LCP開始協商一些配置選項,即對發送LCP的配置請求幀。這是個PPP幀,其協議字段置為LCP對應的代碼,而信息字段包含特定的配置請求。鏈路的另一端可以發送以下的相應:

  1.配置確認幀-所有選項都接收

  2.配置否認幀-所有選項都理解但是不能接收。

  3.配置拒絕幀-選項有的無法識別或不能接受,需要協商。

  LCP配置選項包括鏈路上的最大幀長,所使用的鑒別協議的規約,以及不適用PPP幀中的地址和控制字段。協商結束后雙方就建立了LCP鏈路,接着進入“鑒別“狀態,在這一狀態下,只允許傳送LCP分組、鑒別協議的分組以及檢測鏈路質量的分組。若使用口令鑒別協議,則需要發起通信的一方發送身份標識符和口令。系統允許用戶重試多次。如果需要更好的安全性,則可使用復雜的口令握手鑒別協議,若身份鑒別失敗,則轉到鏈路終止狀態,若鑒別成功,則進入到網絡層協議狀態。

  在網絡層協議狀態,PPP鏈路的兩端的網絡控制協議NCP根據網絡層的不同協議互相交換網絡層特定的網絡控制分組。這個步驟很重要,因為現在的路由器都能夠同時支持多種的網絡層協議。總之,PPP協議的兩端可以運行不同的網絡層協議,但仍然可以使用同一個PPP協議進行通信。如果在PPP鏈路上運行的是IP協議,則對PPP鏈路的每一段配置IP協議模塊,IPCP分組也封裝成PPP幀在PPP鏈路上傳送。在低速鏈路上運行時,雙方還可以協商使用壓縮的TCP和IP首部,以減少在鏈路上發送的比特數。當網絡層配置完畢后,鏈路就進入可進行數據通信的鏈路打開狀態。鏈路的兩個PPP端點可以彼此向對方發送分組。兩個PPP端點還可以發送會送請求LCP分組和回送回答LCP分組,以檢查鏈路的狀態。數據傳輸結束后,可以由鏈路的一段發送終止請求LCP分組請求終止鏈路連接,在接收到對方發送來的終止確認LCP分組后,就轉到鏈路終止狀態。如果鏈路出現故障,則也會從鏈路打開到鏈路終止狀態。當調制解調器的載波結束后,則回到鏈路靜止狀態。

 其實以上過程看起來很復雜,但是如果和我們的生活聯系起來,就會變得很簡單,我們大家都有上網的經歷,首先你要在你的電腦上插上網線,然后打開電腦上的登錄軟件,輸入賬號和密碼,點擊連接,等待連接。。。

  當你點擊了連接之后,實際上就是物理層建立連接的過程,首先電腦會確定你的網線是不是連接好的,物理連接沒有問題,進行下一步

  電腦開始向ISP發送LCP,ISP是否接受請求,並且驗證你的身份,身份正確,接受你的請求,進入下一步

  網絡層根據實際情況,配置電腦IP地址,在Windows下,你也可以通過設置,來自己設置電腦的IP地址,不接受網絡層的隨機分配,而這些都是通過發送NCP來實現的

  

 


免責聲明!

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



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