深入理解計算機網絡讀書筆記(五)

第五章 數據鏈路層

數據鏈路層的作用:在原始的、有差錯的物理傳輸線路的基礎上,采取差錯檢測、差錯控制與流量控制等方法,將有差錯的物理線路改進成邏輯上無差錯的數據鏈路,以便向網絡層提供高質量的服務。

5.1 數據鏈路層基礎

物理層上構建的是物理鏈路,在數據鏈路層上構建的是邏輯鏈路或者數據鏈路。

  • 為何除物理層外還需要一個數據鏈路層來構建數據傳輸通道?
    一是由于物理層傳輸介質的多樣性,通信規程也各不相同,性能不穩定,而數據鏈路層中構建的邏輯鏈路不考慮不同物理鏈路上傳輸介質及其通信規程上的區別,只從邏輯意義上構建一條性能穩定、不受傳輸介質類型影響的邏輯數據傳輸通道。
    再一個原因是,物理層按位傳輸數據,傳輸效率低下,容易出現傳輸差錯。而數據鏈路層以幀為單位進行傳輸的,一個幀通常包含數千個比特位,傳輸效率提高,不容易出錯。
  • 數據鏈路層結構
    在OSI/RM和TCP/IP體系結構中,數據鏈路層就一層,而在局域網體系結構中數據鏈路層可細分為邏輯鏈路控制(Logical Link Control,LLC)子層和介質訪問控制(Medium Access Control,MAC)子層。MAC子層的主要解決多路通信的介質爭用和尋址,適用于廣播型鏈路和點對多點鏈路。MAC子層接受物理層的服務,為LLC子層服務。
    注:SAP(Service Access Point,服務訪問點):簡單的說就是上層訪問相鄰下層所提供服務的點,SAP是鄰層實體(實體即對應層的邏輯功能)間實現相互通信的邏輯接口,位于兩層邊界處。

5.2 數據鏈路層主要功能及實現原理

