《計算機網絡》筆記-第1章計算機網絡和因特網

0. 前言

鑒于計算機網絡的重要性,以及即將開設的計算機網絡課程,我決定利用寒假的時間認真研讀《計算機網絡——自頂向下方法》前6章,并撰寫閱讀筆記。

愚認為,計算機網絡是計算機領域中基礎且重要的部分,必須牢固掌握。相對于各種框架、或者浮于表面的機器學習,計算機網絡才是能提高計算機素養的關鍵之一。值得我們花時間去閱讀、研究和實踐。

我接觸計算機網絡,是從一本叫做《網絡是如何連接》的小書開始的。這本書十分不錯,幫我打開了計算機網絡的大門。但這本書中的知識并不深入,也沒幫我形成完整的知識體系。所以,此次選擇更加權威而全面的《計算機網絡——自頂向下方法》進行閱讀,希望我能從中收獲更多。

這篇是《計算機網絡——自頂向下方法》第1章的學習筆記。由于我結合了英文版的內容,所以筆記中用到了一些英文,請大家見諒。不過,個人認為英語對計算機學生還是很重要的(后悔自己英語不好)。同時,筆記中既有原文內容,也有我自己的理解部分。如果存在某些名詞跟原文不符,我希望大家不要糾結。(愚認為,重要的在于理解思想,而不在于名詞解釋、或者概念背誦)

那,話不多說,開始沖。

1. What Is the Internet?

But what is the Internet? There are a couple of ways to answer this question. First, we can describe the nuts and bolts of the Internet, that is, the basic hardware and software components that make up the Internet. Second, we can describe the Internet in terms of a networking infrastructure that provides services to distributed applications.

什么是因特網?回答這個問題有兩種方式:其一,我們能夠描述因特網的具體構成,即構成因特網的基本硬件和軟件組件;其二,我們能夠根據為分布式應用提供服務的聯網基礎設施來描述因特網。

1.1. A Nuts-and-Bolts Description(用具體構成描述因特網)

1.png

客觀存在:

  • 主機(host) == 端系統(end system),接入因特網的設備,如圖中的電腦、手機、聯網汽車等

  • 通信鏈路(communication link),連接各端系統的物理媒介,圖中的線

  • 分組交換機(packet switch),通信鏈路中的交叉口。其中最著名的兩種是:

    • 路由器(router),圖中的圓形帶“X”體
    • 鏈路層交換機(link-layer switch),圖中的方形帶“X”體
  • 分組(packet),由一臺端系統發送給另一臺端系統的數據/信息包

主觀存在:

  • ISP(Internet Service Provider, 因特網服務提供商),為端系統提供接入因特網的服務。較低層的ISP管理某個區域,類似于校園網、公司網等;較高層的ISP管理整個國家,類似于聯通、移動等。

  • 協議(protocol),因特網中最重要的兩個協議是:

    • TCP(Transmission Control Protocol, 傳輸控制協議)
    • IP(Internet Protocol, 網際協議)

將因特網與現代物流系統類比:

因特網 物流
端系統 貨物寄送或到達的地方
通信鏈路 高速公路、鐵路、普通公路等
分組交換機 岔路口
分組 貨物
ISP 公路局、鐵路局等

1.2. A Services Description(用服務描述因特網)

  • 分布式應用程序(distributed application),各大網站

1.3. What Is a Protocol?

人們規定好的一套交流、行事的標準,就是協議

古代儒學、書信格式、普通話標準等等,都是協議。

學習計算機網絡,最重要的就在于理解網絡協議。

2. The Network Edge(網絡邊緣)

網絡邊緣主要包括:端系統和接入網

2.1. Access Networks(接入網)

  • 接入網(access networks),將端系統物理連接到其邊緣路由器的網絡

  • 邊緣路由器(edge router),端系統發送的數據,到達任何其它遠程端系統所經過的第一臺路由器

以上定義有待考察。

總而言之,接入網就是指連接互聯網與家庭、公司網絡的通信線路。其長度一般為幾百米到幾公里,因而被形象地稱為"最后一公里"。它包括 DSL、電纜、FTTH 等

2.1.1. DSL(Digital Subscriber Line, 數字用戶線)

DSL,即用電話線作為網線。它包括ADSL(Asymmetric Digital Subscriber Line,非對稱數字用戶線)、RADSL、HDSL和VDSL等等

用戶從提供本地電話接入的本地電話公司處,獲取DSL因特網接入,用戶的本地電話公司即是它的ISP。

2.png

如上圖所示,每個用戶的 DSL調制解調器(DSL modem) 使用現有電話線(雙絞銅線),與位于電話公司的本地中心局中的 數字用戶線接入復用器(DSLAM) 交換數據,分配器(splitter) 則將網絡信號與電話信號分開。

