1. 程式人生 > 實用技巧 >計算機網路-自頂向下方法 讀書筆記 第一章:計算機網路和因特網

計算機網路-自頂向下方法 讀書筆記 第一章:計算機網路和因特網

計算機網路和因特網

文章目錄

什麼是因特網

具體構成描述

因特網(internet)是一個世界範圍的計算機網路,互聯了數十億計算裝置(比如PC、手機、電視等),這些裝置被稱為主機(host)或端系統(end system),它們通過通訊鏈路(communication link)和分組交換機(packet switch)連線到一起。

通訊鏈路包括同軸電纜、銅線、光纖、無線電頻譜,不同型別的通訊鏈路傳輸速率(transmission rate)不同,以位元/秒(bit/s或bps)度量。

當一臺端系統向另一臺端系統傳送資料時,傳送端系統將資料分段,併為每段加上首部位元組,由此形成的資訊包就是分組(packet),這些分組通過網路傳送到目的端系統。

分組交換機從它的一條入通訊鏈路接收到達的分組,並從它的一條出通訊鏈路轉發該分組,當前最著名的兩種分組交換機分別為路由器(router)和鏈路層交換機(link-layer switch),其中鏈路層交換機通常用於接入網中,而路由器通常用於網路核心中。

從傳送端系統到接收端系統,一個分組所經歷的一系列通訊鏈路和分組交換機統稱為該網路的路徑(route或path)。

端系統通過因特網服務提供商(Internet Service Provider,ISP)接入因特網,比如本地電纜、電話公司那樣的住宅區ISP、公司ISP、大學ISP,在機場等公共場合提供WiFi接入的ISP,智慧手機和其他裝置提供移動接入的蜂窩資料ISP。每個ISP自身就是一個由多臺分組交換機和多段通訊鏈路組成的網路,提供了各種不同型別的網路接入。

在因特網中端系統彼此互聯,因此為端系統提供接入的ISP也需要互聯,較低層的ISP通過國家、國際的較高層ISP互聯,每個ISP都是獨立管理的,執行著IP協議,遵從一定的命名和地址規則。

端系統、分組交換機和其他因特網部件需要執行一系列協議(protocol),這些協議控制因特網中資訊的傳送和接收,例如傳輸控制協議(Transmission Control Protocol,TCP)和網際協議(Internet Protocol,IP)。

服務描述

與因特網相連的端系統提供了一個套接字介面(socket interface),該介面規定了執行在一個端系統上的程式請求因特網基礎設施向執行在另一個端系統上的特定目的地程式交付資料的方式。

什麼是協議

協議定義了在兩個或多個通訊實體之間交換的報文(message)的格式和順序,以及報文傳送和/或接受一條報文或其他事件所採取的動作。

網路邊緣

接入網

邊緣路由器(edge router)是端系統到任何其他遠端端系統的路徑上的第一臺路由器。接入網指將端系統物理連線到其邊緣路由器的網路。如下圖,加粗的線代表接入鏈路。

家庭接入:DSL、電纜、FTTH、撥號和衛星

數字使用者線(Digital Subscriber Line,DSL)

DSL利用電話公司現有的本地電話基礎設施(也就是電話線,即雙絞銅線),通過DSL調變解調器將得到的數字資料轉換為高頻音,通過電話線傳輸到本地中心局(CO),然後在使用者線接入複用器(DSLAM)中被轉換回數字形式。

電纜因特網接入(cable Internet access)

電纜因特網接入利用了有線電視公司現有的有線電視基礎設施(電纜),光纜將電纜頭端連線到地區樞紐,從這裡使用傳統的同軸電纜到達各家各戶。因為該系統中應用了光纖和同軸電纜,因此經常被稱為混合光纖同軸(Hybrid Fiber Coax,HFC)系統。

與DSL類似,電纜調變解調器將資料轉換為模擬訊號,通過電纜傳輸到電纜頭端中的電纜調變解調器端接系統(Cable Modem Termination System,CMTS)中,再由CMTS將其轉換回數字形式。

電纜因特網接入的一個重要特徵是共享廣播媒體,如果幾個使用者同時下載資料,那麼實際下載速率會大大低於電纜總計下載速率,但是使用者很少會在完全相同的時刻請求網頁。