數據鏈路層(LLC子層)的主要功能:數據鏈路管理、封裝成幀、透明傳輸、差錯控制。

  • 數據鏈路管理
    (1)數據鏈路層提供的服務類型
    數據鏈路層提供的服務類型分為有確認的面向連接服務、有確認的無連接服務、無確認的無連接服務。前者稱為面向連接服務,后面兩者稱為無連接服務。
    有確認的面向連接服務必須先建立好雙方通信連接且等待對方確認后才提供服務。有確認的面向連接服務分為數據鏈路建立、數據傳輸、數據鏈路釋放三個階段。大多數廣域網中通信子網的數據鏈路層協議采用有確認的面向連接服務,如SLIP(串行線路協議)、PPP(點對點協議)、PPPoE(基于以太網的點對點協議)、HDLC(高級數據鏈路控制)協議等。
    有確認的無連接服務不需要在數據傳輸結束后釋放數據鏈路,接收端在接收到的每一個數據幀時都向發送端確認。應用于:令牌環網、令牌總線網、各種無線通信系統。
    無確認的無連接服務無須先在通信雙方建立通信連接,傳輸時不要求接收端對所接收到的每一個數據幀進行確認。它是建立在可靠的通信線路基礎之上的,所以數據傳輸仍然是非常可靠的。應用于:以太網中所使用的各種以太網協議。
    (2) 數據鏈路管理功能
    數據鏈路管理功能指鏈路連接的建立、維持和釋放過程。在多個站點共享同一物理信道的情況下,如何在要求通信的站點間分配和管理信道也屬于數據鏈路層管理功能的范疇。
  • 數據幀封裝和透明傳輸
    數據鏈路層的數據幀封裝功能包括將來自網絡層的數據分組封裝成數據幀和將來自物理層的比特流組裝成數據幀。
    (1)數據包的幀封裝原理
    數據包到達數據鏈路層后加上數據鏈路層的協議頭和協議尾就構成了一個數據幀。在每個幀的前部加上一個幀頭部,在幀的結尾處加上一個幀尾部,把網絡層的數據包作為幀的數據部分,就構成了一個完整幀。
    (2)比特流的幀組裝及透明傳輸原理
    接收端的物理層把比特流向數據鏈路層傳輸,數據鏈路層將比特流封裝成數據幀。比特流的幀組裝也即幀同步問題。
    幀同步:使接收端的數據鏈路層對從物理層傳輸而來的一串串比特流以幀為單位進行區分。
    (3)幀同步方法
    常用的幀同步方法:字節計數法、字符填充的首尾定界符法、比特填充的首尾定界符法、違法編碼法。
    字節計數法:以一個特殊字符代表一個幀的起始,并以一個專門的字段來標識當前幀內字節數的幀同步方法。典型:DEC公司的DDCMP(Digital DataCommunications Message Protocol,數字數據通信報協議),SOH字段代表一個幀的起始,COUNT標識當前幀內字節數,NUM標識幀的順序編號
    DDCMP

    字符填充的首尾定界符法:用一些特定的控制字符來定界一個幀的起始與結束的幀同步方法。例如:IBM的BSC協議,頭部以一個或多個同步字符“SYN”標記數據塊的開始;尾部用字符“ETX”標記數據決的結束。
    BSC幀示例

    比特填充的首尾定界符法:幀頭和幀尾各插入一個特定的比特串來標識一個數據幀的起始與結束,幀頭、幀尾特定比特串稱為幀標志符。為了避免在信息位中出現的與幀起始和結束標志符相似的比特串時被誤判為幀的首、尾標志,采用了比特填充的方法,例如:傳輸的數據幀為01101111110001,特定比特串01111110,比特填充后(11111后加0),實際傳送的是01111110 011011111010001 01111110。接受方收到數據后,首先去掉兩端的特定模式字符,然后在每收到連續5個1的比特位后自動刪去其后所跟的0,恢復原始信息。比特填充幀同步方式易于硬件實現,性能優于字符填充方式。典型代表是ISO的HDLC協議。
    違法編碼法,在物理層采用特定的比特編碼方法,例如,曼徹斯特編碼方法中將1編碼成高-低電平對,將0編碼成低-高電平對,高-高電平對和低-低電平對在數據比特中是違法的,借用這些違法編碼序列來定界幀的起始與終止。違法編碼法不需要任何填充技術,便能實現數據的透明性,但它只適用于采用冗余編碼的特殊編碼環境。
  • 差錯控制
    差錯控制功能,包括發現差錯的能力和糾正錯誤的能力。
    (1)差錯檢測:通過對差錯編碼進行校驗來實現,常見的校驗方法有奇偶校驗碼(Parity Check Code,PCC)、循環冗余校驗(Cyclic Redundancy Check,CRC)兩種,統稱為檢錯碼。
    (2)差錯糾正:對于面向字符的異步傳輸,包括反饋檢測法及自動重發請求法。
    反饋檢測法在接收端收完一幀數據后,向發送端發送回所接收到的完整數據幀,由發送端通過與原始發送的幀進行比較來判斷接收端是否正確接收了對應幀。如果錯誤,發送端向接收端發送一個DEL字符及相應的幀信息,提示接收端刪除對應的幀,重發該幀;否則表示接收端已正確接收了對應的幀,不重發對應的幀。為了解決數據丟失導致的錯誤,數據發送時引入計時器(Timer)來限定接收端發回反饋信息的時間間隔。當發送端發送一幀數據的同時啟動計時器,若計時器超時(Timeout),則可認為傳的對應幀已出錯,或丟失,繼而發送端重新發送對應的數據幀。缺點:數據在信道中往返傳輸,傳輸效率低。
    自動重發請求法(ARQ法)原理:發送端將要發送的數據幀附加冗余檢錯碼(如前面介紹的PCC、CRC碼)一起發送,接收端則根據檢錯碼對數據幀進行錯誤檢測,若錯誤,就返回請求重發的響應,發送端收到重發請求,重新傳送數據幀。
  • 流量控制
    流量控制指發送端的數據發送速度與接收端的數據接收速度和線路上的承載速率相匹配,否則會造成數據在傳輸過程中的丟失。數據鏈路層中流量控制的方案包括:基于反饋的流量控制方案,基于速率的流量控制方案。
    (1)基于反饋的流量控制方案
    基于反饋的流量控制方案指接收端在接收到一個數據幀后,要向發送端發送一個確認幀,表示發送端可以繼續向它發送數據了。
    (2)基于速率的流量控制方案
    基于速率的流量控制方案是基于窗口滑動機制的速率控制方案,它規定發送端一次可以發送多少個數據幀,限制了發送端的數據傳輸速率,而無須接收端發回確認幀。

