PPP,點(diǎn)對點(diǎn)協(xié)議修改了SLIP協(xié)議中的所有缺陷便监。 PPP包括以下三個(gè)部分: 1) 在串行鏈路上封裝 I P數(shù)據(jù)報(bào)的方法堪夭。 P P P既支持?jǐn)?shù)據(jù)為 8位和無奇偶檢驗(yàn)的異步模式 (如大多數(shù)計(jì)算機(jī)上都普遍存在的串行接口),還支持面向比特的同步鏈接笙以。 2) 建立犯犁、配置及測試數(shù)據(jù)鏈路的鏈路控制協(xié)議( LCP:Link Control Protocol)储耐。它允許通 信雙方進(jìn)行協(xié)商,以確定不同的選項(xiàng)船万。
3) 針對不同網(wǎng)絡(luò)層協(xié)議的網(wǎng)絡(luò)控制協(xié)議( N C P:Network Control Protocol)體系遣鼓。當(dāng)前 R F C定義的網(wǎng)絡(luò)層有I P瓣颅、O S I網(wǎng)絡(luò)層、D E C n e t以及A p p l e Ta l k譬正。例如, IP NCP允許雙方商定是 否對報(bào)文首部進(jìn)行壓縮,類似于 CSLIP(縮寫詞NCP也可用在TCP的前面)宫补。
RFC 1548[Simpson 1993]描述了報(bào)文封裝的方法和鏈路控制協(xié)議。 RFC 1332[McGregor 1992]描述了針對IP的網(wǎng)絡(luò)控制協(xié)議曾我。
P P P數(shù)據(jù)幀的格式看上去很像 I S O的H D L C(高層數(shù)據(jù)鏈路控制)標(biāo)準(zhǔn)粉怕。圖 1是P P P數(shù)據(jù) 幀的格式。
每一幀都以標(biāo)志字符0x7e開始和結(jié)束抒巢。緊接著是一個(gè)地址字節(jié),值始終是 0xff,然后是一 個(gè)值為0x03的控制字節(jié)贫贝。
接下來是協(xié)議字段,類似于以太網(wǎng)中類型字段的功能。當(dāng)它的值為 0 x 0 0 2 1時(shí), 表示信息 字段是一個(gè) I P數(shù)據(jù)報(bào);值為 0 x c 0 2 1時(shí),表示信息字段是鏈路控制數(shù)據(jù);值為 0 x 8 0 2 1時(shí), 表示 信息字段是網(wǎng)絡(luò)控制數(shù)據(jù)。 CRC字段(或FCS,幀檢驗(yàn)序列)是一個(gè)循環(huán)冗余檢驗(yàn)碼,以檢測數(shù)據(jù)幀中的錯(cuò)誤稚晚。
由于標(biāo)志字符的值是 0 x 7 e,因此當(dāng)該字符出現(xiàn)在信息字段中時(shí), P P P需要對它進(jìn)行轉(zhuǎn)義崇堵。 在同步鏈路中,該過程是通過一種稱作比特填充 (bit stuffing)的硬件技術(shù)來完成的。在異步鏈路中,特殊字符 0 x 7 d用作轉(zhuǎn)義字符客燕。當(dāng)它出現(xiàn)在 P P P數(shù)據(jù)幀中時(shí), 那么緊接 著的字符的第6個(gè)比特要取其補(bǔ)碼,具體實(shí)現(xiàn)過程如下:
1) 當(dāng)遇到字符0x7e時(shí),需連續(xù)傳送兩個(gè)字符: 0x7d和0x5e,以實(shí)現(xiàn)標(biāo)志字符的轉(zhuǎn)義鸳劳。
?2) 當(dāng)遇到轉(zhuǎn)義字符0x7d時(shí),需連續(xù)傳送兩個(gè)字符: 0x7d和0x5d,以實(shí)現(xiàn)轉(zhuǎn)義字符的轉(zhuǎn)義。
?3 ) 默認(rèn)情況下,如果字符的值小于 0 x 2 0(比如,一個(gè) A S C I I控制字符), 一般都要進(jìn)行轉(zhuǎn) 義也搓。例如,遇到字符0x01時(shí)需連續(xù)傳送0x7d和0x21兩個(gè)字符(這時(shí),第 6個(gè)比特取補(bǔ)碼后變?yōu)?1,而前面兩種情況均把它變?yōu)?0)赏廓。
這樣做的原因是防止它們出現(xiàn)在雙方主機(jī)的串行接口驅(qū)動程序或調(diào)制解調(diào)器中, 因?yàn)橛?時(shí)它們會把這些控制字符解釋成特殊的含義。 另一種可能是用鏈路控制協(xié)議來指定是否需要 對這32個(gè)字符中的某一些值進(jìn)行轉(zhuǎn)義傍妒。默認(rèn)情況下是對所有的 32個(gè)字符都進(jìn)行轉(zhuǎn)義幔摸。
與SLIP類似,由于PPP經(jīng)常用于低速的串行鏈路,因此減少每一幀的字節(jié)數(shù)可以降低應(yīng)用 程序的交互時(shí)延。 利用鏈路控制協(xié)議, 大多數(shù)的產(chǎn)品通過協(xié)商可以省略標(biāo)志符和地址字段, 并且把協(xié)議字段由 2個(gè)字節(jié)減少到 1個(gè)字節(jié)颤练。如果我們把 P P P的幀格式與前面的 S L I P的幀格式 進(jìn)行比較會發(fā)現(xiàn), P P P只增加了 3個(gè)額外的字節(jié): 1個(gè)字節(jié)留給協(xié)議字段,另 2個(gè)給 CRC字段使用既忆。另外,使用 IP網(wǎng)絡(luò)控制協(xié)議,大多數(shù)的產(chǎn)品可以通過協(xié)商采用 Van Jacobson報(bào) 文首部壓縮方法(對應(yīng)于 CSLIP壓縮),減小IP和TCP首部長度。
總的來說, PPP比SLIP具有下面這些優(yōu)點(diǎn):
?(1) PPP支持在單根串行線路上運(yùn)行多種協(xié)議, 不只是I P協(xié)議;
(2) 每一幀都有循環(huán)冗余檢驗(yàn);?
(3) 通信雙方可以進(jìn)行 I P地址的動態(tài)協(xié)商(使用 I P網(wǎng)絡(luò)控制協(xié)議);
?(4) 與C S L I P類似,對T C P和I P報(bào)文首部進(jìn)行壓縮;?
(5) 鏈路控制協(xié)議可以 對多個(gè)數(shù)據(jù)鏈路選項(xiàng)進(jìn)行設(shè)置嗦玖。為這些優(yōu)點(diǎn)付出的代價(jià)是在每一幀的首部增加 3個(gè)字節(jié),當(dāng)建 立鏈路時(shí)要發(fā)送幾幀協(xié)商數(shù)據(jù),以及更為復(fù)雜的實(shí)現(xiàn)尿贫。
盡管PPP比SLIP有更多的優(yōu)點(diǎn),但是現(xiàn)在的SLIP用戶仍然比PPP用戶多。隨著產(chǎn)品 越來越多,產(chǎn)家也開始逐漸支持PPP,因此最終PPP應(yīng)該取代SLIP踏揣。