點對點PPP協議
PPP協議特點
用戶需要連接到某個ISP 才能連接到互聯網,PPP協議即用戶和ISP通信是數據鏈路層的協議。
PPP協議的幾個要求:
簡單 :復雜部分集中在TCP協議中,因此對于數據鏈路層不需要糾錯,不需要序號,不需要流量控制。進行CRC校驗。
封裝成幀:必須指定幀定界符
透明性:有效解決數據中出現幀定界符的狀況
多種網絡協議:PPP協議必須能夠在同一條物理鏈路中支持多種網絡協議。
差錯檢測:PPP協議必須能夠對接受到的幀進行差錯檢測,并丟棄無效的幀
檢測連接狀態:PPP協議必須能夠對鏈路進行按照一定的頻率健康檢查
最大傳送單元:必須規定點對點傳輸的最大單元之(MTU)
網絡層地址協商:PPP協議必須通過一定的方式使得 通信的兩個網絡層知道彼此的網絡層地址
數據壓縮協商:PPP協議提供一種方法協商使用數據壓縮
PPP協議組成
- 一個將IP數據報封裝到串行鏈路的方法。PPP既要支持異步數據鏈( 無奇偶校驗的8比特數據),也要支持面向比特的同步數據鏈
- 一個用來建立、配置和測試數據鏈路鏈接的鏈路控制協議LCP
- 一套網絡控制協議NCP
鏈路控制協議(LCP):
它是PPP協議的一個子集,在PPP通信中,發送端和接收端通過發送LCP包來確定那些在數據傳輸中的必要信息,LCP協議工作內容包括:檢查鏈接設備的標識,決定是接受還是拒絕。確定傳輸中可接收的包字節數。核對雙方配置是否匹配,如果不匹配則斷開鏈接。只有在LCP包鏈接是可用的情況下,數據才能實現網絡通信。
網絡控制協議(NCP):
網絡控制協議(NCP)管理對 NetWare 服務器資源的訪問。NCP 向 NetWare 文件共享協議(即NFSP:NetWare File Sharing Protocol)發送過程調用消息,處理 NetWare 文件和打印資源請求。 NCP 是用于 NetWare 服務器和客戶機之間傳輸信息的主要協議
PPP協議的幀格式
名字段含義
PPP幀的首部和尾部分別為四個字段和兩個字段。
- 首部
首部中的標志字段F(Flag),規定為0x7E(符號0x表示它后面的字符是用十六進制表示的。十六進制的7E的二進制表示是01111110),標志字段表示一個幀的開始。
首部中的地址字段A規定為0xFF(即11111111)。
首部中的控制字段C規定為0x03(即00000011)。
首部中的2字節的協議字段:
(1)當協議字段為0x0021時,PPP幀的信息字段就是IP數據報。
(2)當協議字段為0xC021時,PPP幀的信息字段就是PPP鏈路控制協議LCP的數據。
(3)當協議字段為0x8021時,PPP幀的信息字段就是網絡層的控制數據。
2.信息字段
信息字段的長度是可變的,不超過1500字節
3.尾部
尾部中的第一個字段(2個字節)是使用CRC的幀檢驗序列FCS。
尾部中的標志字段F(Flag),規定為0x7E(符號0x表示它后面的字符是用十六進制表示的。十六進制的7E的二進制表示是01111110),標志字段表示一個幀的結束。
透明傳輸實現
當信息字段中出現和標志字段一樣的比特(0x7E)組合時,就必須采取一些措施使這種形式上和標志字段一言的比特組合不出現在信息字段中
字節填充——PPP使用異步傳輸
當PPP使用異步傳輸時,它把轉移符定義為0x7D,并使用字節填充。
RFC1662規定了如下填充方法:
(1)把信息字段中出現的每一個0x7E字節轉變為2字節序列(0x7D,0x5E)。
(2)若信息字段中出現一個0x7D的字節(即出現了和轉義字符一樣的比特組合),則把轉義字符0x7D轉變為2字節序列(0x7D,0x5D)。
(3)若信息字段中出現ASCII碼的控制字符(即數值小于0x20的字符),則在該字符前面要加入一個0x7D字節,同時將該字符的編碼加以改變。例如,出現0x03(在控制字符中是“傳輸結束”ETX)就要把它轉變為2字節序列的(0x7D,0x31)。
由于在發送端進行了字節填充,因此在鏈路上傳送的信息字節數就超過了原來的信息字節數。但接收端在接收到數據后再進行與發送端字節填充相反的變換,就可以正確地恢復出原來的信息。
零比特填充——PPP使用同步傳輸
零比特填充的具體方法:
(1)在發送端先掃描整個信息字段(通常使用硬件實現,但也可以用軟件實現,但是會慢一些)。
(2)只要發現有5個連續的1,則立即填入一個0。
(3)接收端在收到一個幀時,先找到標志字段F以確定幀的邊界,接著再用硬件對其中的比特流進行掃描,每當發現5個連續1時,就把5個連續1后的一個0刪除,以還原成原來的信息比特流。
)
PPP協議的工作狀態
PPP協議的工作狀態有:鏈路靜止、鏈路建立、鑒別、網絡層協議、鏈路打開、鏈路終止。 當用戶和ISP建立連接過程中,需要建立的連接有:物理鏈路的連接、LCP鏈路的連接(解決LCP配置協商問題)、NCP鏈路的連接(解決NCP配置協商問題)
當用戶PC通過調制解調器呼叫路由器時(通常是在屏幕上用鼠標點擊一個連接按鈕),路由器就能夠檢測到調制解調器發出的載波信號。在雙方建立了物理層連接后,PPP就進入“鏈路建立”(Link Establish)狀態,其目的是建立鏈路層的LCP連接。
這時LCP開始協商一些配置選項,即發送LCP的配置請求幀(Configure-Request)。這是個PPP幀,其協議字段置為LCP對應的代碼,而信息字段包含特定的配置請求。
鏈路的另一端可以發送以下幾種響應中的一種:
(1)配置確認幀(Configure-Ack):所有選項都接受。
(2)配置否認幀(Configure-Nak):所有選項都理解但不能接受。
(3)配置拒絕幀(Configure-Reject):選項有的無法識別或不能接受,需要協商。
LCP配置選項包括鏈路上的最大幀長、所使用的鑒別協議(authentication protocol)的規約(如果有的話),以及不使用PPP幀中的地址和控制字段(因為這兩個字段的值是固定的,沒有任何信息量,可以在PPP幀的首部中省略這兩介字節)。
協商結束后雙方就建立了LCP鏈路,接著就進入“鑒別”(Authenticate)狀態。在這一狀態,只允許傳送LCP協議的分組、鑒別協議的分組以及監測鏈路質量的分組。若使用口令鑒別協議PAP (Password Authentication Protocol),則需要發起通信的一方發送身份標識符和口令。系統可允許用戶重試若干次。如果需要有更好的安全性,則可使用更加復雜的口令握手鑒別協議CHAP (Challenge-Handshake Authentication Protocol)。
若鑒別身份失敗,則轉到“鏈路終止”(Link Terminate)狀態。若鑒別成功,則進入“網絡層協議”(Network-LayerProtocol)狀態。