1. 程式人生 > >簡要網絡知識總結(摘自《計算機網絡》)

簡要網絡知識總結(摘自《計算機網絡》)

soc 了解 錯誤 崩潰 能夠 填充 萬維網 pin 數據鏈路層

一.概述

網絡硬件

  一般來說,目前使用的傳輸技術有兩種,它們是:廣播式鏈接和點到點鏈接。

  按距離進行分類可以分為:局域網(LAN)、城域網(MAN)和廣域網(WAN)。

  大致上,無線網絡可以分為三大類:系統互連、無線LAN、無線WAN。

網絡軟件

  為了降低網路設計的復雜性,絕大多數網絡組織成一堆相互疊加的層,每一層都建立在其下一層的基礎之上。協議是指通信雙方關於如何進行通信的一種約定。不同層之間有不同的通信協議。

  對等體是不同機器上包含的對應層的實體稱。這些對等體可能是進程或設備硬件,甚至可能是人。接口存在於每一對相鄰層之間。接口定義了下層向上層提供哪些原語操作和服務。計算機網絡各層設計需要考慮的問題有:編碼機制、錯誤控制和流控制等。為建立多個連接還需要考慮多路復用和多路解復用。

  下層可以向上提供兩種不同類型的服務:面向連接的服務或面向無連接的服務。面向連接的服務是基於電話系統模型的,面向無連接的服務是基於郵件系統模型的。

參考模型  

  OSI參考模型:OSI模型有七層,從下到上依次為:物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層。

  技術分享圖片

  TCP/IP參考模型:TCP/IP參考模型有四層,從下到上依次為:物理至主機層,互聯網層,傳輸層,應用層。

技術分享圖片

  物理層:涉及到通信信道上傳輸的原始數據位。設計時要確保,當一方發送“1”時,另一方接受到的是“1”而不是“0”。這裏涉及的問題有:應該用多大的電壓表示“1”和“0”;每一位持續多少ns;初始連接如何建立;當雙方結束之後如何撤銷等。

  數據鏈路層:主要任務是將一個原始的傳輸設備轉變成一條邏輯傳輸線路,在這條線路上,所有為檢測出來的傳輸錯誤也會反映到網絡層上。數據鏈路層完成這項任務的做法是:讓發送方將發送的數據拆開,分裝到數據幀中,然後按順序傳送這些數據幀。如果是可靠服務,則接收方必須確認每一幀都正確接收到了,及給發送方送回一個確認幀。為避免快速發送的發送方數據淹沒接收慢的接收方,還需要流調節機制和錯誤處理機制。

  網絡層:控制子網的運行過程。一個關鍵的設計問題是如何將分組從源端發送到目標端。擁塞控制也屬於網絡層的範疇,還有所提供的服務質量等(如延遲,抖動,傳輸時間等)。網絡層負責解決這些問題,從而允許不同類型的網絡可以互連起來。

  傳輸層:基本功能是接受來自上一層的數據,並且在必要時把這些數據分割成小的單元,然後把數據單元傳遞給網絡層,並且確保數據片段都能夠正確到達另一端。而且,這些工作都必須高效的完成,並且必須時上面各層不受底層硬件技術變化的影響。

  會話層:允許不同機器上的用戶之間建立會話。所謂會話,通常指各種服務,包括對話控制、令牌管理及同步功能。

  表示層:表示層關心的是所傳遞的信息的語法和語義。不同的計算機可能使用不同的數據表示法。

  應用層:包含了各種各樣的協議,這些協議往往直接針對客戶的需要。如HTTP(超文本傳輸協議),它是WWW(萬維網)的基礎。此外還有一些協議用於文件傳輸、電子郵件及新聞媒體等。

  以上是OSI模型各層的簡述,TCP/IP模型也差不多,這裏不再贅述。以下是TCP/IP模型中的早期協議和網絡。

技術分享圖片

二.物理層

  信號傳輸的介質可以分為有導向的傳輸介質和無線傳輸。前者包括磁介質、雙絞線、同軸電纜、光纖燈。後者包括無線電傳輸、微波傳輸、光波傳輸等。

三.數據鏈路層

  數據鏈路層的功能包括:(1)向網絡層提供一個良好的服務接口;(2)處理傳輸錯誤;(3)調節數據流,確保慢速的接受方不會被快速的發送方淹沒。數據鏈路層從網絡層獲取分組,然後將這些分組封裝到幀中以便傳輸。