在電話線中,包含三個通道:

  • 電話信號通道位于0到4kHz頻段;
  • 網絡上行信號通道位于4kHz到50kHz頻段;
  • 網絡下行信號通道位于50kHz到1MHz頻段。

缺點:短距離。

2.1.2. Cable Internet Access(電纜因特網接入)

用電視線作為網線。由于在這個系統中應用了光纖和同軸電纜,又被稱為混合光纖同軸(Hybrid Fiber Coax, HFC)系統。

3.png

使用電纜接入因特網,需要電纜調制解調器(cable modem),家庭PC會連接到它的以太網接口。在電纜頭端(cable head end),有一個電纜調制解調器端接系統(cable modem termination system, CMTS),負責接收并處理各家庭傳來的網絡信號。在電纜中,也分為上行下行兩個信號通道。

缺點:多個家庭共享電纜,用的人越多,網速越慢。

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

根據光纖分布體系結構,可分為:

  • AON(active optical networks, 主動光纖網絡),從本地中心局到每戶設置一根光纖
  • PON(passive optical networks, 被動光纖網絡),從中心局出來的每根光纖由許多家庭共享,直到接近用戶的位置,才為每個用戶分配一根光纖,類似于樹杈狀

以較為常見的PON為例,如圖:

4.png

每個家庭都有一個光纖網絡端接器(optical network terminator, ONT),用戶將一臺家庭路由器與ONT相連,并經過這臺家庭路由器接入因特網。ONT通過專門的光纖連接到鄰近的光纖分配器(optical splitter),該分配器把一些家庭(少于100個)集結到一根共享光纖,該光纖再連接到中心局(central office)的光纖線路端接器(optical line terminator, OLT)。該OLT再經過中心局路由器與因特網相連。

2.1.4. 衛星與撥號

在一些鄉村環境,常使用衛星鏈路撥號接入的方式,但是網速很慢。

2.1.5. 以太網與WiFi

在公司、大學校園以及越來越多的家庭中,也常使用局域網(LAN),將端系統連接到邊緣路由器。

有線局域網常使用以太網技術;

無線局域網常使用WiFi技術。

2.1.6. 3G、4G與5G

手機等移動設備,則使用廣域無線接入的方式。通過蜂窩網提供商運營的基站來發送和接收分組,用戶需要位于基站的數萬米范圍內。

2.2. Physical Media(物理媒體)

分組數據所跨越的物理媒介,分為兩種類型:

  • 導引型媒體:電波沿著固體媒體前行,如光纖、雙絞銅線或同軸電纜
  • 非導引型媒體:電波在空氣或外層空間中傳播,如無線局域網或衛星

下面討論幾種導引型媒體:

  • 雙絞銅線:兩根絕緣銅線螺旋絞合形成雙絞線(減少干擾),許多雙絞線構成一根電纜

    • 優點:便宜
    • 缺點:傳輸速率取決于粗細和距離
    • 用途:局域網、DSL、撥號
  • 同軸電纜:兩個同心的銅導體

    • 優點:
    • 缺點:共享
    • 用途:電纜接入因特網
  • 光纖:細而柔軟的、能夠導引光脈沖的媒體,每個脈沖表示一個比特(bit)

    • 優點:網速高、抗干擾強
    • 缺點:發送接收的光設備(接收器、交換機等)成本高
    • 用途:光纖入戶

3. The Network Core(網絡核心)

下圖中,藍色加粗部分即為網絡核心:

5.png

通過網絡鏈路和交換機移動數據有兩種基本方法:分組交換電路交換

3.1. Packet Switching(分組交換)

  • 報文(message),源端系統向目的端系統發送的完整的數據信息,如圖像數據、音頻數據等。在傳遞過程中,報文會被分解為較小的數據塊,被稱為分組(packet)

  • 存儲轉發傳輸(store-and-forward transmission) 機制,分組交換機必須接收到整個分組,才能向輸出鏈路傳輸該分組的第一個比特。

  • 輸出緩存(output buffer),用于存儲路由器準備發往對應鏈路的分組,當該鏈路正忙于傳輸其它分組時,剛到達的分組必須在輸出緩存中等待。

  • 排隊時延(queuing delay),由于分組會遇到在輸出緩存中等待的情況,所以分組傳輸中會存在排隊時延。

  • 分組丟失(packet loss),由于緩存空間有限,當緩存已滿時,將出現分組丟失的情況。

  • 轉發表(forwarding table),存在于每臺路由器中,用于將目的地址映射成對應的輸出鏈路。路由器通過轉發表,判斷將當前分組轉發到哪一條輸出鏈路。

  • 路由選擇協議(routing protocol),用于自動地設置這些轉發表。例如,一個路由選擇協議可以決定從每臺路由器到每個目的地地最短路徑,并使用這些最短路徑結果來配置路由器中的轉發表。

