本文是我在大二學習計算機網路期間整理, 大部分內容都來自於謝希仁老師的《計算機網路》這本書。
為了內容更容易理解,我對之前的整理進行了一波重構,並配上了一些相關的示意圖便於理解。
@
1. 計算機網路概述
1.1. 基本術語
- 結點 (node) :網路中的結點可以是計算機,集線器,交換機或路由器等。
- 鏈路(link ) : 從一個結點到另一個結點的一段物理線路。中間沒有任何其他交點。
- 主機(host) :連線在因特網上的計算機。
- ISP(Internet Service Provider) :因特網服務提供者(提供商)。
- IXP(Internet eXchange Point) : 網際網路交換點 IXP 的主要作用就是允許兩個網路直接相連並交換分組,而不需要再通過第三個網路來轉發分組。
https://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) : 學校或企業大多擁有多個互連的區域網。
http://conexionesmanwman.blogspot.com/
- 個人區域網 PAN(Personal Area Network) :在個人工作的地方把屬於個人使用的電子裝置用無線技術連線起來的網路 。
https://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)。我們可以將其理解為專為網際網路設計的電話薄。
https://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 協議的傳送郵件伺服器,用來傳送或中轉發出的電子郵件。
https://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下載地址: https://pan.baidu.com/s/1dDoGv-Qlz2pJOcLJHHpxpw 密碼: llst