技術分享圖片

  數據鏈路層通常會提供以下三種可能的服務:(1)無確認的無連接服務;(2)有確認的無連接服務;(3)有確認的面向連接服務。無確認的無連接服務是指源機器向目標機器發送獨立的幀,目標機器不對這些幀進行確認;有確認的無連接服務則需要對所發送的每一幀都需要單獨確認;當使用面向連接的服務時,數據傳輸需要經過建立連接、傳輸數據和釋放連接三個階段。

  數據鏈路層的協議:PRA協議(支持重傳的肯定確認協議);滑動窗口協議。PRA協議加入定時器,當數據丟失導致定時器超時時,數據將會重傳。滑動窗口協議采用發送方不用每次接受到前一個已發送的數據的確認幀再發送下一幀,而是一下子連續發送數幀,從而提高寬帶利用率。滑動窗口協議又分為回退n幀技術和選擇性重傳兩類。前者接受方的窗口大小為1,每次只能緩存待網絡層接下來要接受的一幀,所以當某一個特定序列號錯誤的幀到達接受方時,接收方將它和後續到達不同序列號的幀丟棄,直到正確的序列號的幀再次到達。這意味著發送方得重傳錯誤幀及其後面的幀。選擇性重傳由於接收方緩存區大於1所以可以將錯誤幀後面到達的幀緩存起來,而發送方只需重發錯誤幀即可。如下圖顯示了它們的區別:

技術分享圖片

圖3.2 (a)接收方的尺寸為1 (b)接收方的尺寸較大

數據鏈路層示例

  HDLC(高級數據鏈路控制)協議是面向位的協議,其幀結構如下圖3.3所示。其中地址域用來標識一個終端。控制域被用作序列號、確認,以及其他的用途。數據域可以包含任何信息,它可以任意長。校驗和域是一個循環循環冗余碼。幀的分界線是另一個標誌序列(01111110)。

技術分享圖片

圖3.3 面向位的協議的幀格式

  PPP(點到點協議)是Internet中的協議,PPP處理錯誤檢測、支持多個協議、允許在連接時刻協商IP地址、允許身份認證,等等還允許其他許多特征。

  PPP提供了一下3類功能:(1)一種成幀方法。它可以毫無歧義的分割出一幀的結束和下一幀的開始。並且幀格式支持錯誤檢測。(2)一個鏈路控制協議,可用於啟動線路、測試線路、協商參數,以及當線路不需要時可以溫和的關閉線路。該協議稱為LCP(鏈路控制協議)。它支持同步和異步線路,也支持面向字節和面向位的編碼方法。(3)一種協商網絡層選項的方法,並且協商方法與所使用的網絡層協議獨立。所選擇的方法對於每個網絡層都有一個不同的NCP(網絡控制協議)。PPP和HDLC的最主要區別是,PPP是面向字符的,而不是面向位的。下圖3.4為PPP幀的格式。

  技術分享圖片

圖3.4 無序號模式操作下的PPP完整幀格式

  所有的PPP幀都以一個標準的HDLC標誌字節(01111110)作為開始。接下來是地址域,設置為11111111表示所有的站都可以接受該幀。控制域默認為00000011,表示沒有采用序列號和確認來實現可靠傳輸。協議域的任務是指明有效載荷域中是哪一種分組。已定義的代碼協議有:LCP\NCP\IP\IPX等。有效載荷域是變長的,最多可以達到某一個商定的最大值。接下來為校驗和域,可以是2或4字節。

  總而言之,PPP是一種多協議成幀機制,它適用於在調制解調器、HDLC位序列線路、SONET和其他的物理層上使用。它支持錯誤檢測、選項協商、頭部壓縮,以及使用HDLC類型幀格式的可靠傳輸。

四.介質訪問控制子層

  網絡可以分為兩大類:使用點到點連接的網絡和使用廣播信道的網絡。廣播信道也稱為多路訪問信道或者隨機訪問信道。為解決當多方要競爭使用信道的時候,如何確定誰可以使用信道。用於在多路訪問信道上確定下一個使用者的協議屬於數據鏈路層的一個子層,稱為MAC(介質訪問控制)子層。信道的分配一般可以分為靜態和動態兩種方案。靜態的啊方案思想為當N個用戶競爭一個信道時,把信道分成N等分,每個用戶擁有一個自己的信道。這種方法的缺點是會浪費帶寬,而且當發送方的數量很多且經常不斷的變化時這種方法會出現問題。動態方案可以正好解決這些問題,其思想為只為某時需要帶寬的用戶分配合理的帶寬。

  多路訪問協議有很多,代表性的有:ALOHA、載波多路訪問(CSMA)協議(如CSMA/CD)、無沖突的協議(如位圖協議)、有限競爭協議(如自適應樹搜索協議)、波分多路訪問協議(WDMA)、無線LAN協議(如MACAW)等。

