PPP,點對點協議修改了SLIP協議中的所有缺陷。包括以下三個部分:
1在串行鏈路上封裝IP數據報的方法。PPP既支持數據爲8位和無奇偶檢驗的異步模式(如大多數計算機上都普遍存在的串行接口),還支持面向比特的同步鏈接。
2建立、配置及測試數據鏈路的鏈路控制協議(LCP:Link Control Protocol)。它允許通信雙方進行協商,以確定不同的選項。
3 針對不同網絡層協議的網絡控制協議(NCP:Network Control Protocol)體系。當前RFC定義的網絡層有IP、OSI網絡層、DECnet以及AppleTalk。例如,IP NCP允許雙方
商定是否對報文首部進行壓縮,類似於CSLIP(縮寫詞NCP也可用在TCP的前面)。
RFC 1548描述了報文封裝的方法和鏈路控制協議。
RFC 1332描述了針對IP的網絡控制協議。
PPP數據幀的格式看上去很像ISO的HDLC(高層數據鏈路控制)標準。下圖是PPP數據幀的格式:
每一幀都以標誌字符0x7e開始和結束
地址字節:值是0xff
控制字節:值爲0x03
協議字段:類似於以太網中類型字段的功能。
當它的值爲0x0021時,表示信息字段是一個IP數據報
值爲0xc021時,表示信息字段是鏈路控制數據
值爲0x8021時,表示信息字段是網絡控制數據
CRC字段(或FCS,幀檢驗序列)是一個循環冗餘檢驗碼,以檢測數據幀中的錯誤。
由於標誌字符的值是0x7e,因此當該字符出現在信息字段中時,PPP需要對它進行轉義。
在同步鏈路中,該過程是通過一種稱作比特填充(bit stuffing)的硬件技術來完成的。
在異步鏈路中,特殊字符0x7d用作轉義字符。
當它出現在PPP數據幀中時,那麼緊接着的字符的第6個比特要取其補碼,具體實現過程如下:
1當遇到字符0x7e時,需連續傳送兩個字符:0x7d和0x5e,以實現標誌字符的轉義。
2當遇到轉義字符0x7d時,需連續傳送兩個字符:0x7d和0x5d,以實現轉義字符的轉義。
3默認情況下,如果字符的值小於0×20(比如,一個ASCII控制字符),一般都要進行轉義。
例如,遇到字符0×01時需連續傳送0x7d和0×21兩個字符(這時,第6個比特取補碼後變爲1,而前面兩種情況均把它變爲0)。
這樣做的原因是防止它們出現在雙方主機的串行接口驅動程序或調制解調器中,因爲有時它們會把這些控制字符解釋成特殊的含義。另一種可能是用鏈路控制協議來指定是否需
要對這32個字符中的某一些值進行轉義。默認情況下是對所有的32個字符都進行轉義。
與SLIP類似,由於PPP經常用於低速的串行鏈路,因此減少每一幀的字節數可以降低應用程序的交互時延。
利用鏈路控制協議,大多數的產品通過協商可以省略標誌符和地址字段,並且把協議字段由2個字節減少到1個字節。
如果我們把PPP的幀格式與前面的SLIP的幀格式進行比較會發現,PPP只增加了3個額外的字節:1個字節留給協議字段,另2個給CRC字段使用。
另外,使用IP網絡控制協議,大多數的產品可以通過協商採用Van Jacobson報文首部壓縮方法(對應於CSLIP壓縮),減小IP和TCP首部長度。
總的來說,PPP比SLIP具有下面這些優點:
1PPP支持在單根串行線路上運行多種協議,不只是IP協議
2 每一幀都有循環冗餘檢驗
3 通信雙方可以進行IP地址的動態協商(使用IP網絡控制協議)
4 與CSLIP類似,對TCP和IP報文首部進行壓縮
5 鏈路控制協議可以對多個數據鏈路選項進行設置
爲這些優點付出的代價是在每一幀的首部增加3個字節,當建立鏈路時要發送幾幀協商數據,以及更爲複雜的實現。