光纖到戶(Fiber To The Home,FTTH)

FTTH指的是從本地中心局對家庭直接提供一條光纖路徑,提供每秒千兆位元範圍的因特網接入速率。一般從中心局出來的每根光纖由多個家庭共享,當相對接近這些家庭的位置時,才會分成每戶一根光纖。

這種光纖分佈體系結構有兩種:主動光纖網路(Active Optical Network,AON)和被動光纖網路(Passive Optical Network,PON),AON本質上是交換因特網,PON結構如下圖:

PON結構中每個家庭有一個光纖網路端接器(Optical Network Terminator,ONT),由專門的光纖連線到臨近的光纖分配器(splitter),該分配器將多個家庭集結到一根共享的光纖上,該光纖再連線到本地電話和公司的中心局中的光纖線路端接器(Optical Line Terminator,OLT),該OLT提供了光訊號和電訊號之間的轉換,經過本地電話公司路由器與因特網相連。

撥號和衛星

在無法提供DSL、電纜、FTTH的地方(比如鄉村環境),能夠使用衛星鏈路將住宅以超過1Mbps的速率與因特網相連。

使用傳統電話線的撥號接入與DSL基於相同的模式,家庭的調變解調器經過電話線連線到ISP的調變解調器,但是撥號接入的速率只有56kbps。

企業(和家庭)接入:乙太網和WiFi

乙太網

在公司、大學和越來越多的家庭環境中,使用區域網(LAN)將端系統連線到邊緣路由器,乙太網是目前為止最流行的區域網接入技術。

乙太網使用者使用雙絞銅線與一臺乙太網交換機相連,乙太網交換機或這樣相連的交換機網路與更大的因特網相連。

使用乙太網接入,使用者通常以100Mbps或1Gbps速率接入乙太網交換機,而伺服器可能具有1Gbps甚至10Gbps的接入速率。

WiFi

WiFi是無線LAN接入技術,一個無線LAN使用者通常必須位於接入點幾十米範圍內。

廣域無線接入:3G和LTE

手機等裝置應用了與蜂窩行動電話相同的無線基礎設施,通過蜂窩網提供商運營的基站來發送和接收分組,與WiFi不同的是,一個使用者僅需要位於基站的數萬米範圍內。

3G是第三代無線技術,提供了超過1Mbps的速率;4G是第四代無線技術。

LTE源於3G技術,能夠取得超過10Mbps的速率。

物理媒體

對於每個發射器到接收器(比如一個路由器到另一個路由器),通過跨越一種物理媒體(physical medium)傳播電磁波或光脈衝來發送位元。

物理媒體分為以下兩類:

  • 導引型媒體(guided media):電波沿著固體媒體前行,如光纜、雙絞銅線或同軸電纜;
  • 非導引型媒體(unguided media):電波在空氣或外層空間中傳播,例如無線區域網或數字衛星頻道。

網路核心

網路核心由互聯因特網端系統的分組交換機和鏈路構成的網狀網路,如下圖加粗線所勾畫出的部分。

通過網路鏈路和交換機移動資料的兩種基本方法:電路交換(circuit switching)和分組交換(packet switching)。

分組交換

如果某源端系統或分組交換機經過一條鏈路傳送一個 L L L位元的分組,鏈路傳輸的速率為 R R R位元/秒,則傳輸該分組的時間為 L / R L/R L/R秒。

儲存轉發傳輸

儲存轉發傳輸(store-and-forward transmission)是指在交換機能夠開始向輸出鏈路傳輸該分組的第一個位元之前,必須接收到整個分組。

通過由 N N N條速率均為 R R R的鏈路組成的路徑(也就是說路徑中有 N − 1 N-1 N1臺路由器),傳送一個分組時延為: d 端 到 端 = N L R d_{端到端}=N\frac{L}{R} d=NRL

(本行結論待驗證)實際上,有多個分組連續傳送時,路由器會在完全接收到一個分組後立刻傳送給下一個接收端,因此,傳送 P P P個分組的時延為: d 端 到 端 = N ( N + P − 1 ) L R d_{端到端}=N\frac{(N+P-1)L}{R} d=NR(N+P1)L