5.3 差錯控制方案

差錯控制的差錯糾正方案包括反饋檢測法和自動重發請求法兩種。也有一些具有自動糾錯功能的編碼,稱為糾錯碼(前向糾錯碼),如海明碼。

  • 自動重發法中的冗余檢錯碼
    (1)奇偶校驗碼
    奇偶校驗碼(PCC)是奇校驗碼和偶校驗碼的統稱。原理:原信息代碼的最后一位用于奇校驗或偶校驗的代碼,最終的幀代碼由n-1位信元碼和1位校驗碼組成,使得幀代碼中1的總個數為奇數(奇校驗)或偶數(偶校驗)。奇偶校驗方法只能檢查單個碼元錯誤,檢錯能力差,只適用于誤碼率較低的環境,如用于以太局域網中、用于磁盤的數據存儲中等。
    (2)循環冗余校驗碼(CRC)
    原理:要發送的幀加上一個校驗碼(二進制序列),生成一個新幀發送給接收端,使得所生成的新幀能整除特定數。接收端把接收到的新幀除以該特定除數。如果余數不為0,表明該幀出現傳輸差錯,余數為0,則表明傳輸無錯。這里的除法指模2除法。模2除法只對相同位數異或操作,被除數首位為1則商為1,被除數首位為0則商為0;余數去掉首位為新的被除數;新的被除數以0開頭,則除數變為全0,以1開頭則除數不變。例如:100101除以1110的過程:1.被除數:1001,除數:1110,商:1,余數:0111,2.被除數:1110,除數:1110,商:1,余數:0000,3.被除數:0001,除數:0000,商:0,余數:1。因此,商:110,余數:1。
    CRC校驗步驟:選擇一個用于校驗的k位二進制除數;在待發送的數據幀后加上k-1位0,得到新幀,新幀與選定除數做模2除法,得到的余數即為CRC校驗碼,又稱FCS(幀校驗序列);將校驗碼與原數據幀相加,得到一個新幀發送到接收端,最后在接收端再把這個新幀與選定除數做模2除法。除數可以隨機選擇,也可按通行的標準選擇,但最高位和最低位必須均為1。例如IBM的SDLC規程中使用CRC—16的除數為11000000000000101,而在ISO的HDLC規程、ITU的SDLC、X.25、V.34、V.41、V.42等中的除數為11000000000100001。
    計算示例:假設選擇的CRC生成多項式為 G(X) =X^4 + X^3+ 1,要求出二進制序列10110011的CRC校驗碼。由CRC生成多項式可知,除數為11001;計算10110011 0000與11001的模2除法,余數為0100;計算0100與10110011的和,作為傳輸幀10110111。
  • 自動重發請求方案
    自動重發請求分為空閑重發請求和連續重發請求。
    (1)空閑重發請求方案
    又稱停-等法,發送端每發送一幀后將數據幀作為待確認幀保留在緩沖存儲器中并啟動計時器,等待接收端發來的確認信息;接收端收到數據幀時,先利用幀中檢錯碼進行校驗,確認無差錯后向發送端返回確認信息,檢測到該幀有誤時,返回一個否認幀,同時丟棄該幀; 如果發送端在計時器中規定的時間內收到來自接收端的確認信息,計時器清零,清除緩存中的待確認幀,開始下一數據幀的發送;若發送端的計時器超時或收到否認幀,則重發存放于緩沖器中的待確認數據幀。
    優點:設計簡單,容易實現;缺點:存在等待時間,信道的有效利用率低。
    (2)連續重發請求方案
    發送端連續發送一系列數據幀(幀的數量視雙方的緩存空間大小而定),不用等前一幀被確認便可繼續發送下一幀,效率大大提高。發送端同時接收來自接收端的響應消息并對傳輸出錯的數據幀進行重發。連續重發請求方案減少了等待時間,提高整個通信的吞吐量,發送端需要額外設置一個較大的緩沖存儲空間(重發表)。
    出現傳輸差錯時,連續重發請求方案有兩種處理策略,即回退N幀策略和選擇重發策略。回退N幀指回到錯誤幀的地方,重發錯誤幀及錯誤幀之后的幀,接收端自動刪除錯誤幀之后的幀,直至該錯誤幀無誤。選擇重發指在接收端發現錯誤幀后,把其后續的正確幀存放在一個緩沖區中,同時向發送端發送NAK否認幀,要求重發錯誤幀,在收到無誤的重發幀后,與存于緩沖區中的其余幀一起按正確的順序遞交給網絡層。
  • 海明糾錯碼
    海明碼是一個具備多個校驗位,能夠檢測并糾正一位錯誤代碼功能的糾錯碼,僅用于信道特性比較好的環境中,如以太局域網中。
    (1)海明碼的原理:將有效信息按某種規律分成若干組,每組安排一個校驗位進行奇偶性測試,然后產生多位檢測信息,并從中得出具體的出錯位置,最后通過對錯誤位取反將其糾正。
    (2)步驟:計算校驗位數→確定校驗碼位置→確定校驗碼→實現校驗和糾錯。
    計算校驗位數,假設N:添加了校驗碼位后整個信息的二進制位數,K:有效信息位數,r:校驗碼位數,它們之間的關系應滿足:N=K+r≤2^{r-1}
    確定校驗碼位置,校驗碼必須是在2^n次方位置。
    確定校驗碼,校驗位的值代表了代碼字中部分數據位的奇偶性,其所在位置決定了要校驗的比特位序列。第i位校驗碼從當前位開始,每次連續校驗i位后再跳過i位,然后再連續校驗i位,再跳過i位,以此類推。最后根據所采用的是奇校驗還是偶校驗即可得出第i位校驗碼的值。例如:第1個校驗位,校驗的碼字符包括:第1位(本身),第3位,第5位,第7位,第9位,第11位,第13位,第15位,....
    實現校驗和糾錯,校驗方式就是各校驗碼對它所校驗的位組進行異或運算,采用偶校驗時,各校驗組通過異或運算后的校驗結果均應該是為0;而采用奇校驗時,各組校驗結果均應是為1。糾錯:對錯誤的位進行取反。