以太網

  以太網是一種LAN,IEEE已經標準化了許多局域網和城域網,這些標準都在IEEE 802 的名字下面,最重要的有802.3(以太網)和802.11(無線LAN),此外還有前途未蔔的802.15(藍牙)和802.16(無線MAN)。為了實現”讓接收方在沒有任何外部時鐘參考的情況下,可以毫無歧義的確定每一位的起始、結束或者中間位置“的功能,可以使用曼徹斯特編碼和差分曼徹斯特編碼。

  早期的DIX幀結構如下圖4.1(a)所示。每一幀都從8個字節的前導域開始。接下來是目標地址和源地址,標準中允許使用2或6字節的地址。目標地址最高位如果是0,則表示普通地址;如果是1則表示組地址。向一組站發送數據稱為多播。由全部為’1‘位構成的地址被保留用於廣播。一個多播幀被發送給以太網上選出來的一組站,而廣播幀則被發送給以太網上的所有站。源地址即本主機的mac地址,它是獨一無二的。接下來的類型域告訴接收方應該如何處理這一幀。如應該把此幀交給哪一個進程。數據域最多可以達到1500字節。此外,為了更加容易的區分有效幀和垃圾數據,以太網要求有效幀必須至少64字節長,從目標地址算起到最後的校驗和。如果一幀的數據域部分少於64字節的話,則使用填充域來填充該幀使其滿足最小的長度。以太幀的最後一個域是校驗和。

  技術分享圖片

圖4.1 (a)DIX以太網 (b)IEEE 802.3

  

  當IEEE標準化以太網時,對DIX幀格式做了兩個改動。第一個改動是將前導域降低到7個字節,並且將空出來的一個字節用作幀起始分界符。第二改動是將類型域編程了長度域。

  IEEE 802.2(LLC即邏輯鏈路控制):它通過提供一種統一的格式,以及向網絡層提供一個接口,從而隱藏各種802網絡之間的差異。LLC構成了數據鏈路層的上半層,MAC是它的下半層。

  LLC提供三種服務選擇:不可靠的數據服務、有確認的數據服務,以及面向連接的可靠服務。LLC頭包含三個域:一個目標訪問點、一個源訪問點,以及一個控制域。兩個訪問點指明了該幀從哪個進程來,以及要遞交給哪個進程,相當於取代了DIX的type域。控制域包含了序列號和確認號。

無線LAN(802.11) 

  無線LAN可以有兩種配置方案:有一個基站或者沒有基站。下圖4.2為802.11協議棧部分視圖。標準規定物理層上允許五種傳輸技術,分別為紅外線、FHSS(跳頻擴頻)、DSSS(直接序列擴頻)、OFDM(正交頻多路復用)和HR-DSSS(高速率的直接序列擴頻)。無線LAN要解決的問題要比有線LAN要多,MAC子層協議有CSMA/CA(帶沖突檢測的CAMS)協議等。

技術分享圖片

圖4.2 802.11協議棧的部分視圖

  802.11標準定義三種不同類型的幀用於通信:數據幀、控制幀和管理幀。每一種幀都有一個頭,該頭部包含了各種用於MAC子層的域。數據幀的格式如下圖4.3所示。首先是幀控制域,其有11個子域。數據幀第二個域為持續時間域,它提供這樣的信息:該幀和它的確認幀將會占用信道多長時間。接著的四個地址域分別為源地址和目標地址、源和目標基站地址。序列號域(Seq)使分片可以被編號。數據域包含了凈荷,其長度可以達到2312字節。最後為校驗和域。

  技術分享圖片

圖4.3 802.11數據幀

  下圖為每一層之間的連接設備和不同層上數據的封裝格式。

技術分享圖片

五.網絡層

  網絡層關註的是如何從將分組從源端沿著網絡路徑送達目標端。沿路可能要經過許多跳路由器。網絡層需要提供的服務:存儲-轉發分組交換、向傳輸層提供服務。根據所提供的服務類型不同,有兩種不同的組織。如果提供的是無連接的服務,則所有的分組都被獨立的傳送到子網中,並且獨立於路由,不需要提前建立任何輔助設施。該分組通常稱為數據報。如果使用面向連接的服務,則在發送分組之前必須首先建立一條從源路由器到目標路由器之間的路徑。這個連接稱為VC(虛電路)。下圖5.1為數據報在子網內的路由。圖5.2為虛電路子網路由過程。

技術分享圖片

圖5.1 數據報子網路由過程

