計算機網絡目錄
- 概述
-
- 主機之間的通信方式
- 通信方式
- 電路交換與分組交換
- 時延
- 實體層
-
- 實體層裝置:
- 資料鍊路層
-
- 信道複用技術
- PPP協定
- MAC位址
- 區域網路與以太網
- 資料鍊路層裝置
- 網絡層
-
- IP位址
- IP位址的編址方式
-
- IP位址的分類
-
- 子網路遮罩
- 子網劃分
- 無分類
- 位址解析協定ARP
- 網絡層裝置:
- 運輸層
-
- UDP
- TCP
-
- TCP三向交握
- TCP四次揮手
- TCP滑動控制
-
- TCP流量控制
- TCP擁塞控制
-
- 慢開始與擁塞避免
- 快重傳與快恢複
- 常見面試題
- 應用層
-
- DNS(域名系統)
-
- 域名解析過程
- FTP(檔案傳送協定)
- DHCP(動态主機配置協定)
- HTTP(超文本傳輸協定)
- 狀态碼
- Web頁面請求過程
- 每一層的協定總結
- 計算機網絡面試題
-
-
- 說一說POST與GET有哪些差別?
- 說一說TCP與UDP的差別
-
- 參考
概述

主機之間的通信方式
- 客戶-伺服器(C/S):客戶是服務的請求方,伺服器是服務的提供方。
- 對等(P2P):不區分客戶和伺服器。(點對點網絡)
通信方式
按照資料在傳輸線路上的傳輸方向,通信方式可分為:單工通信、半雙工通信與全雙工通信。
- 單工通信隻支援資料在一個方向上傳輸,又稱為單向通信。如無線電廣播和電視廣播都是單工通信。
- 半雙工通信允許資料在兩個方向上傳輸,但在同一時刻,隻允許資料在一個方向上傳輸,它實際上是一種可切換方向的單工通信。即通信雙方都可以發送資訊,但不能雙方同時發送,(當然也不能同時接受)。這種方式一般用于計算機網絡的非主幹線路中。
- 全雙工通信允許資料同時在兩個方向上傳輸,又稱為雙向同時通信,即通信的雙方可以同時發送和接收資料。如現代電話通信提供了全雙工傳送。這種通信方式主要用于計算機與計算機之間的通信。
電路交換與分組交換
-
電路交換
電路交換用于電話通信系統,兩個使用者要通信之前需要建立一條專用的實體鍊路,并且在整個通信過程中始終占用該鍊路。由于通信的過程中不可能一直在使用傳輸線路,是以電路交換對線路的使用率很低,往往不到 10%。
-
分組交換
每個分組都有首部和尾部,包含了源位址和目的位址等控制資訊,在同一個傳輸線路上同時傳輸多個分組互相不會影響,是以在同一條傳輸線路上允許同時傳輸多個分組,也就是說分組交換不需要占用傳輸線路。
在一個郵局通信系統中,郵局收到一份郵件之後,先存儲下來,然後把相同目的地的郵件一起轉發到下一個目的地,這個過程就是存儲轉發過程,分組交換也使用了存儲轉發過程。
時延
總時延 = 排隊時延 + 處理時延 + 傳輸時延 + 傳播時延
-
排隊時延
分組在路由器的輸入隊列和輸出隊列中排隊等待的時間,取決于網絡目前的通信量。
-
處理時延
主機或路由器收到分組時進行處理所需要的時間,例如分析首部、從分組中提取資料、進行差錯檢驗或查找适當的路由等。
-
傳輸時延
主機或路由器傳輸資料幀所需要的時間。
-
傳播時延
電磁波在信道中傳播所需要花費的時間,電磁波傳播的速度接近光速。
實體層
在OSI參考模型中,實體層(Physical Layer)是參考模型的最低層,也是OSI模型的第一層。
- 實體層的主要功能是:利用傳輸媒體為資料鍊路層提供實體連接配接,實作比特流的透明傳輸。
- 實體層的作用:實作相鄰計算機節點之間比特流的透明傳送,盡可能屏蔽掉具體傳輸媒體和實體裝置的差異。使其上面的資料鍊路層不必考慮網絡的具體傳輸媒體是什麼。“透明傳送比特流”表示經實際電路傳送後的比特流沒有發生變化,對傳送的比特流來說,這個電路好像是看不見的。
實體層裝置:
網卡,網線,集線器,中繼器(放大器),數據機
資料鍊路層
網絡層針對的還是主機之間的資料傳輸服務,而主機之間可以有很多鍊路,鍊路層協定就是為同一鍊路的主機提供資料傳輸服務。資料鍊路層将網絡層交下來的 IP 資料報組封裝成幀,在兩個相鄰節點間的鍊路上傳送幀。每一幀包括資料和必要的控制資訊。
在接收資料時,控制資訊使接收端能夠知道一個幀從哪個比特開始和到哪個比特結束。這樣,資料鍊路層在收到一個幀後,就可從中提出資料部分,上交給網絡層。
信道複用技術
- 頻分複用: 所有主機在相同的時間占用不同的頻率帶寬資源。
- 時分複用: 所有主機在不同的時間占用相同的頻率帶寬資源。(頻分、時分的複用效率不高)
- 統計時分複用: 是對時分複用的一種改進,不固定每個使用者在時分複用幀中的位置,隻要有資料就集中起來組成統計時分複用幀然後發送。
- 波分複用: 光的頻分複用。由于光的頻率很高,是以習慣上用波長而不是頻率來表示所使用的光載波。
- 碼分複用
PPP協定
網際網路使用者通常需要連接配接到某個 ISP 之後才能接入到網際網路,PPP 協定是使用者計算機和 ISP 進行通信時所使用的資料鍊路層協定。
PPP 的幀格式:
- F 字段為幀的定界符
- A 和 C 字段暫時沒有意義
- FCS 字段是使用 CRC 的檢驗序列
-
資訊部分的長度不超過 1500
PPP采用7EH作為一幀的開始和結束标志(F);其中位址域(A)和控制域(C)取固定值(A=FFH,C=03H) ;
MAC位址
MAC 位址是鍊路層位址,長度為 6 位元組(48 位),用于唯一辨別網絡擴充卡(網卡)。MAC位址也叫實體位址。
一台主機擁有多少個網絡擴充卡就有多少個 MAC 位址。例如筆記本電腦普遍存在無線網絡擴充卡和有線網絡擴充卡,是以就有兩個 MAC 位址。
區域網路與以太網
- 區域網路是一種典型的廣播信道,主要特點是網絡為一個機關所擁有,且地理範圍和站點數目均有限。主要有以太網、令牌環網、FDDI 和 ATM 等區域網路技術,目前以太網占領着有線區域網路市場。
-
以太網是一種星型拓撲結構區域網路。目前以太網使用交換機替代了集線器,交換機是一種鍊路層裝置,它不會發生碰撞,能根據 MAC 位址進行存儲轉發。
(擴充:按照地域範圍可以将網絡分為區域網路、廣域網、物聯網)
資料鍊路層裝置
網橋,交換機
交換機具有自學習能力,學習的是交換表的内容,交換表中存儲着 MAC 位址到接口的映射。(交換機通過自學機制,把學習到的裝置 MAC 位址和交換機端口号添加到 MAC 位址表,并根據 MAC 位址表進行資料轉發。)
網絡層
(在資料鍊路層通過MAC位址來尋址(找到目标裝置),資料鍊路層通過使用交換機将自學學習到的裝置 MAC 位址和交換機端口号添加到 MAC 位址表,并根據 MAC 位址表進行資料轉發。但在小範圍的網絡内使用交換機根據MAC位址來尋址是有效的,但若網絡太大時,MAC 位址表太大也無法快速查找到對應的 MAC 位址表項(MAC是實體位址,全球唯一,可以辨別某一台裝置,但無法用來辨別某一個網絡區域,沒有規律,效率太低,是以在區域網路的網絡連接配接中可以使用交換機,而不同區域網路使用路由器通過IP尋址,意思應該就是通過IP位址找到大概的地方,)。這時IP位址就登場了)
在計算機網絡中進行通信的兩個計算機之間可能會經過很多個資料鍊路,也可能還要經過很多通信子網。網絡層的任務就是選擇合适的網間路由和交換結點, 確定資料及時傳送。在發送資料時,網絡層把運輸層産生的封包段或使用者資料報封裝成分組和包進行傳送。在 TCP / IP 體系結構中,由于網絡層使用 IP 協定,是以分組也叫 IP 資料報,簡稱資料報。。
IP資料報格式:
- 版本 : 有 4(IPv4)和 6(IPv6)兩個值;
- 首部長度 : 占 4 位,是以最大值為 15。值為 1 表示的是 1 個 32 位字的長度,也就是 4 位元組。因為固定部分長度為 20 位元組,是以該值最小為 5。如果可選字段的長度不是 4 位元組的整數倍,就用尾部的填充部分來填充。
- 區分服務 : 用來獲得更好的服務,一般情況下不使用。
- 總長度 : 包括首部長度和資料部分長度。
- 生存時間 :TTL,它的存在是為了防止無法傳遞的資料報在網際網路中不斷兜圈子。以路由器跳數為機關,當 TTL 為 0 時就丢棄資料報。
- 協定 :指出攜帶的資料應該上交給哪個協定進行處理,例如 ICMP、TCP、UDP 等。
- 首部檢驗和 :因為資料報每經過一個路由器,都要重新計算檢驗和,是以檢驗和不包含資料部分可以減少計算的工作量。
- 辨別 : 在資料報長度過長進而發生分片的情況下,相同資料報的不同分片具有相同的辨別符。
- 片偏移 : 和辨別符一起,用于發生分片的情況。片偏移的機關為 8 位元組
IP位址
IP位址是IP 協定提供的一種統一的位址格式,IP 協定為網際網路上的每一個網絡和每一台主機配置設定一個邏輯位址,以此來屏蔽實體位址的差異。
P 位址由 32 位二進制數組成,為友善檢視和記錄,使用十進制數表示。
每個 IP 位址包括兩個辨別碼(ID),即網絡 ID 和主機 ID。同一個實體網絡上的所有主機都使用同一個網絡 ID,網絡上的一個主機(包括網絡上工作站,伺服器和路由器等)有一個主機 ID 與其對應。
IP位址的編址方式
IP位址的編碼經曆了三個階段:分類=》子網劃分=》無分類
IP位址的分類
IP 位址 ::= {< 網絡号 >, < 主機号 >},其中不同分類具有不同的網絡号長度,并且是固定的。
子網路遮罩
子網路遮罩是一個32位位址,是與IP位址結合使用的一種技術。它的主要作用有兩個,一是用于屏蔽IP位址的一部分以差別網絡辨別和主機辨別,并說明該IP位址是在區域網路上,還是在遠端網上。二是用于将一個大的IP網絡劃分為若幹小的子網絡。
網段位址:主機号全為 0 的位址,表示某個網段,比如:網段位址 192.168.10.0/24 表示的是網絡号為 192.168.10 的所有位址。
可根據 IP 位址和子網路遮罩計算網段位址,先将 IP 位址和子網路遮罩轉換成二進制數,然後将 IP 位址與子網路遮罩二進制數一位一位的做 AND 運算,再将結果轉換為十進制,就是網段位址。
是以對于A類位址,子網路遮罩為255.0.0.0,同理,C類位址的子網路遮罩為255.255.255.0;
先将 IP 位址和子網路遮罩轉換成二進制數,然後将 IP 位址與子網路遮罩二進制數一位一位的做 AND 運算,再将結果轉換為十進制,就是網段位址。
廣播位址:主機号全為 1 的位址,向同一個網段中的所有主機發送資料包的一個位址,比如:網段位址 192.168.10.0/24(/24表示子網路遮罩有24個連續的1) 的廣播位址是 192.168.10.255 。
子網劃分
子網路遮罩機制提供了子網劃分的方法。其作用是:減少網絡上的通信量;節省IP位址;便于管理;解決實體網絡本身的某些問題。使用子網路遮罩劃分子網後,子網内可以通信,跨子網不能通信,子網間通信應該使用路由器,并正确配置靜态路由資訊。
通過在主機号字段中拿一部分作為子網号,把兩級 IP 位址劃分為三級 IP 位址。
IP 位址 ::= {< 網絡号 >, < 子網号 >, < 主機号 >}
要使用子網,必須配置子網路遮罩。一個 B 類位址的預設子網路遮罩為 255.255.0.0,如果 B 類位址的子網占兩個比特,那麼子網路遮罩為 11111111 11111111 11000000 00000000,也就是 255.255.192.0。
子網劃分是從 IP 位址主機位的最左邊開始,把主機位劃入網絡位,得到多個子網位址。主機位變成網絡位的部分叫做子網号,劃分後的子網數量等于 2 的 N 次方,N 等于子網号的位數。即每把一位主機位變成網絡位,一個網段位址就變成兩個子網位址,子網位址的位址數量隻有原來網段位址的一半。
例子:一個學校有 150 台電腦,有三個電腦室,每個電腦室 50 台電腦。使用私有位址 192.168.0.0/24 給每個電腦室都配置設定一個網段位址。
網絡規劃步驟:
- 每個電腦室 50 台電腦,計算出子網位址的主機位是 6 位。
-
一文讓懂計算機網絡概述實體層資料鍊路層網絡層運輸層應用層Web頁面請求過程每一層的協定總結計算機網絡面試題參考 - 計算子網位址的網絡位,即 32 - 主機位 = 26 位。
- 使用私網位址 192.168.0.0/24 配置設定三個主機位同為 26 位的子網位址。子網号有 2 位,是以可以劃分出 4 個大小相同的子網位址。
5. 按照子網号從小到大的順序,配置設定 3 個子網位址給電腦室使用。即配置設定 192.168.0.0/26 、192.168.0.64/26 、192.168.0.128/26 這三個子網位址。
無分類
無分類編址 CIDR 消除了傳統 A 類、B 類和 C 類位址以及劃分子網的概念,使用網絡字首和主機号來對 IP 位址進行編碼,網絡字首的長度可以根據需要變化。
IP 位址 ::= {< 網絡字首号 >, < 主機号 >}
CIDR 的記法上采用在 IP 位址後面加上網絡字首長度的方法,例如 128.14.35.7/20 表示前 20 位為網絡字首。
CIDR 的位址掩碼可以繼續稱為子網路遮罩,子網路遮罩首 1 長度為網絡字首的長度。
位址解析協定ARP
ARP 實作由 IP 位址得到 MAC 位址。
一台主機要發送資料給另一台主機時,必須要知道目的主機的網絡層位址(即IP位址)。IP位址由網絡層來提供,但是僅有IP位址是不夠的。**IP資料封包必須封裝成幀才能通過資料鍊路進行發送。資料幀必須要包含目的MAC位址,是以發送端還必須擷取到目的MAC位址。**那麼如何擷取對方的mac位址呢?通過ARP(Address Resolution Protocol)協定可以根據IP位址擷取對方的MAC位址。
首先,每台主機都會在自己的 ARP 緩沖區中建立一個 ARP 清單,以表示 IP 位址和 MAC 位址的對應關系。當源主機需要将一個資料包要發送到目的主機時,會首先檢查自己 ARP 清單中是否存在該 IP 位址對應的 MAC 位址:如果有,就直接将資料包發送到這個 MAC 位址;如果沒有,就向本地網段發起一個 ARP 請求的廣播包,查詢此目的主機對應的 MAC 位址。
此 ARP 請求資料包裡包括源主機的 IP 位址、硬體位址、以及目的主機的 IP 位址。網絡中所有的主機收到這個 ARP 請求後,會檢查資料包中的目的 IP 是否和自己的 IP 位址一緻。如果不相同就忽略此資料包;如果相同,該主機首先将發送端的 MAC 位址和 IP 位址添加到自己的 ARP 清單中,如果 ARP 表中已經存在該 IP 的資訊,則将其覆寫,然後給源主機發送一個 ARP 響應資料包,告訴對方自己是它需要查找的 MAC 位址;源主機收到這個 ARP 響應資料包後,将得到的目的主機的 IP 位址和 MAC 位址添加到自己的 ARP 清單中,并利用此資訊開始資料的傳輸。如果源主機一直沒有收到 ARP 響應資料包,表示 ARP 查詢失敗。
網絡層裝置:
路由器
路由器有多個端口,分别連接配接不同的網絡區域,不同網絡區域的 IP 位址網絡号不同。它通過識别目的 IP 位址的網絡号,再根據路由表進行資料轉發。
- 路由器從功能上可以劃分為:路由選擇和分組轉發。
-
路由選擇協定劃分為兩大類:
自治系統内部的路由選擇:RIP 和 OSPF
自治系統間的路由選擇:BGP
網關工作在第四層傳輸層及其以上
運輸層
在網絡層不是就可以通過IP協定将一台主機的發送出來的分組交給目标主機嗎?那麼為什麼需要為什麼需要運輸層?
答:原因在于在網絡層,通信的兩端是兩台主機,而實際上真正通信的是主機中的程序,即一台主機中的程序與另一台主機中的一個程序在交換資料。是以通信的端點不是主機,而是主機中的程序。即端(port)到端通信(程序與程序之間)。網絡層為主機之間提供邏輯通信,運輸層為應用程序之間提供端到端的邏輯通信。
運輸層(transport layer)的主要任務就是負責向兩台主機程序之間的通信提供通用的資料傳輸服務。應用程序利用該服務傳送應用層封包。“通用的”是指并不針對某一個特定的網絡應用,而是多種應用可以使用同一個運輸層服務。
由于一台主機可同時運作多個線程,是以運輸層有複用和分用的功能。所謂複用就是指多個應用層程序可同時使用下面運輸層的服務,分用和複用相反,是運輸層把收到的資訊分别傳遞上面應用層中的相應程序。
另外,網絡層的傳輸是不可靠的,它隻負責資料包的發送,但它不保證資料包能夠被接收、不保證網絡包的按序傳遞、也不保證網絡包中的資料的完整性。如果需要保障網絡資料包的可靠性,那麼就需要由上層(傳輸層)的 TCP 協定來負責。因為 TCP 是一個工作在傳輸層的可靠資料傳輸的服務,它能確定接收端接收的網絡包是無損壞、無間隔、非備援和按序的。
端口号:端口号的主要作用是表示一台計算機中的特定程序所提供的服務。網絡中的計算機是通過IP位址來代表其身份的,它隻能表示某台特定的計算機,但是一台計算機上可以同時提供很多個服務,如資料庫服務、FTP服務、Web服務等,我們就通過端口号來差別相同計算機所提供的這些不同的服務,如常見的端口号21表示的是FTP服務;
運輸層中有兩個主要的協定:UDP 和 TCP
UDP
使用者資料報協定 UDP(User Datagram Protocol)是無連接配接的,盡最大可能傳遞,沒有擁塞控制,面向封包(對于應用程式傳下來的封包不合并也不拆分,隻是添加 UDP 首部),支援一對一、一對多、多對一和多對多的互動通信。
TCP
傳輸控制協定 TCP(Transmission Control Protocol)是面向連接配接的,提供可靠傳遞,有流量控制,擁塞控制,提供全雙工通信,面向位元組流(把應用層傳下來的封包看成位元組流,把位元組流組織成大小不等的資料塊),每一條 TCP 連接配接隻能是點對點的(一對一)。
-
TCP與UDP的差別
TCP 提供面向連接配接的服務。在傳送資料之前必須先建立連接配接,資料傳送結束後要釋放連接配接。TCP 不提供廣播或多點傳播服務。由于 TCP 要提供可靠的,面向連接配接的運輸服務(TCP 的可靠展現在 TCP 在傳遞資料之前,會有三次握手來建立連接配接,而且在資料傳遞時,有确認、視窗、重傳、擁塞控制機制,在資料傳完後,還會斷開連接配接用來節約系統資源),這難以避免增加了許多開銷,如确認,流量控制,計時器以及連接配接管理等。這不僅使協定資料單元的首部增大很多,還要占用許多處理機資源。
UDP 在傳送資料之前不需要先建立連接配接,遠地主機在收到 UDP 封包後,不需要給出任何确認。雖然 UDP 不提供可靠傳遞,但在某些情況下 UDP 确是一種最有效的工作方式(一般用于即時通信),比如:QQ 語音、 QQ 視訊 、直播等等。
TCP封包
一文讓懂計算機網絡概述實體層資料鍊路層網絡層運輸層應用層Web頁面請求過程每一層的協定總結計算機網絡面試題參考
- 16位源端口号:源主機的應用程式使用的端口号。
- 16位目的端口号:目的主機的應用程式使用的端口号。每個TCP頭部都包含源和目的端的端口号,這兩個值加上IP頭部中的源IP位址和目的IP位址可以唯一确定一個TCP連接配接
- 序号seq :用于對位元組流進行編号,例如序号為 301,表示第一個位元組的編号為 301,如果攜帶的資料長度為 100 位元組,那麼下一個封包段的序号應為 401。可以解決網絡包亂序問題。資料段在網絡中傳輸時,它們的順序可能會發生變化;接收端依據此序列号,便可按照正确的順序重組資料。
- 确認号 ack:期望收到的下一個封包段的序号。例如 B 正确收到 A 發送來的一個封包段,序号為 501,攜帶的資料長度為 200 位元組,是以 B 期望下一個封包段的序号為 701,B 發送給 A 的确認封包段中确認号就為 701。
- 資料偏移 :指的是資料部分距離封包段起始處的偏移量,實際上指的是首部的長度。
- 确認 ACK :當 ACK=1 時确認号字段有效,否則無效。TCP 規定,在連接配接建立後所有傳送的封包段都必須把 ACK 置 1。
- 同步 SYN :在連接配接建立時用來同步序号。當 SYN=1,ACK=0 時表示這是一個連接配接請求封包段。若對方同意建立連接配接,則響應封包中 SYN=1,ACK=1。是以,SYN=1表示這是一個連接配接請求,或連接配接接受封包。SYN這個标志位隻有在TCP建産連接配接時才會被置1,握手完成後SYN标志位被置0。
- 終止 FIN :用來釋放一個連接配接,當 FIN=1 時,表示此封包段的發送方的資料已發送完畢,并要求釋放連接配接。
- 視窗 :視窗值作為接收方讓發送方設定其發送視窗的依據。之是以要有這個限制,是因為接收方的資料緩存空間是有限的。
TCP三向交握
- 一開始,B 的 TCP 伺服器程序首先建立傳輸控制塊TCB,準備接受用戶端程序的連接配接請求。然後服務端程序就處于 LISTEN(監聽) 狀态,等待用戶端的連接配接請求。如有,立即作出響應。
- 第一次握手:A 的 TCP 用戶端程序也是首先建立傳輸控制塊 TCB。然後,在打算建立 TCP 連接配接時,向 B 發出連接配接請求封包段,這時首部中的同步位 SYN=1( SYN=1,ACK=0 時表示這是一個連接配接請求封包段),同時選擇一個初始序号 seq = x。TCP 規定,SYN 封包段(即 SYN = 1 的封包段)不能攜帶資料,但要消耗掉一個序号。這時,TCP 客戶程序進入 SYN-SENT(同步已發送)狀态。
- 第二次握手:B 收到連接配接請求封包後,如果同意建立連接配接,則向 A 發送确認。在确認封包段中應把 SYN 位和 ACK 位都置 1,确認号是 ack = x + 1,同時也為自己選擇一個初始序号 seq = y。請注意,這個封包段也不能攜帶資料,但同樣要消耗掉一個序号。這時 TCP 服務端程序進入 SYN-RCVD(同步收到)狀态。
- 第三次握手:TCP 客戶程序收到 B 的确認後,還要向 B 給出确認。**确認封包段的 ACK 置 1,确認号 ack = y + 1,而自己的序号 seq = x + 1。**這時 ACK 封包段可以攜帶資料。但如果不攜帶資料則不消耗序号,這種情況下,下一個資料封包段的序号仍是 seq = x + 1。這時,TCP 連接配接已經建立,A 進入 ESTABLISHED(已建立連接配接)狀态。
TCP四次揮手
- 第一次揮手:A 的應用程序先向其 TCP 發出連接配接釋放封包段,并停止再發送資料,主動關閉 TCP 連接配接。A 把連接配接釋放封包段首部的終止控制位 FIN 置 1,其序号 seq = u(等于前面已傳送過的資料的最後一個位元組的序号加 1),這時 A 進入 FIN-WAIT-1(終止等待1)狀态,等待 B 的确認。請注意:TCP 規定,FIN 封包段即使不攜帶資料,也将消耗掉一個序号。
- 第二次揮手:B 收到連接配接釋放封包段後立即發出确認,确認号是 ack = u + 1,而這個封包段自己的序号是 v(等于 B 前面已經傳送過的資料的最後一個位元組的序号加1),然後 B 就進入 CLOSE-WAIT(關閉等待)狀态。TCP 服務端程序這時應通知高層應用程序,因而從 A 到 B 這個方向的連接配接就釋放了,這時的 TCP 連接配接處于半關閉(half-close)狀态,即 A 已經沒有資料要發送了,但 B 若發送資料,A 仍要接收。也就是說,**從 B 到 A 這個方向的連接配接并未關閉,**這個狀态可能會持續一段時間。A 收到來自 B 的确認後,就進入 FIN-WAIT-2(終止等待2)狀态,等待 B 發出的連接配接釋放封包段。
- 第三次揮手:若 B 已經沒有要向 A 發送的資料,其應用程序就通知 TCP 釋放連接配接。這時 **B 發出的連接配接釋放封包段必須使 FIN = 1。**假定 B 的序号為 w(在半關閉狀态,B 可能又發送了一些資料)。B 還必須重複上次已發送過的确認号 ack = u + 1。這時 B 就進入 LAST-ACK(最後确認)狀态,等待 A 的确認。
- 第四次揮手:A 在收到 B 的連接配接釋放封包後,必須對此發出确認。在确認封包段中把 ACK 置 1,确認号 ack = w + 1,而自己的序号 seq = u + 1(前面發送的 FIN 封包段要消耗一個序号)。然後進入 TIME-WAIT(時間等待) 狀态。請注意,現在 TCP 連接配接還沒有釋放掉。必須經過時間等待計時器設定的時間 2MSL(MSL:最長封包段壽命)後,A 才能進入到 CLOSED 狀态,然後撤銷傳輸控制塊,結束這次 TCP 連接配接。當然如果 B 一收到 A 的确認就進入 CLOSED 狀态,然後撤銷傳輸控制塊。是以在釋放連接配接時,B 結束 TCP 連接配接的時間要早于 A。
TCP滑動控制
TCP流量控制
流量控制是為了控制發送方發送速率,保證接收方來得及接收。
TCP通過滑動視窗機制實作流量控制,接收方發送的确認封包中的視窗字段可以用來控制發送方視窗大小,進而影響發送方的發送速率。将視窗字段設定為 0,則發送方不能發送資料。
TCP擁塞控制
如果網絡出現擁塞,分組将會丢失,此時發送方會繼續重傳,進而導緻網絡擁塞程度更高。是以當出現擁塞時,應當控制發送方的速率。這一點和流量控制很像,但是出發點不同。流量控制是為了讓接收方能來得及接收,而擁塞控制是為了降低整個網絡的擁塞程度。
通過擁塞控制算法(慢開始、擁塞避免、快重傳、快恢複),根據全局網絡的擁塞程度來調整擁塞視窗的大小,改善網絡擁塞程度,進而盡可能減少丢包。
備注:****發送視窗的大小等于Min(接收視窗, 擁塞視窗),是以是兩種流量控制和擁塞控制的共同作用。
慢開始與擁塞避免
- 慢開始:發送的最初執行慢開始,令 cwnd = 1,發送方隻能發送 1 個封包段;當收到确認後,将 cwnd 加倍,是以之後發送方能夠發送的封包段數量為:2、4、8 …。當擁塞視窗達到慢開始門限值 ssthresh,改用擁塞避免算法。(當cwnd = ssthresh時,既可使用慢開始算法,也可使用擁塞避免算法)。
- 擁塞避免: 擁塞避免算法的思路是讓 cwnd 緩慢地增大,即每經過一個傳輸輪次就把發送方的擁塞視窗 cwnd 加1,而不是加倍。這樣,擁塞視窗 cwnd 按線性規律緩慢增長,比慢開始算法的擁塞視窗增長速率緩慢得多。如果出現了逾時,則令 ssthresh = cwnd / 2,然後重新執行慢開始。
一文讓懂計算機網絡概述實體層資料鍊路層網絡層運輸層應用層Web頁面請求過程每一層的協定總結計算機網絡面試題參考
快重傳與快恢複
在接收方,要求每次接收到封包段都應該對最後一個已收到的有序封包段進行确認。
重快傳:在發送方,如果收到三個重複确認,那麼可以知道下一個封包段丢失,此時執行快重傳,立即重傳下一個封包段。例如收到三個 M2,則 M3丢失,立即重傳M3。
快恢複算法:在這種情況下,隻是丢失個别封包段,而不是網絡擁塞。是以執行快恢複,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此時直接進入擁塞避免。
**注意:**慢開始和快恢複的快慢指的是 cwnd 的設定值,而不是 cwnd 的增長速率。慢開始 cwnd 設定為 1,而快恢複 cwnd 設定為 ssthresh。
常見面試題
【問題1】為什麼連接配接的時候是三次握手,關閉的時候卻是四次握手(或為什麼第二次揮手跟第三次不能合并, 第二次和第三次之間的等待是什麼?)?
答:因為當Server端收到Client端的SYN連接配接請求封包後,可以直接發送SYN+ACK封包。其中ACK封包是用來應答的,SYN封包是用來同步的。但是關閉連接配接時,當Server端收到FIN封包時,很可能并不會立即關閉SOCKET,是以隻能先回複一個ACK封包,告訴Client端,“你發的FIN封包我收到了”。隻有等到我Server端所有的封包都發送完了,我才能發送FIN封包,是以不能一起發送。故需要四步握手 。(通俗一點講:當伺服器執行第二次揮手之後, 此時證明用戶端不會再向服務端請求任何資料, 但是服務端可能還正在給用戶端發送資料(可能是用戶端上一次請求的資源還沒有發送完畢),是以此時服務端會等待把之前未傳輸完的資料傳輸完畢之後再發送關閉請求)
【問題2】為什麼TIME_WAIT狀态需要經過2MSL(最大封包段生存時間)才能傳回到CLOSE狀态?
答:雖然按道理,四個封包都發送完畢,我們可以直接進入CLOSE狀态了,但是我們必須假象網絡是不可靠的,有可以最後一個ACK丢失。是以TIME_WAIT狀态就是用來重發可能丢失的ACK封包。在Client發送出最後的ACK回複,但該ACK可能丢失。Server如果沒有收到ACK,将不斷重複發送FIN片段。是以Client不能立即關閉,它必須确認Server接收到了該ACK。Client會在發送出ACK之後進入到TIME_WAIT狀态。Client會設定一個計時器,等待2MSL的時間。如果在該時間内再次收到FIN,那麼Client會重發ACK并再次等待2MSL。所謂的2MSL是兩倍的MSL(Maximum Segment Lifetime)。MSL指一個片段在網絡中最大的存活時間,2MSL就是一個發送和一個回複所需的最大時間。如果直到2MSL,Client都沒有再次收到FIN,那麼Client推斷ACK已經被成功接收,則結束TCP連接配接。
【問題3】為什麼不能用兩次握手進行連接配接?
答:3次握手完成兩個重要的功能,既要雙方做好發送資料的準備工作(雙方都知道彼此已準備好),也要允許雙方就初始序列号進行協商,這個序列号在握手過程中被發送和确認。
現在把三次握手改成僅需要兩次握手,死鎖是可能發生的。作為例子,考慮計算機S和C之間的通信,假定C給S發送一個連接配接請求分組,S收到了這個分組,并發 送了确認應答分組。按照兩次握手的協定,S認為連接配接已經成功地建立了,可以開始發送資料分組。可是,C在S的應答分組在傳輸中被丢失的情況下,将不知道S 是否已準備好,不知道S建立什麼樣的序列号,C甚至懷疑S是否收到自己的連接配接請求分組。在這種情況下,C認為連接配接還未建立成功,将忽略S發來的任何資料分 組,隻等待連接配接确認應答分組。而S在發出的分組逾時後,重複發送同樣的分組。這樣就形成了死鎖。
【問題4】如果已經建立了連接配接,但是用戶端突然出現故障了怎麼辦(保活計時器的作用)?
TCP還設有一個保活計時器,顯然,用戶端如果出現故障,伺服器不能一直等下去,白白浪費資源。伺服器每收到一次用戶端的請求後都會重新複位這個計時器,時間通常是設定為2小時,若兩小時還沒有收到用戶端的任何資料,伺服器就會發送一個探測封包段,以後每隔75秒鐘發送一次。若一連發送10個探測封包仍然沒反應,伺服器就認為用戶端出了故障,接着就關閉連接配接。
【問題5】三次握手過程中可以攜帶資料嗎?
第一次、第二次握手不可以攜帶資料,而第三次握手是可以攜帶資料的。假如第一次握手可以攜帶資料的話,如果有人要惡意攻擊伺服器,那他每次都在第一次握手中的 連接配接請求封包段中放入大量的資料,并瘋狂重發。這會讓伺服器花費大量的記憶體空間來緩存這些封包段,這樣伺服器就更容易被攻擊了。對于第三次握手,此時用戶端已經處于連接配接狀态,他已經知道伺服器的接收、發送能力是正常的了,是以可以攜帶資料是情理之中。
【問題6】什麼是半連接配接隊列?
伺服器第一次收到用戶端的連接配接請求封包段并回複之後,就會處于SYN_RCVD(同步接收) 狀态,此時雙方還沒有完全建立其連接配接,伺服器會把此種狀态下請求連接配接放在一個隊列裡,我們把這種隊列稱之為半連接配接隊列。
當然還有一個全連接配接隊列,就是已經完成三次握手,建立起連接配接的就會放在全連接配接隊列中。如果隊列滿了就有可能會出現丢包現象。
應用層
上一節說到運輸層為應用程序提供端到端的通信服務,但不同網絡應用與應用程序之間還需要不同的通信規則,是以需要用到應用層。
應用層(application-layer)的任務是通過應用程序間的互動來完成特定網絡應用。應用層協定定義的是應用程序(程序:主機中正在運作的程式)間的通信和互動的規則。對于不同的網絡應用需要不同的應用層協定。在網際網路中應用層協定很多,如域名系統 DNS,支援網際網路應用的 HTTP 協定,支援電子郵件的 SMTP 協定等等。我們把應用層互動的資料單元稱為封包。
DNS(域名系統)
DNS 是一個分布式資料庫,提供了主機名和 IP 位址之間互相轉換的服務。這裡的分布式資料庫是指,每個站點隻保留它自己的那部分資料。
域名具有層次結構,從上到下依次為:根域名、頂級域名、二級域名。
域名解析過程
現在我有一台計算機,通過ISP(網際網路服務提供商)接入了網際網路,那麼ISP就會給我配置設定一個DNS伺服器,這個DNS伺服器不是權威伺服器,而是相當于一個代理的dns解析伺服器,他會幫你疊代權威伺服器傳回的應答,然後把最終查到IP傳回給你。
- 浏覽器緩存,浏覽器會緩存DNS記錄一段時間。 有趣的是,作業系統沒有告訴浏覽器儲存DNS記錄的時間,這樣不同浏覽器會儲存個自固定的一個時間(2分鐘到30分鐘不等)。
- 系統緩存,如果在浏覽器緩存裡沒有找到需要的記錄,浏覽器會做一個系統調用(windows裡是gethostbyname)。這樣便可獲得系統緩存中的記錄。在windows中可通過c盤裡一個叫hosts的檔案來設定,如果你在這裡指定了一個域名對應的ip位址,那浏覽器會首先使用這個ip位址。
- 路由器緩存,接着,前面的查詢請求發向路由器,它一般會有自己的DNS緩存。
- ISP DNS 緩存(本地域名伺服器),接下來要check的就是ISP緩存DNS的伺服器。在這一般都能找到相應的緩存記錄,大約80%的域名解析到這裡就完成了。
- 前面所有步驟沒有緩存的情況下,本地 DNS 伺服器會将請求轉發到網際網路上的根域,你的ISP的DNS伺服器從根域名伺服器開始進行搜尋,
-
根域名伺服器
全球僅有13台根域名伺服器,1個主根域名伺服器,其餘12為輔根域名伺服器。根域名收到請求後會檢視區域檔案記錄,若無則将其管轄範圍内頂級域名(如.com)伺服器IP告訴本地DNS伺服器;
-
頂級域名伺服器
頂級域名伺服器收到請求後檢視區域檔案記錄,若無則将其管轄範圍内主域名伺服器的IP位址告訴本地DNS伺服器;
-
主域名伺服器
主域名伺服器接受到請求後查詢自己的緩存,如果沒有則進入下一級域名伺服器進行查找,并重複該步驟直至找到正确紀錄;把IP位址告訴本地DNS伺服器。
-
儲存結果至緩存
本地域名伺服器把傳回的結果儲存到緩存,以備下一次使用,同時将該結果回報給用戶端,用戶端通過這個IP位址與web伺服器建立連結。
下面這個圖很好的诠釋了整個流程:
一文讓懂計算機網絡概述實體層資料鍊路層網絡層運輸層應用層Web頁面請求過程每一層的協定總結計算機網絡面試題參考
FTP(檔案傳送協定)
FTP 使用 TCP 進行連接配接,它需要兩個連接配接來傳送一個檔案:
- 控制連接配接:伺服器打開端口号 21 等待用戶端的連接配接,用戶端主動建立連接配接後,使用這個連接配接将用戶端的指令傳送給伺服器,并傳回伺服器的應答。
- 資料連接配接:用來傳送一個檔案資料。
根據資料連接配接是否是伺服器端主動建立,FTP 有主動和被動兩種模式:
- 主動模式:伺服器端主動建立資料連接配接,其中伺服器端的端口号為 20,用戶端的端口号随機,但是必須大于 1024,因為 0~1023 是熟知端口号。
一文讓懂計算機網絡概述實體層資料鍊路層網絡層運輸層應用層Web頁面請求過程每一層的協定總結計算機網絡面試題參考 - 被動模式:用戶端主動建立資料連接配接,其中用戶端的端口号由用戶端自己指定,伺服器端的端口号随機。 主動模式要求用戶端開放端口号給伺服器端,需要去配置用戶端的防火牆。被動模式隻需要伺服器端開放端口号即可,無需用戶端配置防火牆。但是被動模式會導緻伺服器端的安全性減弱,因為開放了過多的端口号。
一文讓懂計算機網絡概述實體層資料鍊路層網絡層運輸層應用層Web頁面請求過程每一層的協定總結計算機網絡面試題參考
DHCP(動态主機配置協定)
DHCP (Dynamic Host Configuration Protocol) 提供了即插即用的連網方式,使用者不再需要手動配置 IP 位址等資訊。
DHCP 配置的内容不僅是 IP 位址,還包括子網路遮罩、網關 IP 位址。
DHCP 工作過程如下:
- 用戶端發送 Discover 封包,該封包的目的位址為 255.255.255.255:67,源位址為 0.0.0.0:68,被放入 UDP 中,該封包被廣播到同一個子網的所有主機上。如果用戶端和 DHCP 伺服器不在同一個子網,就需要使用中繼代理。
- DHCP 伺服器收到 Discover 封包之後,發送 Offer 封包給用戶端,該封包包含了用戶端所需要的資訊。因為用戶端可能收到多個 DHCP 伺服器提供的資訊,是以用戶端需要進行選擇。
- 如果用戶端選擇了某個 DHCP 伺服器提供的資訊,那麼就發送 Request 封包給該 DHCP 伺服器。
- DHCP 伺服器發送 Ack 封包,表示用戶端此時可以使用提供給它的資訊
一文讓懂計算機網絡概述實體層資料鍊路層網絡層運輸層應用層Web頁面請求過程每一層的協定總結計算機網絡面試題參考
HTTP(超文本傳輸協定)
- 請求封包
GET http://www.example.com/ HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: max-age=0
Host: www.example.com
If-Modified-Since: Thu, 17 Oct 2019 07:18:26 GMT
If-None-Match: "3147526947+gzip"
Proxy-Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 xxx
param1=1¶m2=2
第一行是包含了請求方法、URL、協定版本;
接下來的多行都是請求首部 Header,每個首部都有一個首部名稱,以及對應的值。
一個空行用來分隔首部和内容主體 Body
最後是請求的内容主體(上面的例子是get請求,内容主體是param1=1¶m2=2)
- 響應封包
HTTP/1.1 200 OK
Age: 529651
Cache-Control: max-age=604800
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 648
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Nov 2020 17:53:39 GMT
Etag: "3147526947+ident+gzip"
Expires: Mon, 09 Nov 2020 17:53:39 GMT
Keep-Alive: timeout=4
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Proxy-Connection: keep-alive
Server: ECS (sjc/16DF)
Vary: Accept-Encoding
X-Cache: HIT
<!doctype html>
<html>
<head>
<title>Example Domain</title>
// 省略...
</body>
</html>
HTTP首部
狀态碼
Web頁面請求過程
1. DHCP 配置主機資訊(假設主機最開始沒有 IP 位址以及其它資訊,那麼就需要先使用 DHCP 來擷取)
- 主機生成一個 DHCP 請求封包,并将這個封包放入具有目的端口 67 和源端口 68 的 UDP 封包段中。
- 該封包段則被放入在一個具有廣播 IP 目的位址(255.255.255.255) 和源 IP 位址(0.0.0.0)的 IP 資料報中。
- 該資料報則被放置在 MAC 幀中,該幀具有目的位址 FF:FF:FF:FF:FF:FF,将廣播到與交換機連接配接的所有裝置。
- 連接配接在交換機的 DHCP 伺服器收到廣播幀之後,不斷地向上分解得到 IP 資料報、UDP 封包段、DHCP 請求封包,之後生成 DHCP ACK 封包,該封包包含以下資訊:IP 位址、DNS 伺服器的 IP 位址、預設網關路由器的 IP 位址和子網路遮罩。該封包被放入 UDP 封包段中,UDP 封包段有被放入 IP 資料報中,最後放入 MAC 幀中。
- 該幀的目的位址是請求主機的 MAC 位址,因為交換機具有自學習能力,之前主機發送了廣播幀之後就記錄了 MAC 位址到其轉發接口的交換表項,是以現在交換機就可以直接知道應該向哪個接口發送該幀。
- 主機收到該幀後,不斷分解得到 DHCP 封包。之後就配置它的 IP 位址、子網路遮罩和 DNS 伺服器的 IP 位址,并在其 IP 轉發表中安裝預設網關。
2. ARP 解析 MAC 位址
- 主機通過浏覽器生成一個 TCP 套接字(socket),套接字(socket)向 HTTP 伺服器發送 HTTP 請求。為了生成該套接字(socket),主機需要知道網站的域名對應的 IP 位址(但是目前隻知道網站的域名如:www.google.com/是以需要DNS解析域名,但到第三步才完成了這個任務)。
- 主機生成一個 DNS 查詢封包,該封包具有 53 号端口,因為 DNS 伺服器的端口号是 53。即該封包具有以下資訊:
- 域名:www.google.com
- DNS伺服器目的端口:53
- 該 DNS 查詢封包被放入目的位址為 DNS 伺服器 IP 位址的 IP 資料報中。
- 該 IP 資料報被放入一個以太網幀中,該幀将發送到網關路由器。
- DHCP 過程隻知道網關路由器的 IP 位址,為了擷取網關路由器的 MAC 位址,需要使用 ARP 協定。(從這一步開始是擷取預設網關的Mac,因為每一個主機都在一個區域網路裡,要通路區域網路以外的主機就需要先離開這個區域網路,是以需要找到這個出去的門——預設網關路由,是以我們需要先得到網關路由器的 MAC 位址)
- 主機生成一個包含目的位址為網關路由器 IP 位址的 ARP 查詢封包,将該 ARP 查詢封包放入一個具有廣播目的位址(FF:FF:FF:FF:FF:FF)的以太網幀中,并向交換機發送該以太網幀,交換機将該幀轉發給所有的連接配接裝置,包括網關路由器。
- 網關路由器接收到該幀後,不斷向上分解得到 ARP 封包,發現其中的 IP 位址與其接口的 IP 位址比對,是以就發送一個 ARP 回答封包,包含了它的 MAC 位址,發回給主機。
3. DNS 解析域名
知道了網關路由器的 MAC 位址之後,就可以繼續 DNS 的解析過程了。(根據上面寫的DNS解析過程,這兒略過了在浏覽器緩存、系統緩存和路由器緩存中尋找的步驟)
- 網關路由器接收到包含 DNS 查詢封包的以太網幀後,抽取出 IP 資料報,并根據轉發表決定該 IP 資料報應該轉發的路由器。
- 因為路由器具有内部網關協定(RIP、OSPF)和外部網關協定(BGP)這兩種路由選擇協定,是以路由表中已經配置了網關路由器到達 DNS 伺服器的路由表項。
- 到達 DNS 伺服器之後,DNS 伺服器抽取出 DNS 查詢封包,并在 DNS 資料庫中查找待解析的域名。
- 找到 DNS 記錄之後,發送 DNS 回答封包,将該回答封包放入 UDP 封包段中,然後放入 IP 資料報中,通過路由器反向轉發回網關路由器,并經過以太網交換機到達主機。
4. HTTP 請求頁面
- 有了 HTTP 伺服器的 IP 位址之後,主機就能夠生成 TCP 套接字,該套接字将用于向 Web 伺服器發送 HTTP GET 封包。
- 在生成 TCP 套接字之前,必須先與 HTTP 伺服器進行三次握手來建立連接配接。生成一個具有目的端口 80 的 TCP SYN 封包段,并向 HTTP 伺服器發送該封包段。
- HTTP 伺服器收到該封包段之後,生成 TCP SYN ACK 封包段,發回給主機。
- 連接配接建立之後,浏覽器生成 HTTP GET 封包,并傳遞給 HTTP 伺服器。
- HTTP 伺服器從 TCP 套接字讀取 HTTP GET 封包,生成一個 HTTP 響應封包,将 Web 頁面内容放入封包主體中,發回給主機。
- 浏覽器收到 HTTP 響應封包後,抽取出 Web 頁面内容,之後進行渲染,顯示 Web 頁面。
每一層的協定總結
- 實體層:RJ45、CLOCK、IEEE802.3 (中繼器,集線器,網關)
- 資料鍊路:PPP、FR、HDLC、VLAN、MAC (網橋,交換機)、循環備援檢驗、CSMA/CD(多點接入、載波監聽、碰撞檢測)協定
- 網絡層:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
- 傳輸層:TCP、UDP、SPX
- 會話層:NFS、SQL、NETBIOS、RPC
- 表示層:JPEG、MPEG、ASII
- 應用層:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
計算機網絡面試題
說一說POST與GET有哪些差別?
- 使⽤用場景:GET ⽤用于擷取資源,⽽而 POST ⽤用于傳輸實體主體。
- 參數:GET 和 POST 的請求都能使⽤用額外的參數,但是 GET 的參數是以查詢字元串出現在 URL 中,而 POST 的參數存儲在實體主體中。
-
安全性:GET 方法是安全的,而 POST 卻不是,因為 POST 的目的是傳送實體主體内容,這個内容可能是⽤使用者上傳的表單資料,上傳成功之後,服務器可能把這個資料存儲到資料庫中,是以狀态也就發生了改變(安全的 HTTP ⽅方法不不會改變伺服器器狀态,也就是說它隻是可讀的)。
…
安全的方法除了了 GET 之外還有: HEAD、 OPTIONS。
不安全的方法除了了 POST 之外還有 PUT、 DELETE。
說一說TCP與UDP的差別
-
TCP協定的主要特點
(1) TCP是面向連接配接的運輸層協定;所謂面向連接配接就是雙方傳輸資料之前,必須先建立一條通道,例如三次握手就是建議通道的一個過程,而四次揮手則是結束銷毀通道一個其中過程。
(2)每一條TCP連接配接隻能有兩個端點(即兩個套接字),隻能是點對點的;
(3) TCP提供可靠的傳輸服務。傳送的資料無差錯、不丢失、不重複、按序到達;
(4) TCP提供全雙⼯工通信。允許通信雙⽅方的應用程序在任何時候都可以發送資料,因為兩端都設有發送緩存和接受緩存;
(5)面向位元組流。雖然應用程式與TCP互動是一次一個大小不等的資料塊,但TCP把這些資料看成一連串無結構的位元組流,它不保證接收方收到的資料塊和發送方發送的資料塊具有對應大小關系,例如,發送方應用程式交給發送方的TCP10個資料塊,但就受訪的TCP可能隻⽤用了了4個資料塊久保收到的位元組流傳遞給上層的應⽤用程式,但位元組流完全⼀一樣
-
TCP和UDP的差別
(1)TCP是可靠傳輸,UDP是不可靠傳輸;
(2)TCP⾯面向連接配接,UDP無連接配接;
(3)TCP傳輸資料有序,UDP不保證資料的有序性;
(4)TCP不儲存資料邊界,UDP保留資料邊界;(5)TCP傳輸速度相對UDP較慢;
(6)TCP有流量控制和擁塞控制,UDP沒有;
(7)TCP是重量級協定,UDP是輕量級協定;
(8)TCP首部較長20位元組,UDP首部較短8位元組;
-
基于TCP和UDP的常⽤用協定
HTTP、 HTTPS、 FTP、 TELNET、 SMTP(簡單郵件傳輸協定)協定基于可靠的TCP協定。 TFTP、 DNS、 DHCP、 SNMP(簡單⽹網絡管理理協定)、 RIP基于不不可靠的UDP協定
參考
-
知乎作者:網工Fox—75張圖帶你了解網絡裝置、網絡位址規劃、靜态路由、實戰演練
網工Fox
- Leecode: 校招基礎知識詳解
- 域名解析