5.4 流量控制

流量控制方案主要有兩種:一種是適用于面向字符的異步通信協議中的簡單流量控制方案—XON/XOFF方案;另一種是適用于大量數據通信環境中的滑動窗口機制。

  • XON/XOFF流量控制方案
    XON/XOFF常用于通信雙方速率不同步的情形,通過對發送端的數據傳輸速率進行控制,以達到與接收數據數據處理速率匹配。接收端的緩存空間滿了或者接近滿時,接收端向發送端發送XOFF控制字符,發送端收到XOFF控制字符時停止數據的發送;當接收端可以繼續接收數據,接收端向發送端發送XON控制字符,發送端收到XON控制字符后恢復數據發送。
  • 滑動窗口機制
    窗口指發送端和接收端的緩存空間。滑動指緩存空間中存放的未處理幀數是變化的,發送端在收到確認幀,接收端向網絡層提交幀后都會刪除緩存中的對應幀。空閑重發中緩存空間大小為一幀,連續重發中緩存空間一般為4幀。
    滑動窗口示例(窗口大小為2幀):初始狀態下,發送端和接收端的緩存空間中均沒有保存數據幀。發送端發送0號幀,并保存在緩存空間中,建立一個待重發表,序號為0。發送端繼續發送1號幀,同時把1號幀保存在緩存空間中,待重發表中添加1。發送端收到0號幀確認幀后,從緩存空間中清除0號待重發幀,待重發表中清除序號0, 接收端把收到的0號幀提交給網絡層,并清除緩存空間中的0號幀,此時緩存空間中為空。發送端發送2號幀,同時也把2號幀保存在緩存空間中,待重發表中添加序號2。發送端在收到1號幀的確認幀后,立即從緩存空間中清除1號待重發幀,待重發表中清除序號1。接收端把1號幀提交給網絡層,清除緩存空間中的1號幀,此時緩存空間中為空。重復這樣的過程。

5.5 數據鏈路協議