3.2. Circuit Switching(電路交換)

在電路交換網絡中,端系統通信期間,會在沿路預留通信所需要的資源(緩存,鏈路傳輸速率)。而在分組交換網絡中,這些資源是不預留的。

傳統的電話網絡就是電路交換網絡的例子。在兩方通話期間,第三方不能插足,因為沒有多余的資源了。

電路交換主要通過 頻分復用(frequency-division multiplexing, FDM)時分復用(time-division multiplexing, TDM) 來實現。

6.png

如上圖所示,頻分復用是劃分頻譜,不同用戶不同頻段;時分復用是劃分時間,不同用戶不同時隙。

3.3. Packet Switching vs Circuit Switching

  • 分組交換:
    • 優點:更好的帶寬共享;更簡單、有效、成本低
    • 缺點:端到端的時延是可變和不可預測的
  • 電路交換:
    • 優點:穩定
    • 缺點:預留端到端帶寬是復雜的

分組交換勝出!

3.4. A Network of Networks(網絡的網絡)

年復一年,因特網用戶越來越多,導致網絡越來越大,從而形成了網絡的網絡。

端系統通過接入ISP進入因特網,只要所有的接入ISP互聯,所有的端系統就能夠彼此發送分組。那么,如何使所有的接入ISP互聯呢?

網絡的網絡結構演變如下:

  • 一種幼稚的方法是,使每個接入ISP直接與其它每個接入ISP連接。

  • 網絡結構1,用單一的全球傳輸ISP互聯所有接入ISP,全球ISP相當于每個接入ISP的提供商(ISP)。

  • 網絡結構2,由無數的接入ISP和多個 第一層ISP/全球ISP(tier-1 ISP) 組成。

  • 網絡結構3,擁有多層等級ISP。例如,在中國,每個城市有接入ISP,它們與省級ISP連接,省級ISP又與國家級ISP連接,國家級ISP最終與 第一層ISP(tier-1 ISP) 連接。

  • 網絡結構4,在網絡結構3的基礎上添加了如下內容:

    • PoP(points of presence, 存在點),一個PoP是提供商ISP中的一臺或多臺路由器(在同一位置)群組,客戶ISP借此與提供商ISP連接。

    • 多宿(multi-home),任何ISP(除第一層ISP外)都可以與一個或更多個提供商ISP連接。打比方說,就是你可以同時購買電信、聯通的寬帶,這樣一個掛了,你還可以選擇另一個。

    • 對等(peer),同等級相鄰的ISP能直接互聯,而不通過上級ISP,這樣兩者之間不需要付費,也可以不用向上級ISP交錢了。比如,南京市ISP與蘇州市ISP對等,就可以不用向國家ISP繳納這部分的錢,但南京市ISP要訪問深圳市ISP,依舊要向國家ISP交錢。

    • IXP(Internet Exchange Point, 因特網交換點),是由第三方公司提供的匯合點,多個ISP可以在這里一起對等。2016的因特網中,由400多個IXP。

  • 網絡結構5,在網絡結構4的基礎上添加了內容提供商網絡(content-provider networks),例如谷歌,它的專用網絡與較低層ISP對等,并“繞過”較高層ISP。如下圖:

    7.png

4. Delay, Loss, and Throughput in Packet-Switched Networks(分組交換中的延遲、丟包和吞吐量)

4.1. Overview of Delay in Packet-Switched Networks(分組交換網中的時延概述)

8.png

上圖所示的時延分為以下四種類型:

  • 處理時延(Processing Delay),路由器(分組交換機)檢查分組首部和決定將該分組導向何處。在節點處理之后,路由器將該分組引向通往B鏈路之前的隊列中。處理時延通常是微秒或更低的數量級。

  • 排隊時延(Queuing Delay),分組在路由器中等待傳輸時經受的時延,取決于當前隊列中分組的數量,即網絡流量。排隊時延可以是毫秒到微秒量級。

  • 傳輸時延(Transmission Delay),是將分組的所有比特推向鏈路(發射)所需要的時間。通常在毫秒到微秒量級。

  • 傳播時延(Propagation Delay),從該鏈路起點到達路由器B所需要的時間。在廣域網中,傳播時延為毫秒量級。

節點時延(d_{nodal}) = 處理時延(d_{proc}) + 排隊時延(d_{queue}) + 傳輸時延(d_{trans}) + 傳播時延(d_{prop})

