PPP點對點協議分析

2021-08-31 03:42:22 字數 4001 閱讀 9310

ppp(point to point protocol)即點對點協議,為在點對點連線上傳輸多協議資料報提供了乙個標準方法。設計目的主要是用來通過撥號或專線方式建立點對點連線傳送資料,使其成為各種主機、網橋和路由器之間簡單連線的一種共通的解決方案。ppp 最初設計是為兩個對等節點之間的 ip 流量傳輸提供一種封裝協議。在 tcp/ip 協議集中它是一種用來同步調製連線的資料鏈路層協議,替代了原來非標準的第二層協議slip。除了ip以外ppp還可以攜帶其它協議,包括decnet和novell的internet網包交換(ipx)。

三個組成部分:功能:

(1)ppp具有動態分配ip位址的能力,允許在連線時刻協商ip位址;

(2)ppp支援多種網路協議,比如tcp/ip、netbeui、nwlink等;

(3)ppp具有錯誤檢測以及糾錯能力,支援資料壓縮;

(4)ppp具有身份驗證功能。

(5)ppp可以用於多種型別的物理介質上,包括串列埠線、**線、移動**和光纖(例如sdh),ppp也用於internet接入。

標誌衝突:

如果0x7e值出現在幀內部,這時會帶來乙個小問題。它可通過兩種方式來處理,這取決於ppp工作在非同步還是同步鏈路上。

對於非同步鏈路, ppp使用字元填充(也稱為位元組填充)。如果標誌字元出現在幀中其他地方,則用2位元組序列0x7d5e (0x7d稱為「ppp轉義字元」)替換。如果轉義字元本身出現在幀中,則用2位元組序列0x7d5d替換。因此,接收方用0x7e替換接收的0x7d5e,並用0x7d替換接收的0x7d5d0。

在同步鏈路(例如t1線路、t3線路)上, ppp使用位填充。注意,標誌字元的位模式為01111110 (連續6個1的位序列),在除了標誌字元之外的任何地方,位填充在5個連續1之後填充乙個00這樣做意味著,傳送的位元組可能超過8位,但這通常是正常的,因為低層序列處理硬體能去掉填充的位元流,並將它恢復成未填充時的樣子。

缺少長度字段:

由於ppp缺少乙個長度字段,並且序列線路通常不提供幀封裝,所以在理論上對乙個 ppp幀的長度沒有硬性限制。實際上,最大幀大小通常由mru指定。當一台主機指定乙個 mru選項(型別0x01)時,它要求對方不傳送比mru選項提供的值更長的幀。mru值是資料字段的位元組長度,它不計算其他ppp開銷字段(即協議、 fcs、標誌字段)。它的典型值是1500或1492,但也可能多達65535。 pv6操作需要的長度最小為1280。 ppp標準要求具體實現能接收最大1500位元組的幀, mru更多的是建議對方選擇幀大小,而不是硬性限制幀大小。當小分組和大分組在同一條ppp鏈路上交錯傳輸時,較大分組可能占用一條低頻寬鏈路的大部分頻寬,並影響小分組的正常傳輸。這可能導致抖動(延遲變化),對互動式應用 (例如遠端登入和voip)產生負面影響。配置較小的mru (或mtu)有助於緩解這個問題, 但會產生更大的開銷。

lcp的主要工作是使一條點到點鏈路達到最低要求。

配置訊息使鏈路兩端開始基本配置過程,並建立商定的選項。

終止訊息用於在完成後清除一條鏈路。lcp也提供了前面提到的 一些附加功能。

回送請求/應答訊息可由lcp在一條活躍鏈路上隨時交換,以驗證對方的操作。

放棄請求訊息可用於效能測試,指示對方丟棄沒有響應的分組。

標識和剩餘時間訊息用於管理,了解對方的系統型別,指出鏈路保持建立的時間(例如出於管理或安全原因)。

lcp的ppp協議字段值始終是0xc021它不能用pfc刪除,以免產生歧義。

**:佔8位,給出了請求或響應的操作型別:配置請求(0x01)、配置接受ack (0x02)、配置部分拒絕nack (0x03)、配置完全拒絕reject(0x04)、終止請求(0x05 )、終止ack(0x06)、**reject(0x07)、協議reject(0x08 )、回送請求(0x09)、回送應答(0x0a)、放棄請求(0x0b)、標識(0x0c)和剩餘時間(0x0d)。ack訊息通常表明接受一組選項, nack訊息用建議選項表明部分拒絕。reject訊息完全拒絕乙個或多個選項。

標識:佔8位,由lcp請求幀的傳送方提供的序列號,並隨著每個後續訊息進行遞增。

長度:佔16位,給出了lcp分組的位元組長度,它不能超過鏈路的最大接收單元(mru)。注意,長度欄位是lcp協議的一部分,ppp協議通常不提供這個字段。  

可用於將多條點到點鏈路聚合為一條鏈路。這種想法與鏈路聚合相似,並被用於多個電路交換通道(例如isdnb通道)的聚合。mp包含乙個特殊的lcp選項,表示支援多鏈路,以及乙個用於多鏈路上ppp幀分片與重組的協商協議。一條聚合鏈路(稱為乙個**)可作為一條完整的虛擬鏈路來操作,幷包含自已的配置資訊。鏈路**由大量成員鏈路組成。每個成員鏈路可能有自已的選項集。