排隊時延和分組丟失

每臺分組交換機有多條鏈路與之相連,對於每條相連的鏈路,該分組交換機具有一個輸出快取(output buffer,也成為輸出佇列(output queue)),用於儲存路由器準備發往那條鏈路的分組。

當一個分組到達時,如果輸出快取中有其他分組,則會進行等待,會產生排隊時延(queuing delay)。如果輸出快取已滿,則會將到達的分組或快取中的某個分組丟棄,出現分組丟失(丟包)(packet loss)現象。

轉發表和路由選擇協議

在因特網中,每個端系統具有一個成為IP地址的地址。當源主機要向目的端系統傳送一個分組時,源在該分組的首部包含了該目的地的IP地址。

每臺路由器具有一個轉發表(forwarding table),用於將目的地址對映成輸出鏈路。當某分組到達一臺路由器時,路由器檢查該地址,並用這個目的地址搜尋器轉發表,以發現適當的出鏈路。路由器則將分組導向該出鏈路。

因特網具有一些特殊的路由選擇協議(routing protocol),用於自動設定轉發表。

電路交換

傳送方傳送資料前,網路必須在傳送方和接收方之間建立一條連線,該連線被稱為一條電路(circuit)。

如下圖,4條鏈路互聯了4臺交換機,每條鏈路中有4條電路,如果兩臺臨近交換機之間每條鏈路具有1Mbps傳輸速率,則每個端到端電路交換連結獲得250kbps專用的傳輸速率。

電路交換網路中的複用

鏈路中的電路是通過頻分複用(Frequency-Division Multiplexing,FDM)或時分複用(Time-Division Multiplexing,TDM)來實現的。

對於FDM,鏈路的頻譜由跨越鏈路建立的所有連線共享。特別是,在連線期間鏈路為每條連線專用一個頻段。在電話網路中,這個頻段的寬度通常為4kHz(即每秒4000週期)。毫無疑問,該頻段的寬度成為頻寬(band-width)。調頻無線電臺也適用FDM來共享88MHz~108MHz的頻譜,其中每個電臺被分配一個特定的頻段。

對於TDM,時間被劃分為固定期間的幀,並且每個幀又被劃分為固定數量的時隙。當網路跨越一條鏈路建立一條連線時,網路在每個幀中為該連線指定一個時隙。這些時隙專門由該連線單獨使用,一個時隙(在每個幀內)可用於傳輸該連線的資料。

分組交換和電路交換的對比

  • 分組交換:頻寬可共享,但時延可變而不可預測;
  • 電路交換:預留電路,但存在靜默期浪費資源。

網路的網路

  • 網路結構1:用單一的全球傳輸ISP連線所有接入ISP;
  • 網路結構2:用多個互聯的全球傳輸ISP連線所有接入ISP;
  • 網路結構3:分層連線ISP,多個互聯的全球傳輸ISP為第一層ISP,根據區域逐層向下接入(比如中國,國家與第一層ISP連線,省級ISP與國家級ISP連線,市級ISP與省級ISP連線);
  • 網路結構4:在網路結構3的基礎上,增加PoP、多宿、對等和IXP
    • 存在點(Point of Presence,PoP):PoP是提供商網路中的一臺或多臺路由器群組,客戶要與提供商ISP連線,可以將它的路由器連線到PoP中的一臺路由器上;
    • 多宿(multi-home):多宿是指可以與兩個或更多提供商ISP連線,當一個提供商ISP故障還可以保證正常傳送和接收分組;
    • 對等(peer):相同等級結構層次的臨近一對ISP對等,也就是能夠直接進行連線,使它們之間的所有流量經直接連線而不是通過上游的中間ISP傳輸;
    • 因特網交換點(Internet Exchange Point,IXP):IXP是一個匯合點,多個ISP能夠在這裡一起對等。
  • 網路結構5:在網路結構4頂部增加內容提供商網路(content provider network),其與低層的ISP對等,其他ISP可以直接與它們相連或者通過IXP與它們相連。

分組交換網中的時延、丟包和吞吐量

