大二逃課總結的1.2w字的電腦網路知識!掃盲!
- 2020 年 10 月 27 日
- 筆記
本文是我在大二學習電腦網路期間整理, 大部分內容都來自於謝希仁老師的《電腦網路》這本書。
為了內容更容易理解,我對之前的整理進行了一波重構,並配上了一些相關的示意圖便於理解。
@
1. 電腦網路概述
1.1. 基本術語
- 結點 (node) :網路中的結點可以是電腦,集線器,交換機或路由器等。
- 鏈路(link ) : 從一個結點到另一個結點的一段物理線路。中間沒有任何其他交點。
- 主機(host) :連接在網際網路上的電腦。
- ISP(Internet Service Provider) :網際網路服務提供者(提供商)。
- IXP(Internet eXchange Point) : 互聯網交換點 IXP 的主要作用就是允許兩個網路直接相連並交換分組,而不需要再通過第三個網路來轉發分組。
//labs.ripe.net/Members/fergalc/ixp-traffic-during-stratos-skydive
- RFC(Request For Comments) :意思是「請求評議」,包含了關於 Internet 幾乎所有的重要的文字資料。
- 廣域網 WAN(Wide Area Network) :任務是通過長距離運送主機發送的數據。
- 城域網 MAN(Metropolitan Area Network):用來將多個區域網進行互連。
- 區域網 LAN(Local Area Network) : 學校或企業大多擁有多個互連的區域網。
//conexionesmanwman.blogspot.com/
- 個人區域網 PAN(Personal Area Network) :在個人工作的地方把屬於個人使用的電子設備用無線技術連接起來的網路 。
//www.itrelease.com/2018/07/advantages-and-disadvantages-of-personal-area-network-pan/
- 分組(packet ) :網際網路中傳送的數據單元。由首部 header 和數據段組成。分組又稱為包,首部可稱為包頭。
- 存儲轉發(store and forward ) :路由器收到一個分組,先檢查分組是否正確,並過濾掉衝突包錯誤。確定包正確後,取出目的地址,通過查找表找到想要發送的輸出埠地址,然後將該包發送出去。
- 頻寬(bandwidth) :在電腦網路中,表示在單位時間內從網路中的某一點到另一點所能通過的「最高數據率」。常用來表示網路的通訊線路所能傳送數據的能力。單位是「比特每秒」,記為 b/s。
- 吞吐量(throughput ) :表示在單位時間內通過某個網路(或信道、介面)的數據量。吞吐量更經常地用於對現實世界中的網路的一種測量,以便知道實際上到底有多少數據量能夠通過網路。吞吐量受網路的頻寬或網路的額定速率的限制。
1.2. 重要知識點總結
- 電腦網路(簡稱網路)把許多電腦連接在一起,而互聯網把許多網路連接在一起,是網路的網路。
- 小寫字母 i 開頭的 internet(互聯網)是通用名詞,它泛指由多個電腦網路相互連接而成的網路。在這些網路之間的通訊協議(即通訊規則)可以是任意的。大寫字母 I 開頭的 Internet(互聯網)是專用名詞,它指全球最大的,開放的,由眾多網路相互連接而成的特定的互聯網,並採用 TCP/IP 協議作為通訊規則,其前身為 ARPANET。Internet 的推薦譯名為網際網路,現在一般流行稱為互聯網。
- 路由器是實現分組交換的關鍵構件,其任務是轉發收到的分組,這是網路核心部分最重要的功能。分組交換採用存儲轉發技術,表示把一個報文(要發送的整塊數據)分為幾個分組後再進行傳送。在發送報文之前,先把較長的報文劃分成為一個個更小的等長數據段。在每個數據端的前面加上一些由必要的控制資訊組成的首部後,就構成了一個分組。分組又稱為包。分組是在互聯網中傳送的數據單元,正是由於分組的頭部包含了諸如目的地址和源地址等重要控制資訊,每一個分組才能在互聯網中獨立的選擇傳輸路徑,並正確地交付到分組傳輸的終點。
- 互聯網按工作方式可劃分為邊緣部分和核心部分。主機在網路的邊緣部分,其作用是進行資訊處理。由大量網路和連接這些網路的路由器組成核心部分,其作用是提供連通性和交換。
- 電腦通訊是電腦中進程(即運行著的程式)之間的通訊。電腦網路採用的通訊方式是客戶-伺服器方式(C/S 方式)和對等連接方式(P2P 方式)。
- 客戶和伺服器都是指通訊中所涉及的應用進程。客戶是服務請求方,伺服器是服務提供方。
- 按照作用範圍的不同,電腦網路分為廣域網 WAN,城域網 MAN,區域網 LAN,個人區域網 PAN。
- 電腦網路最常用的性能指標是:速率,頻寬,吞吐量,時延(發送時延,處理時延,排隊時延),時延頻寬積,往返時間和信道利用率。
- 網路協議即協議,是為進行網路中的數據交換而建立的規則。電腦網路的各層以及其協議集合,稱為網路的體系結構。
- 五層體系結構由應用層,運輸層,網路層(網際層),數據鏈路層,物理層組成。運輸層最主要的協議是 TCP 和 UDP 協議,網路層最重要的協議是 IP 協議。
下面的內容會介紹電腦網路的五層體系結構:物理層+數據鏈路層+網路層(網際層)+運輸層+應用層。
2. 物理層(Physical Layer)
2.1. 基本術語
- 數據(data) :運送消息的實體。
- 訊號(signal) :數據的電氣的或電磁的表現。或者說訊號是適合在傳輸介質上傳輸的對象。
- 碼元( code) :在使用時間域(或簡稱為時域)的波形來表示數字訊號時,代表不同離散數值的基本波形。
- 單工(simplex ) : 只能有一個方向的通訊而沒有反方向的交互。
- 半雙工(half duplex ) :通訊的雙方都可以發送資訊,但不能雙方同時發送(當然也就不能同時接收)。
- 全雙工(full duplex) : 通訊的雙方可以同時發送和接收資訊。
- 失真:失去真實性,主要是指接受到的訊號和發送的訊號不同,有磨損和衰減。影響失真程度的因素:1.碼元傳輸速率 2.訊號傳輸距離 3.雜訊干擾 4.傳輸媒體品質
- 奈氏準則 : 在任何信道中,碼元的傳輸的效率是有上限的,傳輸速率超過此上限,就會出現嚴重的碼間串擾問題,使接收端對碼元的判決(即識別)成為不可能。
- 香農定理 :在頻寬受限且有雜訊的信道中,為了不產生誤差,資訊的數據傳輸速率有上限值。
- 基頻訊號(baseband signal) : 來自信源的訊號。指沒有經過調製的數字訊號或模擬訊號。
- 帶通(頻帶)訊號(bandpass signal) :把基頻訊號經過載波調製後,把訊號的頻率範圍搬移到較高的頻段以便在信道中傳輸(即僅在一段頻率範圍內能夠通過信道),這裡調製過後的訊號就是帶通訊號。
- 調製(modulation ) : 對訊號源的資訊進行處理後加到載波訊號上,使其變為適合在信道傳輸的形式的過程。
- 信噪比(signal-to-noise ratio ) : 指訊號的平均功率和雜訊的平均功率之比,記為 S/N。信噪比(dB)=10*log10(S/N)。
- 信道復用(channel multiplexing ) :指多個用戶共享同一個信道。(並不一定是同時)。
- 比特率(bit rate ) :單位時間(每秒)內傳送的比特數。
- 波特率(baud rate) :單位時間載波調製狀態改變的次數。針對數據訊號對載波的調製速率。
- 復用(multiplexing) :共享信道的方法。
- ADSL(Asymmetric Digital Subscriber Line ) :非對稱數字用戶線。
- 光纖同軸混合網(HFC 網) :在目前覆蓋範圍很廣的有線電視網的基礎上開發的一種居民寬頻接入網
2.2. 重要知識點總結
- 物理層的主要任務就是確定與傳輸媒體介面有關的一些特性,如機械特性,電氣特性,功能特性,過程特性。
- 一個數據通訊系統可劃分為三大部分,即源系統,傳輸系統,目的系統。源系統包括源點(或源站,信源)和發送器,目的系統包括接收器和終點。
- 通訊的目的是傳送消息。如話音,文字,影像等都是消息,數據是運送消息的實體。訊號則是數據的電器或電磁的表現。
- 根據訊號中代表消息的參數的取值方式不同,訊號可分為模擬訊號(或連續訊號)和數字訊號(或離散訊號)。在使用時間域(簡稱時域)的波形表示數字訊號時,代表不同離散數值的基本波形稱為碼元。
- 根據雙方資訊交互的方式,通訊可劃分為單向通訊(或單工通訊),雙向交替通訊(或半雙工通訊),雙向同時通訊(全雙工通訊)。
- 來自信源的訊號稱為基頻訊號。訊號要在信道上傳輸就要經過調製。調製有基頻調製和帶通調製之分。最基本的帶通調製方法有調幅,調頻和調相。還有更複雜的調製方法,如正交振幅調製。
- 要提高數據在信道上的傳遞速率,可以使用更好的傳輸媒體,或使用先進的調製技術。但數據傳輸速率不可能任意被提高。
- 傳輸媒體可分為兩大類,即導引型傳輸媒體(雙絞線,同軸電纜,光纖)和非導引型傳輸媒體(無線,紅外,大氣雷射)。
- 了有效利用光纖資源,在光纖幹線和用戶之間廣泛使用無源光網路 PON。無源光網路無需配備電源,其長期運營成本和管理成本都很低。最流行的無源光網路是乙太網無源光網路 EPON 和吉比特無源光網路 GPON。
2.3. 補充
2.3.1. 物理層主要做啥?
物理層主要做的事情就是 透明地傳送比特流。也可以將物理層的主要任務描述為確定與傳輸媒體的介面的一些特性,即:機械特性(介面所用接線器的一些物理屬性如形狀尺寸),電氣特性(介面電纜的各條線上出現的電壓的範圍),功能特性(某條線上出現的某一電平的電壓的意義),過程特性(對於不同功能能的各種可能事件的出現順序)。
物理層考慮的是怎樣才能在連接各種電腦的傳輸媒體上傳輸數據比特流,而不是指具體的傳輸媒體。 現有的電腦網路中的硬體設備和傳輸媒體的種類非常繁多,而且通訊手段也有許多不同的方式。物理層的作用正是儘可能地屏蔽掉這些傳輸媒體和通訊手段的差異,使物理層上面的數據鏈路層感覺不到這些差異,這樣就可以使數據鏈路層只考慮完成本層的協議和服務,而不必考慮網路的具體傳輸媒體和通訊手段是什麼。
2.3.2. 幾種常用的信道復用技術
- 頻分復用(FDM) :所有用戶在同樣的時間佔用不同的頻寬資源。
- 時分復用(TDM) :所有用戶在不同的時間佔用同樣的頻頻寬度(分時不分頻)。
- 統計時分復用 (Statistic TDM) :改進的時分復用,能夠明顯提高信道的利用率。
- 碼分復用(CDM) : 用戶使用經過特殊挑選的不同碼型,因此各用戶之間不會造成干擾。這種系統發送的訊號有很強的抗干擾能力,其頻譜類似於白雜訊,不易被敵人發現。
- 波分復用( WDM) :波分復用就是光的頻分復用。
2.3.3. 幾種常用的寬頻接入技術,主要是 ADSL 和 FTTx
用戶到互聯網的寬頻接入方法有非對稱數字用戶線 ADSL(用數字技術對現有的模擬電話線進行改造,而不需要重新布線。ASDL 的快速版本是甚高速數字用戶線 VDSL。),光纖同軸混合網 HFC(是在目前覆蓋範圍很廣的有線電視網的基礎上開發的一種居民寬頻接入網)和 FTTx(即光纖到······)。
3. 數據鏈路層(Data Link Layer)
3.1. 基本術語
- 鏈路(link) :一個結點到相鄰結點的一段物理鏈路。
- 數據鏈路(data link) :把實現控制數據運輸的協議的硬體和軟體加到鏈路上就構成了數據鏈路。
- 循環冗餘檢驗 CRC(Cyclic Redundancy Check) :為了保證數據傳輸的可靠性,CRC 是數據鏈路層廣泛使用的一種檢錯技術。
- 幀(frame) :一個數據鏈路層的傳輸單元,由一個數據鏈路層首部和其攜帶的封包所組成協議數據單元。
- MTU(Maximum Transfer Uint ) :最大傳送單元。幀的數據部分的的長度上限。
- 誤碼率 BER(Bit Error Rate ) :在一段時間內,傳輸錯誤的比特占所傳輸比特總數的比率。
- PPP(Point-to-Point Protocol ) :點對點協議。即用戶電腦和 ISP 進行通訊時所使用的數據鏈路層協議。以下是 PPP 幀的示意圖:
- MAC 地址(Media Access Control 或者 Medium Access Control) :意譯為媒體訪問控制,或稱為物理地址、硬體地址,用來定義網路設備的位置。在 OSI 模型中,第三層網路層負責 IP 地址,第二層數據鏈路層則負責 MAC 地址。因此一個主機會有一個 MAC 地址,而每個網路位置會有一個專屬於它的 IP 地址 。地址是識別某個系統的重要標識符,「名字指出我們所要尋找的資源,地址指出資源所在的地方,路由告訴我們如何到達該處。
- 網橋(bridge) :一種用於數據鏈路層實現中繼,連接兩個或多個區域網的網路互連設備。
- 交換機(switch ) :廣義的來說,交換機指的是一種通訊系統中完成資訊交換的設備。這裡工作在數據鏈路層的交換機指的是交換式集線器,其實質是一個多介面的網橋
3.2. 重要知識點總結
- 鏈路是從一個結點到相鄰節點的一段物理鏈路,數據鏈路則在鏈路的基礎上增加了一些必要的硬體(如網路適配器)和軟體(如協議的實現)
- 數據鏈路層使用的主要是點對點信道和廣播信道兩種。
- 數據鏈路層傳輸的協議數據單元是幀。數據鏈路層的三個基本問題是:封裝成幀,透明傳輸和差錯檢測
- 循環冗餘檢驗 CRC 是一種檢錯方法,而幀檢驗序列 FCS 是添加在數據後面的冗餘碼
- 點對點協議 PPP 是數據鏈路層使用最多的一種協議,它的特點是:簡單,只檢測差錯而不去糾正差錯,不使用序號,也不進行流量控制,可同時支援多種網路層協議
- PPPoE 是為寬頻上網的主機使用的鏈路層協議
- 區域網的優點是:具有廣播功能,從一個站點可方便地訪問全網;便於系統的擴展和逐漸演變;提高了系統的可靠性,可用性和生存性。
- 電腦與外接區域網通訊需要通過通訊適配器(或網路適配器),它又稱為網路介面卡或網卡。計算器的硬體地址就在適配器的 ROM 中。
- 乙太網採用的無連接的工作方式,對發送的數據幀不進行編號,也不要求對方發回確認。目的站收到有差錯幀就把它丟掉,其他什麼也不做
- 乙太網採用的協議是具有衝突檢測的載波監聽多點接入 CSMA/CD。協議的特點是:發送前先監聽,邊發送邊監聽,一旦發現匯流排上出現了碰撞,就立即停止發送。然後按照退避演算法等待一段隨機時間後再次發送。 因此,每一個站點在自己發送數據之後的一小段時間內,存在這遭遇碰撞的可能性。乙太網上的各站點平等的爭用乙太網信道
- 乙太網的適配器具有過濾功能,它只接收單播幀,廣播幀和多播幀。
- 使用集線器可以在物理層擴展乙太網(擴展後的乙太網仍然是一個網路)
3.3. 補充
- 數據鏈路層的點對點信道和廣播信道的特點,以及這兩種信道所使用的協議(PPP 協議以及 CSMA/CD 協議)的特點
- 數據鏈路層的三個基本問題:封裝成幀,透明傳輸,差錯檢測
- 乙太網的 MAC 層硬體地址
- 適配器,轉發器,集線器,網橋,乙太網交換機的作用以及適用場合
4. 網路層(Network Layer)
4.1. 基本術語
- 虛電路(Virtual Circuit) : 在兩個終端設備的邏輯或物理埠之間,通過建立的雙向的透明傳輸通道。虛電路表示這只是一條邏輯上的連接,分組都沿著這條邏輯連接按照存儲轉發方式傳送,而並不是真正建立了一條物理連接。
- IP(Internet Protocol ) : 網際協議 IP 是 TCP/IP 體系中兩個最主要的協議之一,是 TCP/IP 體系結構網際層的核心。配套的有 ARP,RARP,ICMP,IGMP。
- ARP(Address Resolution Protocol) : 地址解析協議。地址解析協議 ARP 把 IP 地址解析為硬體地址。
- ICMP(Internet Control Message Protocol ) :網際控制報文協議 (ICMP 允許主機或路由器報告差錯情況和提供有關異常情況的報告)。
- 子網掩碼(subnet mask ) :它是一種用來指明一個 IP 地址的哪些位標識的是主機所在的子網以及哪些位標識的是主機的位掩碼。子網掩碼不能單獨存在,它必須結合 IP 地址一起使用。
- **CIDR( Classless Inter-Domain Routing ) **:無分類域間路由選擇 (特點是消除了傳統的 A 類、B 類和 C 類地址以及劃分子網的概念,並使用各種長度的「網路前綴」(network-prefix)來代替分類地址中的網路號和子網號)。
- 默認路由(default route) :當在路由表中查不到能到達目的地址的路由時,路由器選擇的路由。默認路由還可以減小路由表所佔用的空間和搜索路由表所用的時間。
- 路由選擇演算法(Virtual Circuit) :路由選擇協議的核心部分。網際網路採用自適應的,分層次的路由選擇協議。
4.2. 重要知識點總結
- TCP/IP 協議中的網路層向上只提供簡單靈活的,無連接的,盡最大努力交付的數據報服務。網路層不提供服務品質的承諾,不保證分組交付的時限所傳送的分組可能出錯,丟失,重複和失序。進程之間通訊的可靠性由運輸層負責
- 在互聯網的交付有兩種,一是在本網路直接交付不用經過路由器,另一種是和其他網路的間接交付,至少經過一個路由器,但最後一次一定是直接交付
- 分類的 IP 地址由網路號欄位(指明網路)和主機號欄位(指明主機)組成。網路號欄位最前面的類別指明 IP 地址的類別。IP 地址是一種分等級的地址結構。IP 地址管理機構分配 IP 地址時只分配網路號,主機號由得到該網路號的單位自行分配。路由器根據目的主機所連接的網路號來轉發分組。一個路由器至少連接到兩個網路,所以一個路由器至少應當有兩個不同的 IP 地址
- IP 數據報分為首部和數據兩部分。首部的前一部分是固定長度,共 20 位元組,是所有 IP 數據包必須具有的(源地址,目的地址,總長度等重要地段都固定在首部)。一些長度可變的可選欄位固定在首部的後面。IP 首部中的生存時間給出了 IP 數據報在互聯網中所能經過的最大路由器數。可防止 IP 數據報在互聯網中無限制的兜圈子。
- 地址解析協議 ARP 把 IP 地址解析為硬體地址。ARP 的高速快取可以大大減少網路上的通訊量。因為這樣可以使主機下次再與同樣地址的主機通訊時,可以直接從高速快取中找到所需要的硬體地址而不需要再去廣播方式發送 ARP 請求分組
- 無分類域間路由選擇 CIDR 是解決目前 IP 地址緊缺的一個好辦法。CIDR 記法把 IP 地址後面加上斜線「/」,然後寫上前綴所所佔的位數。前綴(或網路前綴用來指明網路),前綴後面的部分是後綴,用來指明主機。CIDR 把前綴都相同的連續的 IP 地址組成一個「CIDR 地址塊」,IP 地址分配都以 CIDR 地址塊為單位。
- 網際控制報文協議是 IP 層的協議。ICMP 報文作為 IP 數據報的數據,加上首部後組成 IP 數據報發送出去。使用 ICMP 數據報並不是為了實現可靠傳輸。ICMP 允許主機或路由器報告差錯情況和提供有關異常情況的報告。ICMP 報文的種類有兩種 ICMP 差錯報告報文和 ICMP 詢問報文。
- 要解決 IP 地址耗盡的問題,最根本的辦法是採用具有更大地址空間的新版本 IP 協議-IPv6。 IPv6 所帶來的變化有 ① 更大的地址空間(採用 128 位地址)② 靈活的首部格式 ③ 改進的選項 ④ 支援即插即用 ⑤ 支援資源的預分配 ⑥IPv6 的首部改為 8 位元組對齊。
- 虛擬專用網路 VPN 利用公用的互聯網作為本機構專用網之間的通訊載體。VPN 內使用互聯網的專用地址。一個 VPN 至少要有一個路由器具有合法的全球 IP 地址,這樣才能和本系統的另一個 VPN 通過互聯網進行通訊。所有通過互聯網傳送的數據都需要加密。
- MPLS 的特點是:① 支援面向連接的服務品質 ② 支援流量工程,平衡網路負載 ③ 有效的支援虛擬專用網 VPN。MPLS 在入口節點給每一個 IP 數據報打上固定長度的「標記」,然後根據標記在第二層(鏈路層)用硬體進行轉發(在標記交換路由器中進行標記交換),因而轉發速率大大加快。
5. 傳輸層(Transport Layer)
5.1. 基本術語
- 進程(process) :指電腦中正在運行的程式實體。
- 應用進程互相通訊 :一台主機的進程和另一台主機中的一個進程交換數據的過程(另外注意通訊真正的端點不是主機而是主機中的進程,也就是說端到端的通訊是應用進程之間的通訊)。
- 傳輸層的復用與分用 :復用指發送方不同的進程都可以通過統一個運輸層協議傳送數據。分用指接收方的運輸層在剝去報文的首部後能把這些數據正確的交付到目的應用進程。
- TCP(Transmission Control Protocol) :傳輸控制協議。
- UDP(User Datagram Protocol) :用戶數據報協議。
- **埠(port) ** :埠的目的是為了確認對方機器是那個進程在於自己進行交互,比如 MSN 和 QQ 的埠不同,如果沒有埠就可能出現 QQ 進程和 MSN 交互錯誤。埠又稱協議埠號。
- 停止等待協議(stop-and-wait) :指發送方每發送完一個分組就停止發送,等待對方確認,在收到確認之後在發送下一個分組。
- 流量控制 : 就是讓發送方的發送速率不要太快,既要讓接收方來得及接收,也不要使網路發生擁塞。
- 擁塞控制 :防止過多的數據注入到網路中,這樣可以使網路中的路由器或鏈路不致過載。擁塞控制所要做的都有一個前提,就是網路能夠承受現有的網路負荷。
5.2. 重要知識點總結
- 運輸層提供應用進程之間的邏輯通訊,也就是說,運輸層之間的通訊並不是真正在兩個運輸層之間直接傳輸數據。運輸層嚮應用層屏蔽了下面網路的細節(如網路拓補,所採用的路由選擇協議等),它使應用進程之間看起來好像兩個運輸層實體之間有一條端到端的邏輯通訊信道。
- 網路層為主機提供邏輯通訊,而運輸層為應用進程之間提供端到端的邏輯通訊。
- 運輸層的兩個重要協議是用戶數據報協議 UDP 和傳輸控制協議 TCP。按照 OSI 的術語,兩個對等運輸實體在通訊時傳送的數據單位叫做運輸協議數據單元 TPDU(Transport Protocol Data Unit)。但在 TCP/IP 體系中,則根據所使用的協議是 TCP 或 UDP,分別稱之為 TCP 報文段或 UDP 用戶數據報。
- UDP 在傳送數據之前不需要先建立連接,遠地主機在收到 UDP 報文後,不需要給出任何確認。雖然 UDP 不提供可靠交付,但在某些情況下 UDP 確是一種最有效的工作方式。 TCP 提供面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束後要釋放連接。TCP 不提供廣播或多播服務。由於 TCP 要提供可靠的,面向連接的傳輸服務,這一難以避免增加了許多開銷,如確認,流量控制,計時器以及連接管理等。這不僅使協議數據單元的首部增大很多,還要佔用許多處理機資源。
- 硬體埠是不同硬體設備進行交互的介面,而軟體埠是應用層各種協議進程與運輸實體進行層間交互的一種地址。UDP 和 TCP 的首部格式中都有源埠和目的埠這兩個重要欄位。當運輸層收到 IP 層交上來的運輸層報文時,就能夠 根據其首部中的目的埠號把數據交付應用層的目的應用層。(兩個進程之間進行通訊不光要知道對方 IP 地址而且要知道對方的埠號(為了找到對方電腦中的應用進程))
- 運輸層用一個 16 位埠號標誌一個埠。埠號只有本地意義,它只是為了標誌電腦應用層中的各個進程在和運輸層交互時的層間介面。在互聯網的不同電腦中,相同的埠號是沒有關聯的。協議埠號簡稱埠。雖然通訊的終點是應用進程,但只要把所發送的報文交到目的主機的某個合適埠,剩下的工作(最後交付目的進程)就由 TCP 和 UDP 來完成。
- 運輸層的埠號分為伺服器端使用的埠號(0~1023 指派給熟知埠,1024~49151 是登記埠號)和客戶端暫時使用的埠號(49152~65535)
- UDP 的主要特點是 ① 無連接 ② 盡最大努力交付 ③ 面向報文 ④ 無擁塞控制 ⑤ 支援一對一,一對多,多對一和多對多的交互通訊 ⑥ 首部開銷小(只有四個欄位:源埠,目的埠,長度和檢驗和)
- TCP 的主要特點是 ① 面向連接 ② 每一條 TCP 連接只能是一對一的 ③ 提供可靠交付 ④ 提供全雙工通訊 ⑤ 面向位元組流
- TCP 用主機的 IP 地址加上主機上的埠號作為 TCP 連接的端點。這樣的端點就叫做套接字(socket)或插口。套接字用(IP 地址:埠號)來表示。每一條 TCP 連接唯一被通訊兩端的兩個端點所確定。
- 停止等待協議是為了實現可靠傳輸的,它的基本原理就是每發完一個分組就停止發送,等待對方確認。在收到確認後再發下一個分組。
- 為了提高傳輸效率,發送方可以不使用低效率的停止等待協議,而是採用流水線傳輸。流水線傳輸就是發送方可連續發送多個分組,不必每發完一個分組就停下來等待對方確認。這樣可使信道上一直有數據不間斷的在傳送。這種傳輸方式可以明顯提高信道利用率。
- 停止等待協議中超時重傳是指只要超過一段時間仍然沒有收到確認,就重傳前面發送過的分組(認為剛才發送過的分組丟失了)。因此每發送完一個分組需要設置一個超時計時器,其重轉時間應比數據在分組傳輸的平均往返時間更長一些。這種自動重傳方式常稱為自動重傳請求 ARQ。另外在停止等待協議中若收到重複分組,就丟棄該分組,但同時還要發送確認。連續 ARQ 協議可提高信道利用率。發送維持一個發送窗口,凡位於發送窗口內的分組可連續發送出去,而不需要等待對方確認。接收方一般採用累積確認,對按序到達的最後一個分組發送確認,表明到這個分組位置的所有分組都已經正確收到了。
- TCP 報文段的前 20 個位元組是固定的,後面有 4n 位元組是根據需要增加的選項。因此,TCP 首部的最小長度是 20 位元組。
- TCP 使用滑動窗口機制。發送窗口裡面的序號表示允許發送的序號。發送窗口後沿的後面部分表示已發送且已收到確認,而發送窗口前沿的前面部分表示不允許發送。發送窗口後沿的變化情況有兩種可能,即不動(沒有收到新的確認)和前移(收到了新的確認)。發送窗口的前沿通常是不斷向前移動的。一般來說,我們總是希望數據傳輸更快一些。但如果發送方把數據發送的過快,接收方就可能來不及接收,這就會造成數據的丟失。所謂流量控制就是讓發送方的發送速率不要太快,要讓接收方來得及接收。
- 在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的性能就要變壞。這種情況就叫擁塞。擁塞控制就是為了防止過多的數據注入到網路中,這樣就可以使網路中的路由器或鏈路不致過載。擁塞控制所要做的都有一個前提,就是網路能夠承受現有的網路負荷。擁塞控制是一個全局性的過程,涉及到所有的主機,所有的路由器,以及與降低網路傳輸性能有關的所有因素。相反,流量控制往往是點對點通訊量的控制,是個端到端的問題。流量控制所要做到的就是抑制發送端發送數據的速率,以便使接收端來得及接收。
- 為了進行擁塞控制,TCP 發送方要維持一個擁塞窗口 cwnd 的狀態變數。擁塞控制窗口的大小取決於網路的擁塞程度,並且動態變化。發送方讓自己的發送窗口取為擁塞窗口和接收方的接受窗口中較小的一個。
- TCP 的擁塞控制採用了四種演算法,即慢開始,擁塞避免,快重傳和快恢復。在網路層也可以使路由器採用適當的分組丟棄策略(如主動隊列管理 AQM),以減少網路擁塞的發生。
- 運輸連接的三個階段,即:連接建立,數據傳送和連接釋放。
- 主動發起 TCP 連接建立的應用進程叫做客戶,而被動等待連接建立的應用進程叫做伺服器。TCP 連接採用三報文握手機制。伺服器要確認用戶的連接請求,然後客戶要對伺服器的確認進行確認。
- TCP 的連接釋放採用四報文握手機制。任何一方都可以在數據傳送結束後發出連接釋放的通知,待對方確認後進入半關閉狀態。當另一方也沒有數據再發送時,則發送連接釋放通知,對方確認後就完全關閉了 TCP 連接
5.3. 補充(重要)
以下知識點需要重點關註:
- 埠和套接字的意義
- UDP 和 TCP 的區別以及兩者的應用場景
- 在不可靠的網路上實現可靠傳輸的工作原理,停止等待協議和 ARQ 協議
- TCP 的滑動窗口,流量控制,擁塞控制和連接管理
- TCP 的三次握手,四次揮手機制
6. 應用層(Application Layer)
6.1. 基本術語
- 域名系統(DNS) :域名系統(DNS,Domain Name System)將人類可讀的域名 (例如,www.baidu.com) 轉換為機器可讀的 IP 地址 (例如,220.181.38.148)。我們可以將其理解為專為互聯網設計的電話薄。
//www.seobility.net/en/wiki/HTTP_headers
- 文件傳輸協議(FTP) :FTP 是 File TransferProtocol(文件傳輸協議)的英文簡稱,而中文簡稱為「文傳協議」。用於 Internet 上的控制文件的雙向傳輸。同時,它也是一個應用程式(Application)。基於不同的作業系統有不同的 FTP 應用程式,而所有這些應用程式都遵守同一種協議以傳輸文件。在 FTP 的使用當中,用戶經常遇到兩個概念:”下載”(Download)和”上傳”(Upload)。 “下載”文件就是從遠程主機拷貝文件至自己的電腦上;”上傳”文件就是將文件從自己的電腦中拷貝至遠程主機上。用 Internet 語言來說,用戶可通過客戶機程式向(從)遠程主機上傳(下載)文件。
- 簡單文件傳輸協議(TFTP) :TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是 TCP/IP 協議族中的一個用來在客戶機與伺服器之間進行簡單文件傳輸的協議,提供不複雜、開銷不大的文件傳輸服務。埠號為 69。
- 遠程終端協議(TELENET) :Telnet 協議是 TCP/IP 協議族中的一員,是 Internet 遠程登陸服務的標準協議和主要方式。它為用戶提供了在本地電腦上完成遠程主機工作的能力。在終端使用者的電腦上使用 telnet 程式,用它連接到伺服器。終端使用者可以在 telnet 程式中輸入命令,這些命令會在伺服器上運行,就像直接在伺服器的控制台上輸入一樣。可以在本地就能控制伺服器。要開始一個 telnet 會話,必須輸入用戶名和密碼來登錄伺服器。Telnet 是常用的遠程控制 Web 伺服器的方法。
- 萬維網(WWW) :WWW 是環球資訊網的縮寫,(亦作「Web」、「WWW」、「’W3’」,英文全稱為「World Wide Web」),中文名字為「萬維網」,”環球網”等,常簡稱為 Web。分為 Web 客戶端和 Web 伺服器程式。WWW 可以讓 Web 客戶端(常用瀏覽器)訪問瀏覽 Web 伺服器上的頁面。是一個由許多互相鏈接的超文本組成的系統,通過互聯網訪問。在這個系統中,每個有用的事物,稱為一樣「資源」;並且由一個全局「統一資源標識符」(URI)標識;這些資源通過超文本傳輸協議(Hypertext Transfer Protocol)傳送給用戶,而後者通過點擊鏈接來獲得資源。萬維網聯盟(英語:World Wide Web Consortium,簡稱 W3C),又稱 W3C 理事會。1994 年 10 月在麻省理工學院(MIT)電腦科學實驗室成立。萬維網聯盟的創建者是萬維網的發明者蒂姆·伯納斯-李。萬維網並不等同互聯網,萬維網只是互聯網所能提供的服務其中之一,是靠著互聯網運行的一項服務。
- 萬維網的大致工作工程:
- 統一資源定位符(URL) :統一資源定位符是對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。互聯網上的每個文件都有一個唯一的 URL,它包含的資訊指出文件的位置以及瀏覽器應該怎麼處理它。
- 超文本傳輸協議(HTTP) :超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網路協議。所有的 WWW 文件都必須遵守這個標準。設計 HTTP 最初的目的是為了提供一種發布和接收 HTML 頁面的方法。1960 年美國人 Ted Nelson 構思了一種通過電腦處理文本資訊的方法,並稱之為超文本(hypertext),這成為了 HTTP 超文本傳輸協議標準架構的發展根基。
HTTP 協議的本質就是一種瀏覽器與伺服器之間約定好的通訊格式。HTTP 的原理如下圖所示:
- 代理伺服器(Proxy Server) : 代理伺服器(Proxy Server)是一種網路實體,它又稱為萬維網高速快取。 代理伺服器把最近的一些請求和響應暫存在本地磁碟中。當新請求到達時,若代理伺服器發現這個請求與暫時存放的的請求相同,就返回暫存的響應,而不需要按 URL 的地址再次去互聯網訪問該資源。代理伺服器可在客戶端或伺服器工作,也可以在中間系統工作。
- 簡單郵件傳輸協議(SMTP) : SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。 SMTP 協議屬於 TCP/IP 協議簇,它幫助每台電腦在發送或中轉信件時找到下一個目的地。 通過 SMTP 協議所指定的伺服器,就可以把 E-mail 寄到收信人的伺服器上了,整個過程只要幾分鐘。SMTP 伺服器則是遵循 SMTP 協議的發送郵件伺服器,用來發送或中轉發出的電子郵件。
//www.campaignmonitor.com/resources/knowledge-base/what-is-the-code-that-makes-bcc-or-cc-operate-in-an-email/
- 搜索引擎 :搜索引擎(Search Engine)是指根據一定的策略、運用特定的電腦程式從互聯網上搜集資訊,在對資訊進行組織和處理後,為用戶提供檢索服務,將用戶檢索相關的資訊展示給用戶的系統。搜索引擎包括全文索引、目錄索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、門戶搜索引擎與免費鏈接列表等。
- 垂直搜索引擎 :垂直搜索引擎是針對某一個行業的專業搜索引擎,是搜索引擎的細分和延伸,是對網頁庫中的某類專門的資訊進行一次整合,定向分欄位抽取出需要的數據進行處理後再以某種形式返回給用戶。垂直搜索是相對通用搜索引擎的資訊量大、查詢不準確、深度不夠等提出來的新的搜索引擎服務模式,通過針對某一特定領域、某一特定人群或某一特定需求提供的有一定價值的資訊和相關服務。其特點就是「專、精、深」,且具有行業色彩,相比較通用搜索引擎的海量資訊無序化,垂直搜索引擎則顯得更加專註、具體和深入。
- 全文索引 :全文索引技術是目前搜索引擎的關鍵技術。試想在 1M 大小的文件中搜索一個詞,可能需要幾秒,在 100M 的文件中可能需要幾十秒,如果在更大的文件中搜索那麼就需要更大的系統開銷,這樣的開銷是不現實的。所以在這樣的矛盾下出現了全文索引技術,有時候有人叫倒排文檔技術。
- 目錄索引 :目錄索引( search index/directory),顧名思義就是將網站分門別類地存放在相應的目錄中,因此用戶在查詢資訊時,可選擇關鍵詞搜索,也可按分類目錄逐層查找。
6.2. 重要知識點總結
- 文件傳輸協議(FTP)使用 TCP 可靠的運輸服務。FTP 使用客戶伺服器方式。一個 FTP 伺服器進程可以同時為多個用戶提供服務。在進進行文件傳輸時,FTP 的客戶和伺服器之間要先建立兩個並行的 TCP 連接:控制連接和數據連接。實際用於傳輸文件的是數據連接。
- 萬維網客戶程式與伺服器之間進行交互使用的協議是超文本傳輸協議 HTTP。HTTP 使用 TCP 連接進行可靠傳輸。但 HTTP 本身是無連接、無狀態的。HTTP/1.1 協議使用了持續連接(分為非流水線方式和流水線方式)
- 電子郵件把郵件發送到收件人使用的郵件伺服器,並放在其中的收件人郵箱中,收件人可隨時上網到自己使用的郵件伺服器讀取,相當於電子郵箱。
- 一個電子郵件系統有三個重要組成構件:用戶代理、郵件伺服器、郵件協議(包括郵件發送協議,如 SMTP,和郵件讀取協議,如 POP3 和 IMAP)。用戶代理和郵件伺服器都要運行這些協議。
6.3. 補充(重要)
以下知識點需要重點關註:
- 應用層的常見協議(重點關注 HTTP 協議)
- 域名系統-從域名解析出 IP 地址
- 訪問一個網站大致的過程
- 系統調用和應用編程介面概念
我的開源項目推薦
- JavaGuide :「Java學習+面試指南」一份涵蓋大部分Java程式設計師所需要掌握的核心知識。準備 Java 面試,首選 JavaGuide!
- guide-rpc-framework :A custom RPC framework implemented by Netty+Kyro+Zookeeper.(一款基於 Netty+Kyro+Zookeeper 實現的自定義 RPC 框架-附詳細實現過程和相關教程)
- jsoncat :仿 Spring Boot 但不同於 Spring Boot 的一個輕量級的 HTTP 框架
- programmer-advancement :程式設計師應該有的一些好習慣+面試必知事項!
- springboot-guide :Not only Spring Boot but also important knowledge of Spring(不只是SpringBoot還有Spring重要知識點)
- awesome-java :Collection of awesome Java project on Github(Github 上非常棒的 Java 開源項目集合).
一些電腦的原創PDF下載地址: //pan.baidu.com/s/1dDoGv-Qlz2pJOcLJHHpxpw 密碼: llst