網絡硬件算法
通常來講,目前使用的傳輸技術有兩種,它們是:廣播式連接和點到點連接。編程
按距離進行分類能夠分爲:局域網(LAN)、城域網(MAN)和廣域網(WAN)。緩存
大體上,無線網絡能夠分爲三大類:系統互連、無線LAN、無線WAN。服務器
網絡軟件網絡
爲了下降網路設計的複雜性,絕大多數網絡組織成一堆相互疊加的層,每一層都創建在其下一層的基礎之上。協議是指通訊雙方關於如何進行通訊的一種約定。不一樣層之間有不一樣的通訊協議。異步
對等體是不一樣機器上包含的對應層的實體稱。這些對等體多是進程或設備硬件,甚至多是人。接口存在於每一對相鄰層之間。接口定義了下層向上層提供哪些原語操做和服務。計算機網絡各層設計須要考慮的問題有:編碼機制、錯誤控制和流控制等。爲創建多個鏈接還須要考慮多路複用和多路解複用。socket
下層能夠向上提供兩種不一樣類型的服務:面向鏈接的服務或面向無鏈接的服務。面向鏈接的服務是基於電話系統模型的,面向無鏈接的服務是基於郵件系統模型的。函數
參考模型 性能
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)調整系統的運行,以改正問題。
不少系統的設計思想是從一開始就將發生擁塞的可能性下降到最小。下圖爲各類可能會影響到擁塞的數據鏈路層、網絡層和傳輸層策略。
圖5.4 影響擁塞的策略
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 等著 人民郵電出版社