分組交換網中的時延概述

  • 節點處理時延(nodal processing delay):檢查分組首部和決定將該分組導向何處所需要的時間是處理時延的一部分。高速路由器的處理時延通常是微妙或更低的數量級;
  • 排隊時延(queuing delay):在佇列中,當分組在鏈路上等待傳輸時,經受排隊時延。當佇列為空時,排隊時延為0;
  • 傳輸時延(transmission delay):傳輸時延是將所有分組的位元推向鏈路所需要的時間(並不是到達下一個路由器的時間),對於一條速率為 R = 10 M b p s R=10Mbps R=10Mbps的鏈路,長度為 L L L的分組,傳輸時延是 L / R L/R L/R(注意這裡的 R R R並不是路由器之間的傳輸速率)。
  • 傳播時延(propagation delay):從鏈路的起點(即從起始路由器推出分組後)到終點路由器的傳播所需要的時間是傳播時延。傳播速率取決於該鏈路的物理媒體(雙絞銅線、光纖等),其速率範圍是 2 ∗ 1 0 8 2*10^8 2108~ 3 ∗ 1 0 8 m / s 3*10^8m/s 3108m/s,也就是等於或小於光速。根據兩臺路由器之間的距離可以得出傳播時延。

排隊時延和丟包

排隊時延

a a a表示分組到達佇列的平均速率( a a a的單位是分組/秒,即pkt/s),傳輸速率是 R R R,每個分組的長度都為 L L L位元,則位元到達佇列的平均速率是 L a La Labps。

假設佇列非常大,能無限容納位元,比率 L a / R La/R La/R成為流量強度(traffic intensity)。

如果流量強度大於 1 1 1,則位元到達佇列的平均速率超過從該佇列傳輸出去的速率,這時,佇列趨於無限增加,排隊時延將無窮大,因此,流量工程中設計系統時,流量強度不能大於 1 1 1

丟包

排隊的容量是有限的,隨著流量強度接近1,到達的分組將發現一個滿的佇列。由於沒有地方儲存這個分組,路由器將丟棄(drop)該分組,即該分組將會丟失(lost)。

端到端時延

端系統、應用程式和其他時延

除了處理時延、傳輸時延和傳播時延,端系統中海油一些其他重要時延。

  • 希望向共享媒體傳輸分組的短系統可能有意地延遲它的傳輸,把這作為它與其他端系統共享媒體的協議的一部分;
  • 媒體分組化時延,出現在IP語音(VoIP)應用中。在VoIP中,傳送方在向因特網傳遞分組之前必須首先用編碼的數字化語音填充一個分組。這種填充一個分組的時間成為分組化時延,它可能較大,並能夠影響使用者噶收到的VoIP呼叫質量。

計算機網路中的吞吐量

從主機A到主機B跨越計算機網路傳送一個大檔案,在任何時間瞬間的瞬時吞吐量(instantaneous throughput)是主機B接收到該檔案的速率(以bps計)。

如果該檔案由 F F F位元組成,檔案B接收到所有 F F F位元用時 T T T秒,則檔案傳送的平均吞吐量(average throughput)是 F / T F/T F/Tbps。

如果中間經過多段鏈路,如下圖,則檔案傳輸的吞吐量是 m i n { R 1 , R 2 , . . . , R N } min\{R_{1},R_{2},...,R_{N}\} min{R1,R2,...,RN}。因特網核心一般配置高速率的鏈路,但是吞吐量依舊由最小速率的鏈路決定,因此,目前因特網對吞吐量的限制因素通常是接入網。

如下右側圖,一般公共鏈路的速率會設計的很大,如果設計過小則會成為傳輸瓶頸,同時,如果多個使用者共同使用該鏈路,該鏈路會分攤速率,使用者過多時也可能造成擁堵。

協議層次及其服務模型

分層的體系結構

網路設計者以分層(layer)的方式組織協議以及實現這些協議的網路硬體和軟體。每層通過在蓋層中執行某些動作或使用直接下層的服務來提供服務(service),即服務模型(service model)。一個協議層能夠用軟體、硬體或兩者的結合來實現。

分層的優點:

  • 模組化使更新系統元件更為容易。