技術分享圖片

圖5.2 虛電路子網內路由過程

  下圖列出了虛電路子網和數據包子網的比較。

技術分享圖片

圖5.3 數據報和虛電路子網比較

  由於在大多數子網中,分組需要經過多跳才能到達目的地。在此過程需要用到路由算法和擁塞控制算法。路由算法是網絡層軟件的一部分,它負責確定一個進來的分組應該被傳送到哪一條輸出線路上。路由算法一般可以分為靜態的和動態的。靜態路由常見有最短路徑路由和擴散法等。動態路由算法例如距離矢量路由。

  當一個子網或者子網的一部分中出現太多分組的時候,網路性能開始下降,這種情況稱為擁塞。擁塞控制算法可分為開環方案和閉環方案。開環方案的手段有:確定何時接受新的流量、確定何時丟棄分組及丟棄哪些分組,以及在網絡的不同點上執行調度決策。所有這些手段的共同之處是,它們在做出決策的時候不考慮網絡的當前狀態。相反,閉環方案則建立在反饋環路的概念基礎之上,它有三部分:(1)監視系統,監視到何時何地發生了擁塞。(2)將該信息傳遞到能夠采取行動的地方。(3)調整系統的運行,以改正問題。

  很多系統的設計思想是從一開始就將發生擁塞的可能性降低到最小。下圖為各種可能會影響到擁塞的數據鏈路層、網絡層和傳輸層策略。

技術分享圖片

IP協議

  IP協議是Inernet的網絡層協議。每個IP數據包包含一個頭部和一個正文部分。頭部有一個20字節的定長部分和一個可選的變長部分。下圖5.5為IP數據報的頭部格式。版本域記錄數據報屬於哪一個版本的協議,如IPv4或IPv6。IHL域指明頭部有多長,其最小值為5表明沒有可選項,最大值為60表明可選項做多為40字節。服務類型域用來區分不同的服務種類,可靠性和速度的各種組合都是可能的。總長度域包含了改數據報中所有內容,即頭和數據。最大長度為65535字節。標識域的用途是讓目標主機確定一個新到達的分段屬於哪一個數據報。接下來是一個未使用的域,然後是兩個1位域。DF代表”不分段“,表示讓路由器部分個數據報。MF代表”更多的分段“。分段偏移域指明了該分段在當前數據包中的什麽位置。該域有13為,說明每個數據報最多有8192個分段。TTL是一個用於限制分組生存期的計數器。頭怒校驗和域只校驗頭部。源地址和目標地址域表示網絡號和主機號。

技術分享圖片

圖5.5 IPv4(Internet協議)頭部

  一些常見的選項域如下圖:

技術分享圖片

圖5.6 一些IP選項

IP地址

  Internet上的每臺主機和路由器都有一個IP地址,IP地址包含網絡號和主機號。並且這種組合是唯一的,每個IP地址長32位。IP地址分為5大類:A\B\C\D\E。其中A、B、C類為私有地址,專門為組織機構內部使用。D類用作多播地址,E類保留將來使用。如下圖5.7為IP地址格式。A類有128個網絡,每個網絡有1600萬臺主機。B類有16384個網絡,每個網絡有6萬4千臺主機。C類有2百萬個網絡,每個網絡有256臺主機。

技術分享圖片

圖5.7 IP地址格式

  子網的出現是為了解決網絡號不夠用的情況。其基本思想為一個B類地址不再是14位網絡號和16位主機號,而是從主機中拿出一些位構成一個子網號。為了實現對子網的支持,主路由器需要一個子網掩碼,它代表了”網絡+子網號“與主機之間的分割方案。也可以用十進制標記法來表示,外加一個’/‘,並跟上”網絡+子網部分的位數“。例如下圖5.8,子網掩碼可以寫成255.255.252.0或”IP地址/22“來表示掩碼有22位長。

技術分享圖片

圖5.8 一個B類網絡被分成64個子網

  

六.傳輸層

  傳輸層的任務是在元機器和目標機器之間提供可靠的、性價比合理的數據傳輸功能,並且與當前所使用的物理網絡完全獨立。傳輸層的最終目標是想它的用戶(通常是應用進程)提供高效的、可靠的和性價比合理的服務。下圖6.1為網絡層、傳輸層和應用層建的關系。

技術分享圖片

  傳輸服務的原語為進行傳輸服務是使用的機器能了解的語言。下圖6.2為TCP的套接字原語。

技術分享圖片

圖6.2 TCP套接字原語

  TPDU(傳輸協議數據單元)代表一個傳輸實體發送至另一個傳輸實體的消息。它被包含在分組的內部。分組被包含在幀的內部。這種嵌套關系如圖6.3所示。