4.2. Queuing Delay and Packet Loss(排隊時延和丟包)

節點時延中最為復雜和有趣的成分是排隊時延(其實,就是堵車消耗的時間)。

  • a表示分組到達隊列的平均速率(單位是分組/秒,即pkt/s),即路由器處理該分組的速率;
  • R表示傳輸速率,即從隊列中推出比特的速率;
  • L表示所有分組的平均比特長度;
  • La/R被稱為流量強度(traffic intensity)

如果La/R>1,則比特到達隊列的平均速率超過從該隊列傳輸出去的速率,即接收比送出去的快。同一時刻到達的分組越多,排隊時延將越大,因為\lim_{N\to \infty}N\tfrac{La}{R} = N

因此:

Design your system so that the traffic intensity is no greater than 1

當分組到達時,隊列已滿,那該分組獎會丟失(loss)

4.3. End-to-End Delay(端到端時延)

假設網絡是無擁塞的(因此排隊時延是微不足道的)。

端到端時延:d_{end-end} = N(d_{proc} + d_{trans} + d_{prop})

4.4. Throughput in Computer Networks(計算機網絡中的吞吐量)

除了時延和丟包,端到端吞吐量是計算機網絡中另一個至關重要的性能測度。包含如下兩個度量:

  • 瞬時吞吐量(instantaneous throughput):某一時刻的下載速率,以每秒傳送的比特數bps計。比如文件下載時,不斷變化的xxxkb/s

  • 平均吞吐量(average throughput):下載完整個文件的平均速率

另外,端到端的吞吐量,取決于端到端路徑中速率(bps)最小的鏈路,即瓶頸鏈路(bottleneck link)。論證如下:

假設有一臺服務器和一臺客戶機,他們通過兩條通信鏈路和一臺路由器相連,不考慮處理時延和傳輸時延,令R_s表示服務器到路由器之間的鏈路速率(bps),R_c表示路由器到客戶之間的鏈路速率(bps),特別注意:鏈路速率(bps)表示每秒傳送的比特數,而不是每秒前進的路程。如下圖:

9.png

根據R_sR_c的比較關系,可分為以下兩種情況:

  1. 假設R_s < R_c 且 R_s=1bit/s, R_c=2bit/s:在時刻1,有1bit從服務器到達路由器;在1s~2s間,雖然路由器到客戶端的鏈路1s能夠傳播2bit,但路由器此時只有1bit,所以該鏈路1s只能轉播1bit;在時刻2,1bit到達客戶端,新的1bit又到達了路由器;重復上述步驟。雖然R_c=2bit/s,但由于服務器到路由器的鏈路1s只能提供1bit,所以路由器到客戶端的鏈路速率也降至1bit/s

  2. 假設R_s > R_c 且 R_s=2bit/s, R_c=1bit/s:在時刻1,有2bit從服務器到達路由器;在1s~2s間,由于路由器到客戶端的鏈路1s只能夠傳播1bit,所以路由器還停留了1bit;在時刻2,1bit到達客戶端,新的1bit又到達了路由器,此時路由器保留了2bit。隨著時間推移,路由器積累的bit越來越多,這是一種最不希望的情況。

因此,對于這種簡單的兩鏈路網絡,其吞吐量為\tfrac{1}{2}min\{R_c, R_s\}(此處略不同于《計算機網絡——自頂向下方法》1.4.4節中的內容,愚認為書中存在紕漏)。

綜上所述,我們可以知道,端到端路徑中的瓶頸鏈路,決定了端到端的吞吐量。所以,在今天因特網中,對吞吐量的限制因素通常是接入網

另外,當有許多數據流通過一條鏈路時,一條高傳輸速率的鏈路也可能成為瓶頸鏈路。

5. Protocol Layers and Their Service Models(協議層次及其服務模型)

5.1. Layered Architecture(分層的體系結構)

分層是分析和設計大型系統的良好方法。

5.1.1. Protocol Layering(協議分層)

5層因特網協議棧(protocol stack, 各層的所有協議) 如下圖:

10.png

上層服務依賴于下層服務,下層服務為上層服務提供接口。

就像本書所說,我們采用 自頂向下方法(top-down approach) 進行解釋分析:

  • 應用層(Application),軟件實現。包含HTTP、SMTP、FTP、DNS等協議,應用層中的基本信息稱為報文(message)
  • 運輸層(Transport),軟件實現。包含TCP、UDP等協議,運輸層中的基本信息稱為報文段(segment)
  • 網絡層(Network),軟硬件實現。包含IP、路由選擇等協議,基本信息稱為數據報(datagram)
  • 鏈路層(Link),硬件實現。包含以太網、WiFi等協議,基本信息稱為幀(frame)
  • 物理層(Physical),硬件實現。包含關于雙絞銅線、光纖等鏈路的協議,基本信息為比特(bit)