數據鏈路協議可分為兩類:面向字符的和面向比特的鏈路層協議。面向字符的鏈路層協議主要有IBM的BSC協議、DEC的DDCMP、SLIP、PPP等;面向比特的鏈路層協議主要有IBM的SDLC、在SDLC協議基礎上ANSI的ADCCP和ISO的HDLC、CCITT在HDLC基礎上提出的LAP等。面向字符的鏈路層協議用字符來控制幀的同步等信息,面向比特的鏈路層協議則用比特流來表示控制信息。

  • BSC協議
    數據幀中的數據被看作字符序列,數據塊的頭部用一個或多個同步字符SYN來標記數據塊的開始;尾部用字符ETX來標記數據塊的結束。鏈路上傳送的數據必須是由規定字符集(例如ASCII,或者EBCDIC)中的字符組成,控制信息也必須由同一個字符集中的若干指定的控制字符構成。對于數據塊中的特殊字符(控制字符)通過轉義字符將其作為普通數據處理。
    (1)BSC控制字符
    通信控制字符:ACK:確認標志,由接收端發出的,作為對正確接收到報文的響應。DLE:轉義標志,用于指示后面的字符是數據字符,而不是特殊控制字符。ENQ:詢問標志,用于請求遠程站點給出響應。響應可能包括遠程站點的身份或狀態。EOT:發送完畢標志,用于表示一個或多個文本的發送結束,并拆除鏈路。ETB:塊終止或組終止標志,用于標志每個數據塊的結束位置。僅在一個報文要分成多個數據塊傳輸時才有此標志。ETX:文本終止標志,標志報文文本的結束。僅在一個報文不分成多個數據塊傳輸時才有此標志。NAK:否認標志,由接收端發出的,作為對未正確接收的報文響應。SOH:報頭開始標志,用于表示報文的標題信息或報頭的開始,僅在報文的第一個數據塊中才有此標志。STX:文本開始標志,標志標題信息的結束和報文文本的開始,每個數據塊均有此標志。SYN:字符同步標志,用以實現通信雙方的字符同步,或用于在無數據傳輸時保持同步,在每個數據塊中均有此標志,而且通常是兩個。
    (2)BSC數據塊格式
    BSC協議數據塊四種格式:



    (3)BSC基本特點:
    所有發送的數據均跟在至少兩個SYN字符之后,以使接收端能實現字符同步;所有數據塊在塊終止標志符(ETX或ETB)之后還有塊校驗字符BCC,校驗是單字節的CRC或雙字節的CRC,校驗范圍從STX開始到ETX或ETB為止。

  • 面向比特的SDLC和HDLC協議
    面向比特的鏈路層協議中,數據塊的頭部和尾部都用一個特殊的比特序列來標記數據塊的開始和結束。所有的面向比特的數據鏈路協議均采用統一的幀格式。
    SDLC支持識別兩類網絡站點:主站點和從站點。主站點控制從站點,主站點輪詢從站點是否有數據要發送。從站點只有在主站點授權前提下才可以向主站點發送信息。主站點按照預先確定的順序選擇從站點,如果選定的從站點已經導入數據,才可進行數據傳輸。主站點負責鏈路的建立、拆除和控制。
    (1) HDLC鏈路結構和操作方式
    HDLC也采用主站點和從站點操作方式。主站點發往從站點稱為命令幀,從站點返回主站點稱為響應幀。HDLC中定義了三種鏈路結構:不平衡鏈路結構、對稱非平衡鏈路結構和平衡鏈路結構,分別對應提供三種基本操作方式和三種擴充方式:正常響應方式(NRM)、異步響應方式(ARM)和異步平衡方式(ABM),和三種擴充方式:擴充正常響應方式、擴充異步響應方式、擴充異步平衡方式。異步響應方式中從站點可以在沒有得到主站點允許的情況下開始數據傳輸,傳輸效率比NRM高。


    HDLC三種鏈路結構

    (2) SDLC/HDLC幀結構


    SDLC/HDLC幀結構

    標志字段:所有信息傳輸必須以一個標志字段F(Flag)開始,且以同一個標志字段結束。為了維持信道處于激活狀態,發送端會不斷地發送標志字段。地址字段:表明幀是來自主站點還是來自從站點,命令幀中地址字段攜帶目的從站點的地址,響應幀地址字段攜帶本站點的地址。通常為8位,00000000的地址為空地址,用于測試數據鏈路的狀態;11111111地址為廣播地址。控制字段:實現HDLC協議的各種控制信息,并標志幀的類型,占1個字節長度。控制字段前兩位代表幀的類型,第1位為0,代表幀為信息幀,前兩位為10,代表幀為監控幀S;前兩位位為11,代表幀為無編號幀U。信息字段:包含了用戶的數據信息和來自上層的各種控制信息。監控幀不具備信息字段。幀校驗序列字段:可以使用16位的CRC,對兩個標志字段之間的整個幀的內容進行校驗。
    (3)SDLC/HDLC幀類型及其標識方法
    數據幀分為信息幀I、監控幀S、無編號幀U。
    控制字段結構

    第5位,P/F(Poll/Final,查詢/結束)位:在不同幀中的含義不一樣,命令幀中取P位,起查詢的作用,值為1;響應幀中取F位,起結束數據發送或確認結束的作用,該位取1表示從站點數據發送完畢或響應完畢,該位取0表示數據未發送完。
    信息幀(I幀):I幀控制字段中第1位為0;第2-4位為N(S,Send),標志待發送的幀序號;第5位為P/F位;第6-8位為N(R,Recieve),標志待接收的確認幀序號(表示發送端已確認了前N-1個幀,同時發送端待接收第N幀的確認幀)。

    監控幀(S幀):S幀用于監視和控制數據鏈路,完成I幀的接收確認、重發請求、暫停發送請求等功能。S幀沒有信息字段(48位)。S幀的控制字段中第12位固定為10;第3-4位為S,代表監控功能,包含4種監控類型的幀:00,接收就緒(RR),主站點用RR型S幀來查詢從站點,從站點用RR型S幀作為對主站點的響應幀。01,拒絕(REJ),接收端要求發送端對從編號為N(R)開始的幀及其以后所有的幀進行重發。10,接收未就緒(RNR),接收端通知發送端尚未準備好接收編號為N(R)的I幀。11,選擇拒絕(SREJ),接收端要求發送端發送編號為N(R)單個I幀;第5-8位與I幀一樣。
    無編號幀(U幀):用于數據鏈路的控制,不帶編號,可以在任何需要的時刻發出,不影響帶編號的信息幀的交換順序。第12位為11;第3-4,6-8位均為M,代表無編號功能;第5位P/F與I幀一樣。U幀分為命令幀(C)和響應幀(R)。

  • 面向字符的PPP同步傳輸協議
    BSC、SDLC、HDLC屬于局域網中的數據鏈路層協議,PPP(Point-to-Point Protocol,點對點協議)是廣域網數據鏈路層協議。
    (1)PPP發展過程
    SLIP(串行線路網際協議)具有如下缺點:連接速率低;不能自動分配IP地址;無協議類型字段,只支持默認的IP協議,SLIP幀只是在IP包的首尾加一個END字符,作為幀邊界,標志一個幀的起始和結束。包中END字符,用ESC字符和0xdc兩個字符來替代,包中ESC字符用ESC字符和0xdd兩個字符替代,以實現透明傳輸;無幀校驗序列(FCS)字段,無法檢測出傳輸差錯。
    針對SLIP以上缺點提出PPP協議,PPP在連接速率上遠高于SLIP,同時提供了協議類型字段和幀校驗序列(FCS)字段,使得PPP除了支持IP協議包封裝外,還可以封裝其他三層協議包,可以提供各種差錯控制功能。PPP通過幾個子協議提供了一整套方案來解決鏈路建立、維護、拆除、上層協議協商、認證等問題。
    子協議包括鏈路控制協議(LCP):用于建立、配置、測試和管理數據鏈路連接;網絡控制協議(NCP):協商該鏈路上所傳輸的數據包格式與類型,建立、配置不同的網絡層協議;口令認證協議(PAP)和質詢握手認證協議(CHAP):為PPP連接提供用戶認證功能,可以確保PPP連接的安全性。
    PPP協議在ADSL(非對稱數據用戶環線)接入方式中,與其他的協議共同派生出了符合寬帶接入要求的新協議,如PPPoE(PPP over Ethernet),PPPoA(PPP over ATM)。
    (2)PPP幀結構和透明傳輸原理


    PPP幀

    PPP幀包括7個字段,幀的首尾均有一個標志字段,其他字段各一個。標志:標志幀的起始或結束,1個字節,值固定為01111110(0x7E)。地址:標志對方節點地址的,由于PPP是點對點通信協議,無須知道對方的數據鏈路層地址(MAC地址),因此地址字段固定為標準廣播地址11111111,1個字節。控制:PPP只有UI(無編號信息)幀,無須接收端對收到的幀進行確認,控制字段值固定為00000011。協議:PPP幀它除了可封裝IP協議外,還可封裝其他多種網絡層協議包。協議字段占2個字節,指示在信息字段中封裝的數據類型。信息:來自網絡層的有效數據,可以是任意長度,默認為1500字節。幀校驗序列(FCS):使用16位的循環冗余校驗計算信息字段中的校驗和,以驗證數據的正確性。
    透明傳輸:PPP是面向字符協議,使用轉義字符0x7D(01111101)進行填充,一字節變兩字節。
    (3)PPP鏈路建立、使用和拆除流程
    整個過程分為死亡、鏈路建立、身份認證、網絡控制協商和結束五個階段。



    具體流程:用戶向ISP或者對端節點發起PPP連接請求時,首先打開物理接口,通過封裝了LCP的PPP幀與接口進行協商,協商內容包括工作方式(單PPP通信或多PPP通信)、認證方式和最大傳輸單元等。協商完成后就進入鏈路建立階段,啟用PPP數據鏈路層協議,對接口進行封裝。如果啟用成功,則進入身份認證階段,保持LCP激活,否則關閉接口和LCP。數據鏈路建立成功后對請求連接的用戶進行身份認證(CHAP/PAP)。身份認證成功后進入網絡控制協商階段,通過封裝了NCP的PPP幀與網絡層協議進行協商,并為用戶分配一個臨時的網絡層地址;如果身份認證失敗,直接進入結束階段,拆除鏈路,返回死亡階段,關閉LCP。PPP鏈路將一直保持通信,直至有明確的LCP或NCP幀關閉這條鏈路,或發生了某些外部事件導致進入結束階段,關閉NCP協議,釋放為用戶分配的臨時網絡層地址,最后返回死亡階段,關閉LCP。
    (4)PPP的PAP/CHAP身份認證
    身份認證方式包括:PAP(密碼認證協議),CHAP(質詢握手認證協議)。路由器間Serial口之間的PPP連接不需要身份認證。
    PAP身份認證:二次握手機制,被認證方發送認證請求→認證方給出認證結果。具體步驟:發起PPP連接的客戶端向擔當身份認證的PAP服務器端發送一個認證請求幀,包括用于身份認證的用戶名和密碼。服務器端收到認證請求幀后,查詢服務器用戶賬戶數據庫,如果用戶賬戶信息合法,向客戶端返回一個認證確認(ACK)幀,表示認證成功;否則返回一個認證否認(NAK)幀,表示認證失敗。如果第一次認證失敗,并不會直接將鏈路關閉,而是提示客戶端以新的用戶賬戶信息再次認證,當認證失敗達到一定次數(默認為4)才會關閉鏈路,以防止因誤傳、網絡干擾等造成不必要的LCP重新協商過程。缺點:PAP身份認證用戶名及密碼在網絡上是以明文方式進行傳輸,不安全。
    CHAP身份認證:三次握手機制,認證方要求被認證方提供認證信息→被認證方提供認證信息→認證方給出認證結果。具體步驟:鏈路建立后,CHAP服務器端不斷產生一個隨機序列號的質詢(challenge)字符串幀發送給CHAP客戶端,詢問客戶端是否要進行身份認證,直至客戶端對質詢做出響應,把用于身份認證的用戶名和密碼通過MD5摘要加密協議生成一個隨機序列的響應幀發送給服務器端。服務器端收到響應幀后,解密出其中的認證用戶名和密碼,并在本地用戶賬戶數據庫中查找,如果用戶信息合法,通過認證,允許客戶端發起的PPP連接,否則拒絕認證,認證失敗。同樣,多次認證失敗后才會關閉鏈路。
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容