本文是我在大二學習計算機網路期間整理, 大部分內容都來自于謝希仁老師的《計算機網路》這本書,
為了內容更容易理解,我對之前的整理進行了一波重構,并配上了一些相關的示意圖便于理解,

@
目錄- 1. 計算機網路概述
- 1.1. 基本術語
- 1.2. 重要知識點總結
- 2. 物理層(Physical Layer)
- 2.1. 基本術語
- 2.2. 重要知識點總結
- 2.3. 補充
- 2.3.1. 物理層主要做啥?
- 2.3.2. 幾種常用的信道復用技術
- 2.3.3. 幾種常用的寬帶接入技術,主要是 ADSL 和 FTTx
- 3. 資料鏈路層(Data Link Layer)
- 3.1. 基本術語
- 3.2. 重要知識點總結
- 3.3. 補充
- 4. 網路層(Network Layer)
- 4.1. 基本術語
- 4.2. 重要知識點總結
- 5. 傳輸層(Transport Layer)
- 5.1. 基本術語
- 5.2. 重要知識點總結
- 5.3. 補充(重要)
- 6. 應用層(Application Layer)
- 6.1. 基本術語
- 6.2. 重要知識點總結
- 6.3. 補充(重要)
- 我的開源專案推薦
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

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/193870.html
標籤:Java
下一篇:類的“組合”、“封裝”