5.1.2. The OSI Model(OSI模型)

1970s后期,國際標準化組織(ISO)提出計算機網絡圍繞7層來組織,稱為開發系統互連模型(OSI模型),如下:

11.png

相比于因特網5層模型,7層模型多了 表示層(Presentation)會話層(Session) 兩層。

為什么會少了兩層呢?因特網回答如下:

it’s up to the application developer.

這交給開發者處理。

5.2. Encapsulation(封裝)

封裝的意義:對于上一層傳來的數據信息,附加上當前層的附加信息。

對于每一層的數據信息,具有兩種類型的字段:首部字段(當前層信息)有效載荷字段(payload field, 來自上一層)

6. Networks Under Attack(面對攻擊網絡)

  • 僵尸網絡(botnet),被黑客入侵設備組成的網絡。
  • 病毒(virus),一種需要某種形式的用戶交互來感染用戶設備的惡意軟件。
  • 蠕蟲(worm),一種無須任何明顯用戶交互就能進入設備的惡意軟件。
  • DoS(denial-of-service attacks, 拒絕服務攻擊)
    • 弱點攻擊。攻擊目標主機上運行的應用程序,從而使主機崩潰或者控制主機。這不是pwn嗎!
    • 帶寬洪泛。攻擊者向目標主機發送大量分組,使其接入鏈路擁塞。
    • 連接洪泛。攻擊者在目標主機中創建大量的半開或全開的TCP連接。
  • DDoS(distributed DoS, 分布式DoS),黑客利用受害主機組成的僵尸網絡對服務器進行攻擊:
    12.png
  • 分組嗅探器(packet sniffer),記錄每個流經的分組副本的被動接收機。在無線傳輸設備的附近放置一臺被動的接收機,它就能得到傳輸的每個分組的副本。分組嗅探軟件——Wireshark。

等等等等。

7. History of Computer Networking and the Internet

  • 1960s,電話網絡統治著通信網絡,它主要采用電路交換的方式發送信息。
  • 1960s,MIT(麻省理工)的研究生Leonard Kleinrock、蘭德公司和NPL(英國國家物理實驗室)分別研究并發明了分組交換技術。
  • 1967年左右,Lawrence Roberts(Leonard Kleinrock的同事)公布了一個ARPAnet(ARPA,美國高級研究計劃署)的總體計劃,它是第一個分組交換計算機網絡,是因特網的祖先。
  • 1969年,第一個分組交換網絡ARPAnet落地,但只有4個節點。
  • 1972年,ARPAnet發展到15個節點,并完成了第一個端到端協議——NCP
  • 1970s早中期,其它分組交換網絡問世,包括:ALOHAnet(無線電網絡)、Telenet(BBN的商用分組交換網路)等,還有分時網絡:Tymnet和GE信息服務網。
  • 1970s,將各網絡互聯的工作得到了DARPA(美國國防部高級研究計劃署)的支持。
  • 1976年, Metcalfe 和 Boggs 基于ALOHAnet中的多路訪問協議,研制了以太網協議
  • 1970s末,TCP、UDP、IP協議在概念上已經完成。
  • 1983年1月1日,TCP/IP協議替代了NCP協議,成為ARPAnet新的標準主機協議。
  • 1980s初期,在ARPAnet發展的同時,法國啟動了Minitel項目,他的計劃是讓數據網絡進入每個家庭。在1990s中期,Minitel提供了20000多種服務,涵蓋了廣泛的范圍。Minitel在大量法國家庭中存在了10年后,大多數美國人才聽說因特網。
  • 1980s,BITNET為美國東北部的幾個大學之間提供電子郵件和文件傳輸。然后,建立了CSNET將沒有接入ARPAnet的大學研究人員連接到一起。1986年,又建立了NSFNET。
  • 1980s末期,連到公共因特網的主機數量達到1000000臺。
  • 1990s,ARPAnet已不復存在,NSFNET也于1995年退役,因特網步入商業化。
  • 1989~1991年間,Tim Berners-Lee發明了Web,并和他的同事研制了HTML、HTTP、Web服務器和瀏覽器,這是Web的4個關鍵部分。
  • 1995~2000,因特網飛速發展。
  • 2000~2001,因特網股票崩盤,許多因特網初創公司倒閉。
  • 2000至今,因特網家庭接入、速度越來越快、大公司部署專用網絡、“云”。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。