分層的潛在缺點:

  • 一層可能冗餘較低層的功能。比如許多協議棧在基於每段鏈路和基於端到端兩種情況下,都提供了差錯恢復;
  • 某曾的功能可能需要僅在其他某曾才出現的資訊(如時間戳值),違反了層次分離的目標。

因特網的協議棧

綜合起來,各層的所有協議被稱為協議棧(protocol stack)。因特網的協議棧由5個層次組成:物理層、鏈路層、網路層、運輸層和應用層。

應用層

應用層是網路應用程式及他們的應用層協議存留的地方。應用層協議分佈在多個端系統上,而一個端系統中的應用程式使用協議與另一個端系統中的應用程式交換資訊分組,這種位於應用層的資訊分組成為報文(message)。如下是一些應用層協議:

  • HTTP:提供了Web文件的請求和傳送;
  • SMTP:提供了電子郵件報文的傳輸;
  • FTP:提供兩個端系統之間的檔案傳送;
  • DNS:域名系統,可以將類似www.ietf.org的域名轉換為IP地址。
運輸層

因特網的運輸層在應用程式端點之間傳送應用層報文。運輸層的分組成為報文段(segment)。在因特網中,有兩種運輸協議:

  • TCP:TCP向它的應用程式提供了面向連線的服務,這種服務包括了應用層報文向目的地的確保傳遞和流量控制(即傳送方/接收方速率匹配)。TCP也將長報文劃分為短報文,並提供擁塞控制機制,因此當網路擁塞時,源抑制其傳輸速率;
  • UDP:UDP協議向它的應用程式控制無連線服務。這是一種不提供不必要服務的服務,沒有可靠性,沒有流量控制,也沒有擁塞控制。
網路層

因特網的網路層負責將稱為資料報(datagram)的網路層分組從一臺主機移動到另一臺主機。在一臺源主機中的因特網運輸層協議向網路層遞交運輸層報文段和目的地址。網路層包含如下協議:

  • IP:IP協議定義了在資料報中的各個欄位以及端系統和路由器如何作用域這些欄位。IP僅有一個,所有具有網路層的因特網元件必須執行IP;
  • 路由選擇協議:根據該路由將資料報從源傳輸到目的地。儘管網路層包括了網際協議和一些路由選擇協議,但通常把它簡單地成為IP層。
鏈路層

網路層將資料報下傳給鏈路層,鏈路層沿著路徑將資料報傳遞給下一個節點,然後鏈路層將資料報再上傳給網路層,鏈路層的分組成為幀(frame)。

鏈路層提供的服務取決於應用於該鏈路的特定鏈路層協議。例如,某些協議基於鏈路提供可靠傳遞,從傳輸節點跨越一條鏈路到接收節點。和TCP不同,TCP是端到端的可靠交付。

由於資料報從源目的地傳送通常需要經過幾條鏈路,一個數據報可能被沿途不同鏈路上的不同鏈路層協議處理,所以玩呢個樓層將受到來自每個不同鏈路層協議的不同服務。

物理層

雖然鏈路層的任務是將整個幀從一個網路元素移動到鄰近的網路元素,而物理層的任務是將該幀中的一個個位元從一個節點移動到下一個節點。在物理層的協議也是鏈路相關的,並且進一步與該鏈路的實際傳輸媒體相關。

OSI模型

因特網協議棧並不是唯一的協議棧,還有開放系統互連(OSI)模型。

OSI模型包含7層:應用層、表示層、會話層、運輸層、網路層、資料鏈路層和物理層。其中5個與因特網協議棧同名的層功能大致相同,以下大致介紹表示層和會話層:

  • 表示層:使通訊的應用程式能夠解釋交換資料的含義。這些服務包括資料壓縮和資料加密以及資料描述(這使得應用程式不必擔心在各臺計算機中標識/儲存的內部格式不同的問題);
  • 會話層:提供了資料交換的定界和同步功能,包括了建立檢查點和恢復方案的方法。

封裝