實現mp的典型方法是使分組輪流經過備個成員鏈路傳輸。這種方法稱為銀行櫃員算 法,它可能導致分組重新排序,可能為其他協議帶來不良的效能影響。 (例如,雖然tcp/ ip可以正確處理重新排序後的分組,但也可能不如沒有重新排序處理得好。) mp在每個分組中新增乙個2 - 4位元組的序列頭部,而遠端mp接收方的任務是重建正確的順序。

頭部支援2種格式:短頭部(2位元組)和長頭部(4位元組)。 lcp的短序列號選項(型別18)用於選擇使用的格式。如果乙個幀沒有被分片,但使用這種格式傳輸,則b和e位都被置位,表明該分片是第乙個和最後乙個(即它是整個幀)。否則,第乙個分片的b、e位組合被設定為10,最後乙個分片的b、e位組合被設定為01 ,它們之間的所有分片被設定為00。序列號給出相對第乙個分片的分組號偏移量。 

對於ipv4, ncp被稱為ip控制協議(ipcp)。對於ipv6, ncp被稱為ipv6cp。在lcp完成鏈路建立和認證之後,該鏈路每端都進入網路狀態,並使用乙個或多個ncp(例如典型的是乙個ipcp)進行網路層的相關協商。

ipcp (針對ipv4的標準ncp)可用於在一條鏈路上建立ipv4連線,以及配置vinjacobson頭部壓縮(vj壓縮)。 ipcp分組在ppp狀態機進人網路狀態之後交換。ipcp分組使用與lcp相同的分組交換機制和分組格式,除非協議欄位被設定為0x8021,並且**欄位被限制在範圍0 - 7。**欄位的值對應於訊息型別:特定**商配置請求、配置ack、配置reject、終止請求、終止ack和**reject。 ipcp可協商一系列選項,包括ip壓縮協議(2)、 ipv4位址(3)和移動ipv4 (4)。其他選項可用於獲得主要和次要的網域名稱伺服器。

ipv6cp使用與lcp相同的分組交換機制和分組格式,但它有兩種不同的選擇:介面識別符號和ipv6壓縮協議。介面識別符號選項用於傳輸乙個64位的ⅱd值,它作為形成乙個鏈路本地ipv6位址的基礎。由於它僅在本地鏈路上使用,因此不需要具有全球唯一性。這通過在ipv6位址的高位使用標準鏈路本地字首,在低位設定某種功能的介面識別符號來實現。

ppp是相對較慢的撥號數據機使用的協議。因此,針對ppp鏈路上 壓縮後傳送資料已提出一些方法。壓縮型別是不同的,無論是數據機硬體支援的壓縮型別(例如v42bis、 v44),還是我們以後討論的協議頭部壓縮。目前,有幾個壓縮選項可選。可在一條ppp鏈路的兩個方向做出選擇, lcp可協商乙個使壓縮控制協議(ccp)生效的選項。ccp的作用就像ncp,只不過在lcp鏈路建立交換階段指明壓 縮選項時才開始處理配置壓縮細節。

ccp在行為上很像ncp,僅在鏈路進入網路狀態時協商。它使用與lcp相同的分組交換過程和格式(除協議欄位被設定為0x80fd之外),另外還有一些特殊選項,並對常見的**字段值(1~ 7)定義了2個新的操作:復位請求(0x0e)和復位確認(0x0f)。如果在一 個壓縮幀中檢測到乙個錯誤,復位請求可用於要求對方復位壓縮狀態(例如字典、狀態變數、 狀態機等)。在復位後,對方響應乙個復位確認。 

乙個或多個壓縮幀可作為乙個ppp幀的一部分(即包括lcp資料和可能的填充部分)。 壓縮幀攜帶的協議字段值為0x00fd,但是如何指明存在多個壓縮幀,這依賴於使用的特定壓縮演算法。當ccp與mp結合使用時,既可用於乙個**,也可用於多條成員鏈路的某些組合。如果只用於成員鏈路,協議字段設定為0x00fb (單個的鏈路壓縮資料報)。

PPP 點對點協議 網路大典

點對點協議 ppp 為基於點對點連線的多協議自定址資料報的傳輸提供了乙個標準方法。ppp 最初設計是為兩個對等結構之間的 ip 流量的傳輸提供一種封裝協議。在 tcp ip 協議集中它是一種關於同步調製連線的資料鏈路層協議 osi 模式中的第二層 替代了原非標準第二層協議,即 slip。除了 ip ...

3 2點對點協議PPP

對於點對點鏈路,ppp是目前使用最廣泛的資料鏈路層協議。ppp就是使用者計算機和isp進行通訊時所使用的資料鏈路層協議。組成ppp協議的三個部分 1 乙個將ip資料報封裝到序列鏈路的方法。ppp既支援非同步鏈路 也支援面向位元的同步鏈路。ps 參考 同步傳輸和非同步傳輸 參考 網路程式設計中同步傳輸...

PPP協議全面分析

什麼是ppp協議?用於何種通道的鏈路層控制?ppp的工作原理。ppp即使用者計算機和isp進行通訊時所使用的資料鏈路層協議。用於點對點通道。工作原理 1 當使用者撥號接入isp 時,路由器的數據機對撥號做出確認,並建立一條物理連線。2 pc 機向路由器傳送一系列的lcp 分組 封裝成多個 ppp 幀...