技術分享圖片

  傳輸協議的設計要素有編址、建立連接、釋放連接、流控制和緩沖、多路復用和崩潰恢復等。

Internet傳輸協議——UDP

  UDP是一個無連接的傳輸協議。T它不必建立連接就可以向一個程序發送一個封裝的IP數據報。UDP傳輸的數據段是由8字節的頭和凈荷域組成的。如圖6.4.兩個端口分別被用來標識出源機器和目標機器內部的端點。當一個UDP分組到來的時候,它的凈荷部分被遞交給目標端口相關聯的那個進程。UDP長度域包含了8字節的頭部和數據部分。UDP校驗和是可選的。

技術分享圖片

圖6.4 UDP頭

Internet傳輸協議——TCP

  TCP是可靠的面向連接的傳輸協議。如果要進行TCP服務,則發送方和接收方必須創建一種被稱為套接字的端點。每個套接字有一個套接字號(地址),它是由主機的IP地址和本地主機局部的一個16位數值組成的端口組成的。有關的套接字調用如上圖6.2.1024以下的端口被稱為知名端口。每個連接可用兩端的套接字標識符來標識,即(socket1,socket2)。

  TCP數據段的起始部分為固定的20字節,如下圖6.5所示。固定的頭部之後可能跟著頭選項。在選項之後的數據部分最多可達65495數據字節。無任何數據的TCP段也是合法的,通常被用來進行確認和控制消息。序列號和確認號域完成它們的常規功能。TCP頭長度域指明了在TCP頭部包含多少個32位的字節。接下來是未使用的6位域。接下來是6個1位的標誌位。CWR被用來控制信號的擁塞。ACK位被設置為1表示Acknowledgement number是有效的。如果為0則該數據段不包含確認信息。PSH位表示這是帶有PUSH標誌的數據。RST位被用來重置一個已經混亂的連接。SYN位被用於建立連接的過程。FIN被用來釋放一個連接。

技術分享圖片

圖6.5 TCP頭

  TCP的連接建立需要三次握手,如圖6.6.假設客戶機發起主動連接,服務器被動打開。TCP的三次握手步驟如下:

  (1)服務器必須準備好接受外來的連接。這通常通過調用socket、bind和listen這三個函數來完成。

  (2)客戶機通過調用connet發起主動連接。這導致客戶機TCP發送一個SYN分節,它告訴服務器客戶將在連接中發送的數據的初始序列號。通常SYN分節不攜帶數據,其所在IP數據報只含一個IP首部、一個TCP首部及可能有的TCP選項。

  (3)服務器必須確認(ACK)客戶機的SYN。同時自己也得發送一個SYN分節,它含有服務器將在同一連接中發送的數據的初始序列號。服務器在單個分節中發送SYN和ACK。

  (4)客戶機必須確認服務器的SYN。

技術分享圖片

圖6.6 TCP三次握手

  TCP的連接終止需要四次揮手,如圖6.7。其步驟如下:

  (1)某個應用程序首先調用close,稱為主動關閉。該端的TCP於是主動發送一個FIN分節,表示數據發送完畢。

  (2)接收到這個PIN的對端執行被動關閉。這個FIN由TCP確認。它的接收也作為一個文件結束符傳遞給接收端應用進程,因為FIN的接收意味著接收端應用進程在相應連接上再無額外數據可接收。

  (3)一段時間後,接收到這個文件結束符的應用進程將調用close關閉它的套接字。這導致TCP也發送一個FIN。

  (4)接收這個最終FIN的原發送端TCP確認這個FIN。

  

技術分享圖片

圖6.7 TCP的四次揮手

七.應用層

  DNS域名系統是一種層次的、基於域的命名方案。Internet被分為200多個頂級域,每個域包含許多主機。頂級域分為兩種:通用域和國家域。每個域又被分為若幹個子域。如下圖7.1。

技術分享圖片

  無論是單主機域還是頂級域,每個域都可以有一組與它相關聯的資源記錄。對於一臺主機而言,最常見的資源記錄為它的IP地址。當解析器把一個域名傳遞給DNS時,DNS返回的是與該域名相關聯的資源記錄。因此DNS的基本功能是將域名映射到資源記錄上。

參考文獻

  《計算機網絡(第4版)》Andrew S.Tanenbaum著 清華大學出版社

  《UNIX網絡編程 卷1:套接字聯網API (第3版)》W.Richard Stevens 等著 人民郵電出版社

簡要網絡知識總結(摘自《計算機網絡》)