如上圖所示,每層會對上一層資料進行封裝,封裝後的分組具有兩種型別的欄位:首部欄位和有效載荷欄位(payload field)。

  • 應用層:在傳送主機端,一個應用層報文(application-layer message) M M M被傳送到運輸層;
  • 運輸層:在最簡單的情況下,運輸層收取到應用層報文,在其上附加首部資訊 H t H_{t} Ht構成運輸層報文段(transport-layer segment),傳送到網路層。該首部將被接收端的運輸層使用, H t H_{t} Ht通常包含如下資訊:
    • 允許接收端運輸層向上向適當的應用程式交付報文的資訊;
    • 讓接受方能夠判斷報文中的位元是否在途中已經被改變的差錯測位資訊。
  • 網路層:網路層接受運輸層報文段,附加了如源和目的端系統地址等網路層首部資訊 H n H_{n} Hn,生成網路層資料報(network-layer datagram)傳送到鏈路層;
  • 鏈路層:鏈路層收到網路層資料報,在其上附加鏈路層首部資訊生成鏈路層幀(link-layer frame)傳送給物理層。

面對網路的攻擊

壞傢伙能夠經因特網將有害程式放入你的計算機中

在從因特網獲取資料時,可能伴隨著惡意軟體(malware),這些軟體可能進入並感染我們的裝置。

至今為止的多數惡意軟體是自我複製(self-replicationg)的,一旦它感染了一臺主機,就會從那臺主機尋求進入因特網上的其他主機,從而形成新的感染主機。我們的受害主機可能成為數以千計的類似受害裝置網路中的一員,它們被稱為殭屍網路(botnet)。

惡意軟體能夠以病毒或蠕蟲的形式擴散:

  • 病毒(virus)是一種需要某種形式的使用者互動來感染使用者裝置的惡意軟體;
  • 蠕蟲(worm)是一種無須任何明顯使用者互動就能進入裝置的惡意軟體。

壞傢伙能夠攻擊伺服器和網路基礎設施

另一種寬泛型別的安全性威脅成為拒絕服務攻擊(Denial-of-Service(DoS) attack)。DoS攻擊使得網路、主機或其他基礎設施部分不能由合法使用者使用。大多數因特網DoS攻擊屬於下列三種類型之一:

  • 弱點攻擊:這涉及向一臺目標主機上執行的易受攻擊的應用程式或作業系統傳送製作精細的報文。如果適當順序的多個分組傳送給一個易受攻擊的應用程式或作業系統,該伺服器可能停止執行,或者更糟糕的是主機可能崩潰;

  • 頻寬洪泛:攻擊者向目標主機發送大量的分組,分組數量之多使得目標的接入鏈路變得擁塞,使得合法的分組無法到達伺服器。

    如果某伺服器的接入速率是 R R Rbps,則攻擊者將需要以大約 R R Rbps的速率來產生危害。如果 R R R非常大的話,單一攻擊源可能無法產生足夠大的流量來傷害該伺服器。此外,如果從單一源發出所有流量的話,某上有路由器就鞥狗檢測出該攻擊並在改流量靠近伺服器之前就將其阻擋下來。

    下圖顯示的是分散式DoS(Distributed DoS,DDoS)中,攻擊者控制多個源,並讓每個源向目標猛烈傳送流量。使用這種方法,遍及所有受控源的聚合流量速率需要大約 R R R的能力來使該服務陷入癱瘓。DDoS攻擊通常利用數以千計的受害主機組成的殭屍網路。

  • 連線洪泛:攻擊者在目標主機中建立大量的半開或全開TCP連線。該主機因這些偽造的連線而陷入困境,並停止接收合法的連線。

壞傢伙能夠嗅探分組

在無線傳輸裝置的附近(也可以部署在有線環境中)放置一臺被動的接收機,該接收機能得到傳輸的每個分組的副本。記錄每個流經的分組副本的被動接收機成為分組嗅探器(packet sniffer)。

壞傢伙能夠偽裝成你信任的人

生成具有任意源地址、分組內容和目的地址的分組,然後將這個人工製作的分組傳輸到因特網中,因特網將忠實地將該分組轉發到目的地,這一切都極為容易。

將具有虛假源地址的分組注入因特網的能力成為IP哄騙(IP spoofing),而它只是一個使用者能冒充另一個使用者的許多方式的一種。