由于串行線路的速率通常較低(19200 b/s或更低),而且通信經常是交互式的(如Telnet和Rlogin,二者都使用TCP),因此在SLip線路上有許多小的TCP分組進行交換。為了傳送1個字節的數據需要20個字節的IP首部和20個字節的TCP首部,總數超過40個字節(19.2節描述了Rlogin會話過程中,當敲入一個簡單命令時這些小報文傳輸的具體情況)
既然承認這些性能上的缺陷,于是人們提出一個被稱作CSLIP(即壓縮SLIP)的新協議,它在RFC 1144[Jacobson 1990a]中被具體描述。CSLIP一般能把上面的40個字節壓縮到3或5個字節。它能在CSLIP的每一端維持多達16個TCP連接,并且知道其中每個連接的首部中的某些字段一般不會發生變化。對于那些發生變化的字段,大多數只是一些小的數字和的改變。這些被壓縮的首部大大地縮短了交互響應時間。
現在大多數的SLIP產品都支持CSLIP。作者所在的子網(參見封面內頁)中有兩條SLIP鏈路,它們均是CSLIP鏈路。
PPP,點對點協議修改了SLIP協議中的所有缺陷。PPP包括以下三個部分:
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[Simpson 1993]描述了報文封裝的方法和鏈路控制協議。RFC 1332[McGregor1992]描述了針對IP的網絡控制協議。
PPP數據幀的格式看上去很像ISO的HDLC(高層數據鏈路控制)標準。圖2 - 3是PPP數據幀的格式。
每一幀都以標志字符0x7e開始和結束。緊接著是一個地址字節,值始終是0xff,然后是一個值為0x03的控制字節。
接下來是協議字段,類似于以太網中類型字段的功能。當它的值為0x0021時,表示信息字段是一個IP數據報;值為0xc021時,表示信息字段是鏈路控制數據;值為0x8021時,表示信息字段是網絡控制數據。
CRC字段(或FCS,幀檢驗序列)是一個循環冗余檢驗碼,以檢測數據幀中的錯誤。
由于標志字符的值是0x7e,因此當該字符出現在信息字段中時, PPP需要對它進行轉義。在同步鏈路中,該過程是通過一種稱作比特填充(bit stuffing )的硬件技術來完成的[Tanenbaum1989]。在異步鏈路中,非凡字符0x7d用作轉義字符。當它出現在PPP數據幀中時,那么緊接著的字符的第6個比特要取其補碼,具體實現過程如下:
1) 當碰到字符0x7e時,需連續傳送兩個字符:0x7d和0x5e,以實現標志字符的轉義。
2) 當碰到轉義字符0x7d時,需連續傳送兩個字符:0x7d和0x5d,以實現轉義字符的轉義。
3 ) 默認情況下,假如字符的值小于0x20(比如,一個ASCII控制字符),一般都要進行轉義。例如,碰到字符0x01時需連續傳送0x7d和0x21兩個字符(這時,第6個比特取補碼后變為1,而前面兩種情況均把它變為0)。
這樣做的原因是防止它們出現在雙方主機的串行接口驅動程序或調制解調器中,因為有時它們會把這些控制字符解釋成非凡的含義。另一種可能是用鏈路控制協議來指定是否需要對這32個字符中的某一些值進行轉義。默認情況下是對所有的32個字符都進行轉義。
與SLIP類似,由于PPP經常用于低速的串行鏈路,因此減少每一幀的字節數可以降低應用程序的交互時延。利用鏈路控制協議,大多數的產品通過協商可以省略標志符和地址字段,并且把協議字段由2個字節減少到1個字節。假如我們把PPP的幀格式與前面的SLIP的幀格式(圖2-2)進行比較會發現, PPP只增加了3個額外的字節:1個字節留給協議字段,另2個給CRC字段使用。另外,使用IP網絡控制協議,大多數的產品可以通過協商采用Van Jacobson報文首部壓縮方法(對應于CSLIP壓縮),減小IP和TCP首部長度。
總的來說, PPP比SLIP具有下面這些優點: (1) PPP支持在單根串行線路上運行多種協議,不只是IP協議;(2) 每一幀都有循環冗余檢驗; (3) 通信雙方可以進行IP地址的動態協商(使用IP網絡控制協議); (4) 與CSLIP類似,對TCP和IP報文首部進行壓縮; (5) 鏈路控制協議可以對多個數據鏈路選項進行設置。為這些優點付出的代價是在每一幀的首部增加3個字節,當建立鏈路時要發送幾幀協商數據,以及更為復雜的實現。
盡管PPP比SLIP有更多的優點,但是現在的SLIP用戶仍然比PPP用戶多。隨著產品越來越多,產家也開始逐漸支持PPP,因此最終PPP應該取代SLIP。
新聞熱點
疑難解答