1. 程式人生 > >OSI七層模型工作過程&&輸入URL瀏覽器的工作過程(超詳細!!)

OSI七層模型工作過程&&輸入URL瀏覽器的工作過程(超詳細!!)

從以下10個方面深入理解輸入URL後整個模型以及瀏覽器的工作流程!

目錄

1.HTTP

2.DNS

3.協議棧

4.TCP

5.IP

6.MAC

7.網絡卡

8.交換機

9.路由器

10.伺服器與客戶端

輸入URL後瀏覽器的整個流程(簡單版本):


 1.孤單小弟——HTTP

(1) 解析URL

首先瀏覽器做的第一步工作就是要對URL進行解析,從而生成傳送給 Web 伺服器的請求資訊。

讓我們看看一條長長的 URL 裡的各個元素的代表什麼,見下圖

 

 所以圖中一長串的URL本質上是請求伺服器裡面的檔案資源。

Q:如果URL元素組成中省略了藍色部分,哪應該是請求哪個檔案呢?

A:當URL中不存在路徑名時,就代表著訪問根目錄下事先設定好的預設檔案,例如 /index.html 或者 /default.html 等,這樣就不會發生混亂。在瀏覽器中輸入www.baidu.com以及www.baidu.com/default.html兩者顯示是不一樣的。

(2) 生成HTTP請求資訊

對URL進行解析之後,瀏覽器確定了Web伺服器和檔名,接下來根據這些資訊來生成 相應的HTTP 請求資訊。

 一個孤單 HTTP 資料包表示:“我這麼一個小小的資料包,沒親沒友,直接發到浩瀚的網路,誰會知道我呢?誰能載我一層呢?誰能保護我呢?我的目的地在哪呢?”。充滿各種疑問的它,沒有停滯不前,依然踏上了征途!

2.真實地址查詢——DNS

通過瀏覽器解析 URL 並生成 HTTP 請求訊息後,需要委託作業系統將訊息傳送給 Web 伺服器。但在傳送之前,還有一項工作需要完成,那就是查詢伺服器域名對於的 IP 地址,因為委託作業系統發 送訊息時,必須提供通訊物件的 IP 地址。

有一種伺服器就專門儲存了 Web 伺服器域名與 IP 的對應關係,它就是 DNS 伺服器。

(1) 域名的層級關係

DNS 中的域名都是用句點來分隔的,比如 www.server.com ,這裡的句點代表了不同層次之間的界限。在域名中,越靠右的位置表示其層級越高。

根域名是在頂層,它的下一層就是 com 頂級域名,再下面是 server.com。所以域名的層級關係類似一個樹狀結構:

根域名 DNS 伺服器

頂級域名 DNS 伺服器(com)

許可權域名 DNS 伺服器(server.com)

根域名的 DNS 伺服器資訊儲存在網際網路中所有的 DNS 伺服器中。這樣一來,任何 DNS 伺服器就都可以找到並訪問根域名 DNS 伺服器了。因此,客戶端只要能夠找到任意一臺 DNS 伺服器,就可以通過它找到根域名 DNS 伺服器,然後再一路 順藤摸瓜找到位於下層的某臺目標 DNS 伺服器。

(2) 域名解析的工作流程

瀏覽器快取->系統快取->路由器快取->本地域名伺服器->根域名伺服器->頂級域名伺服器->許可權域名伺服器->本地域名伺服器把返回的結果儲存到快取

具體流程如下:

瀏覽器快取

  當用戶通過瀏覽器訪問某域名時,瀏覽器首先會在自己的快取中查詢是否有該域名對應的IP地址(若曾經訪問過該域名且沒有清空快取便存在);

系統快取

  當瀏覽器快取中無域名對應IP則會自動檢查使用者計算機系統Hosts檔案DNS快取是否有該域名對應IP;

路由器快取

  當瀏覽器及系統快取中均無域名對應IP則進入路由器快取中檢查,以上三步均為客戶端的DNS快取;

ISP(網際網路服務提供商)DNS快取【本地域名伺服器】

  當在使用者客服端查詢不到域名對應IP地址,則將進入ISP DNS快取中進行查詢。比如你用的是電信的網路,則會進入電信的DNS快取伺服器中進行查詢;如果經由以上方式都沒找到對應IP的話,則向根域名伺服器查詢域名對應的IP地址,根域名伺服器把請求轉發到下一級,逐層查詢該域名的對應資料,直到獲得最終解析結果或失敗結果。

儲存結果至快取

最後本地域名伺服器把返回的結果儲存到快取,以備下一次使用,同時將該結果反饋給客戶端,客戶端通過這個IP地址與web伺服器建立連結。


 如果在客戶端的DNS快取中沒有找到對應的IP地址,則進入本地DNS伺服器進行遞迴查詢與迭代查詢。

1. 客戶端首先會發出一個 DNS 請求,問 www.server.com 的 IP 是啥,併發給本地 DNS 伺服器(也 就是客戶端的 TCP/IP 設定中填寫的 DNS 伺服器地址)。

2. 本地域名伺服器收到客戶端的請求後,如果快取裡的表格能找到 www.server.com,則它直接返回 IP 地址。如果沒有,本地 DNS 會去問它的根域名伺服器:“老大, 能告訴我 www.server.com 的 IP 地址嗎?” 根域名伺服器是高層次的,它不直接用於域名解析,但能指明一條道路。

3. 根域名 DNS伺服器收到來自本地 DNS 的請求後,發現後置是 .com,說:“www.server.com 這個域名歸 .com 區域管理”,我給你 .com 頂級域名伺服器地址給你,你去問問它吧。”

4. 本地 DNS 收到頂級域名伺服器的地址後,發起請求問“老二, 你能告訴我 www.server.com 的 IP 地址嗎?”

5. 頂級域名伺服器說:“我給你負責 www.server.com 區域的權威 DNS 伺服器的地址,你去問它應該 能問到”。

6. 本地 DNS 於是轉向問權威 DNS 伺服器:“老三,www.server.com對應的IP是啥呀?” server.com 的權威 DNS 伺服器,它是域名解析結果的原出處。為啥叫權威呢?就是我的域名我做主。

7. 權威 DNS 伺服器查詢後將對應的 IP 地址 X.X.X.X 告訴本地 DNS。

8. 本地 DNS 再將 IP 地址返回客戶端,客戶端和目標建立連線。

DNS 域名解析的過程就和我們日常生活中找人問路的過程類似,只指路不帶路。

資料包表示:“DNS 老大哥厲害呀,找到了目的地了!我還是很迷茫呀,我要發出去,接下來我需要誰的幫 助呢?”

3.指南好幫手——協議棧

通過 DNS 獲取到 IP 後,就可以把 HTTP 的傳輸工作交給作業系統中的協議棧。協議棧的內部分為幾個部分,分別承擔不同的工作。上下關係是有一定的規則的,上面的部分會向下面 的部分委託工作,下面的部分收到委託的工作並執行。

(1) 應用程式(瀏覽器)通過呼叫 Socket 庫,來委託協議棧工作。協議棧的上半部分有兩塊,分別是負責 收發資料的 TCP 和 UDP 協議,它們兩會接受應用層的委託執行收發資料的操作。

(2) 協議棧的下面一半是用 IP 協議控制網路包收發操作,在網際網路上傳資料時,資料劊被切分成一塊塊的 網路包,而將網路包傳送給對方的操作就是由 IP 負責的。此外 IP 中還包括 ICMP 協議和 ARP 協議。

  • ICMP 用於告知網路包傳送過程中產生的錯誤以及各種控制資訊。
  • ARP 用於根據 IP 地址查詢相應的乙太網 MAC 地址。

(3) IP 下面的網絡卡驅動程式負責控制網絡卡硬體,而下面的網絡卡則負責完成實際的收發操作,也就是對網線中的訊號執行傳送和接收操作。

有關網絡卡的介紹:https://blog.csdn.net/tao546377318/article/details/51602298

有關網絡卡驅動程式的介紹:https://baike.baidu.com/item/%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F

資料包看了這份指南表示:“原來我需要那麼多大佬的協助啊,那我先去找找 TCP 大佬!”

4.可靠傳輸——TCP

HTTP 是基於 TCP 協議傳輸的,所以在這我們先了解下 TCP 協議。

(1) TCP報文頭部的格式

首先,源埠號和目標埠號是不可少的,如果沒有這兩個埠號,資料就不知道應該發給哪個應用。

接下來有包的序號,這個是為了解決包亂序的問題。

還有應該有的是確認號,目的是確認發出去對方是否有收到。如果沒有收到就應該重新發送,直到送 達,這個是為了解決不丟包的問題。

接下來還有一些狀態位。例如 SYN 是發起一個連線, ACK 是回覆, RST 是重新連線, FIN 是 結束連線等。TCP 是面向連線的,因而雙方要維護連線的狀態,這些帶狀態位的包的傳送,會引起雙方 的狀態變更。

還有一個重要的就是視窗大小。TCP 要做流量控制,通訊雙方各宣告一個視窗(快取大小),標識自己 當前能夠的處理能力,別傳送的太快,撐死我,也別發的太慢,餓死我。

除了做流量控制以外,TCP還會做擁塞控制,對於真正的通路堵車不堵車,它無能為力,唯一能做的就 是控制自己,也即控制傳送的速度。不能改變世界,就改變自己嘛

有關TCP三次握手、四次揮手的知識點請看 備戰研發崗-計算機通訊網路

(2) TCP資料分割

如果 HTTP 請求訊息比較長,超過了 MSS 的長度,這時 TCP 就需要把 HTTP 的資料拆解一塊塊的 資料傳送,而不是一次性發送所有資料。

 兩個概念:

  • MTU :一個網路包的大長度,乙太網中一般為 1500 位元組。
  • MSS :除去 IP(20Bytes) 和 TCP 頭部(20Bytes) 之後,一個網路包所能容納的 TCP 資料的大長度。通常情況下mss的值=1500-20-20=1460Bytes

資料會被以 MSS 的長度為單位進行拆分,拆分出來的每一塊資料都會被放進單獨的網路包中。也就 是在每個被拆分的資料加上 TCP 頭資訊,然後交給 IP 模組來發送資料。

(3) TCP報文生成

在雙方建立連線之後,TCP 報文中的資料部分為存放 HTTP 頭部 + 資料,組裝好 TCP 報文之後,就需交給下面的網路層處理。TCP報文如下圖所示:

此時,遇上了 TCP 的 資料包激動表示:“太好了,碰到了可靠傳輸的 TCP 傳輸,它給我加上 TCP 頭部,我 不在孤單了,安全感十足啊!有大佬可以保護我的可靠送達!但我應該往哪走呢?”

5.遠端定位——IP

TCP 模組在執行連線、收發、斷開等各階段操作時,都需要委託 IP 模組將資料封裝成網路包傳送給通訊物件。

(1) IP報文頭部格式

在 IP 協議裡面需要有源地址 IP 和 目標地址 IP:

  • 源地址IP,即是客戶端輸出的 IP 地址;

  • 目標地址,即通過 DNS 域名解析得到的 Web 伺服器 IP。

因為 HTTP 是經過 TCP 傳輸的,所以在 IP 包頭的協議號,要填寫為 06(十六進位制),表示協議為 TCP。從圖中可以看出IP包頭的基本大小為20Bytes,一個Byte等於8bit(8位)。

(2) IP報文

 此時,加上了 IP 頭部的資料包表示 :“有 IP 大佬給我指路了,感謝 IP 層給我加上了 IP 包頭,讓我有了遠端定位的能力!不會害怕在浩瀚的網際網路迷茫了!可是目的地好遠啊,我下一站應該去哪呢?”

6.兩點傳輸——MAC

生成了 IP 頭部之後,接下來網路包還需要在 IP 頭部的前面加上 MAC 頭部。

(1)  MAC報頭格式

在 MAC 包頭裡需要傳送方 MAC 地址和接收方目標 MAC 地址,用於兩點之間的傳輸。

一般在 TCP/IP 通訊裡,MAC 包頭的協議型別只使用:

  • 0800 :IP 協議

  • 0806 :ARP 協議

(2) MAC傳送方與接收方地址的確認

傳送方的 MAC 地址獲取就比較簡單了,MAC 地址是在網絡卡生產時寫入到 ROM 裡的,只要將這個值讀取出來寫入到 MAC 頭部就可以了。

接收方的 MAC 地址就有點複雜了,只要告訴乙太網對方的 MAC 的地址,乙太網就會幫我們把包傳送過去,那麼很顯然這裡應該填寫對方的 MAC 地址。

所以先得搞清楚應該把包發給誰,這個只要查一下路由表就知道了。在路由表中找到相匹配的條目,然後把包發給 Gateway 列中的 IP 地址就可以了。

Q:路由表是如何獲取到下一跳的地址?

A:通常採用靜態路由或者動態路由的方式進行獲取。https://blog.csdn.net/laoniu_c/article/details/39268387

(3) 獲取對方的MAC地址

此時就需要 ARP 協議幫我們找到路由器的 MAC 地址。

ARP 協議會在乙太網中以廣播的形式,對乙太網所有的裝置喊出:“這個 IP 地址是誰的?請把你的 MAC 地址告訴我”。然後就會有人回答:“這個 IP 地址是我的,我的 MAC 地址是 XXXX”。

如果對方和自己處於同一個子網中,那麼通過上面的操作就可以得到對方的 MAC 地址。然後,我們將這個 MAC 地址寫入 MAC 頭部,MAC 頭部就完成了。

Q:好像每次都要廣播獲取,這不是很麻煩嗎?

A:在後續作業系統會把本次查詢結果放到一塊叫做 ARP 快取的記憶體空間留著以後用,不過快取的時間就幾分鐘。也就是說,在發包時:

  • 先查詢 ARP 快取,如果其中已經儲存了對方的 MAC 地址,就不需要傳送 ARP 查詢,直接使用 ARP 快取中的地址。

  • 而當 ARP 快取中不存在對方 MAC 地址時,則傳送 ARP 廣播查詢。

在 Linux 系統中,我們可以使用 arp -a 命令來檢視 ARP 快取的內容。

(4) MAC報文生成

此時,加上了 MAC 頭部的資料包萬分感謝,說道 :“感謝 MAC 大佬,我知道我下一步要去了哪了!我現在 有很多頭部兄弟,相信我可以到達終的目的地!”。 帶著眾多頭部兄弟的資料包,終於準備要出門了。

7.出口——網絡卡

IP 生成的網路包只是存放在記憶體中的一串二進位制數字資訊,沒有辦法直接傳送給對方。因此,我們需要將數字資訊轉換為電訊號,才能在網線上傳輸,也就是說,這才是真正的資料傳送過程。

負責執行這一操作的是網絡卡,要控制網絡卡還需要靠網絡卡驅動程式。

網絡卡驅動從 IP 模組獲取到包之後,會將其複製到網絡卡內的快取區中,接著會其開頭加上報頭和起始幀分界符,在末尾加上用於檢測錯誤的幀校驗序列。

 

  • 起始幀分界符是一個用來表示包起始位置的標記

  • 末尾的 FCS(幀校驗序列)用來檢查包傳輸過程是否有損壞

最後網絡卡會將包轉為電訊號,通過網線傳送出去。

唉,真是不容易,發一個包,真是歷經歷經千辛萬苦。致此,一個帶有許多頭部的資料終於踏上尋找目的地的征途了!

8.送別者——交換機

下面來看一下包是如何通過交換機的。交換機的設計是將網路包原樣轉發到目的地。交換機工作在 MAC 層,也稱為二層網路裝置。

(1) 交換機資料包操作

首先,電訊號到達網線介面,交換機裡的模組進行接收,接下來交換機裡的模組將電訊號轉換為數字訊號。

然後通過包末尾的 FCS 校驗錯誤,如果沒問題則放到緩衝區。這部分操作基本和計算機的網絡卡相同,但交換機的工作方式和網絡卡不同。

計算機的網絡卡本身具有 MAC 地址,並通過核對收到的包的接收方 MAC 地址判斷是不是發給自己的,如果不是發給自己的則丟棄;相對地,交換機的埠不核對接收方 MAC 地址,而是直接接收所有的包並存放到緩衝區中。因此,和網絡卡不同,交換機的埠不具有 MAC 地址。

將包存入緩衝區後,接下來需要查詢一下這個包的接收方 MAC 地址是否已經在 MAC 地址表中有記錄了。

交換機的 MAC 地址表主要包含兩個資訊:

  • 一個是裝置的 MAC 地址,

  • 另一個是該裝置連線在交換機的哪個埠上。

舉個例子,如果收到的包的接收方 MAC 地址為 00-02-B3-1C-9C-F9,則與圖中表中的第 3 行匹配,根據埠列的資訊,可知這個地址位於 3 號埠上,然後就可以通過交換電路將包傳送到相應的埠了。

所以,交換機根據 MAC 地址表查詢 MAC 地址,然後將訊號傳送到相應的埠。

Q:當 MAC 地址表找不到指定的 MAC 地址會怎麼樣?

地址表中找不到指定的 MAC 地址。這可能是因為具有該地址的裝置還沒有向交換機發送過包,或者這 個裝置一段時間沒有工作導致地址被從地址表中刪除了。這種情況下,交換機無法判斷應該把包轉發到哪個埠,只能將包轉發到除了源埠之外的所有埠 上,無論該裝置連線在哪個埠上都能收到這個包。

這樣做不會產生什麼問題,因為乙太網的設計本來就是將包傳送到整個網路的,然後只有相應的接收者 才接收包,而其他裝置則會忽略這個包。

資料包通過交換機轉發抵達了路由器,準備要離開土生土長的子網了。此時,資料包和交換機離別時說道:“感謝交換機兄弟,幫我轉發到出境的大門,我要出遠門啦!”

9.出境大門——路由器

(1) 路由器與交換機的區別

網路包經過交換機之後,現在到達了路由器,並在此被轉發到下一個路由器或目標裝置。

這一步轉發的工作原理和交換機類似,也是通過查表判斷包轉發的目標。

不過在具體的操作過程上,路由器和交換機是有區別的。

  • 因為路由器是基於 IP 設計的,俗稱三層網路裝置,路由器的各個埠都具有 MAC 地址和 IP 地址;

  • 而交換機是基於乙太網設計的,俗稱二層網路裝置,交換機的埠不具有 MAC 地址。

(2) 路由器基本原理

路由器的埠具有 MAC 地址,因此它就能夠成為乙太網的傳送方和接收方;同時還具有 IP 地址,從這個意義上來說,它和計算機的網絡卡是一樣的。

當轉發包時,首先路由器埠會接收發給自己的乙太網包,然後路由表查詢轉發目標,再由相應的埠作為傳送方將乙太網包傳送出去。

(3)路由器的包接收操作

首先,電訊號到達網線介面部分,路由器中的模組會將電訊號轉成數字訊號,然後通過包末尾的 FCS 進行錯誤校驗。

如果沒問題則檢查 MAC 頭部中的接收方 MAC 地址,看看是不是發給自己的包,如果是就放到接收緩衝區中,否則就丟棄這個包。

總的來說,路由器的埠都具有 MAC 地址,只接收與自身地址匹配的包,遇到不匹配的包則直接丟棄。

(4) 查詢路由表確定輸出埠

完成包接收操作之後,路由器就會去掉包開頭的 MAC 頭部。

MAC 頭部的作用就是將包送達路由器,其中的接收方 MAC 地址就是路由器埠的 MAC 地址。因此,當包到達路由器之後,MAC 頭部的任務就完成了,於是 MAC 頭部就會被丟棄。

接下來,路由器會根據 MAC 頭部後方的 IP 頭部中的內容進行包的轉發操作。

轉發操作分為幾個階段,首先是查詢路由表判斷轉發目標。

具體的工作流程根據上圖,舉個例子。

假設地址為 10.10.1.101 的計算機要向地址為 192.168.1.100 的伺服器傳送一個包,這個包先到達圖中的路由器。

判斷轉發目標的第一步,就是根據包的接收方 IP 地址查詢路由表中的目標位址列,以找到相匹配的記錄。

路由匹配和前面講的一樣,每個條目的子網掩碼和 192.168.1.100 IP 做 & 與運算後,得到的結果與對應條目的目標地址進行匹配,如果匹配就會作為候選轉發目標,如果不匹配就繼續與下個條目進行路由匹配。

如第二條目的子網掩碼 255.255.255.0 與 192.168.1.100 IP 做 & 與運算後,得到結果是 192.168.1.0 ,這與第二條目的目標地址 192.168.1.0 匹配,該第二條目記錄就會被作為轉發目標。

實在找不到匹配路由時,就會選擇預設路由,路由表中子網掩碼為 0.0.0.0 的記錄表示「預設路由」。

(5) 路由器的傳送操作

接下來就會進入包的傳送操作。

首先,我們需要根據路由表的閘道器列判斷對方的地址。

  • 如果閘道器是一個 IP 地址,則這個IP 地址就是我們要轉發到的目標地址,還未抵達終點,還需繼續需要路由器轉發。

  • 如果閘道器為空,則 IP 頭部中的接收方 IP 地址就是要轉發到的目標地址,也是就終於找到 IP 包頭裡的目標地址了,說明已抵達終點。

知道對方的 IP 地址之後,接下來需要通過 ARP 協議根據 IP 地址查詢 MAC 地址,並將查詢的結果作為接收方 MAC 地址。

路由器也有 ARP 快取,因此首先會在 ARP 快取中查詢,如果找不到則傳送 ARP 查詢請求。

接下來是傳送方 MAC 地址欄位,這裡填寫輸出埠的 MAC 地址。還有一個以太型別欄位,填寫 0080 (十六進位制)表示 IP 協議。

網路包完成後,接下來會將其轉換成電訊號並通過埠傳送出去。這一步的工作過程和計算機也是相同的。

傳送出去的網路包會通過交換機到達下一個路由器。由於接收方 MAC 地址就是下一個路由器的地址,所以交換機會根據這一地址將包傳輸到下一個路由器。

接下來,下一個路由器會將包轉發給再下一個路由器,經過層層轉發之後,網路包就到達了最終的目的地。

不知你發現了沒有,在網路包傳輸的過程中,源 IP 和目標 IP 始終是不會變的,一直變化的是 MAC 地址,因為需要 MAC 地址在乙太網內進行兩個裝置之間的包傳輸。

Q:什麼是閘道器,閘道器有什麼作用?

  • 閘道器其實是一個邏輯概念,可以理解為資料的特定出口。通常閘道器是具有路由功能的裝置上實現的,其作用就是用來連線兩個不同網段的網路的。而路由器是一個具體的硬體,一般特指能夠實現路由尋找和轉發的特定類產品,路由器很顯然能夠實現閘道器的功能。
  • 預設閘道器事實上不是一個產品而是一個網路層的概念,PC本身不具備路由定址能力,所以PC要把所有的IP包傳送到一個預設的中轉地址上面進行轉發,也就是預設閘道器。這個閘道器可以在路由器上,可以在三層交換機上,可以在防火牆上,可以在伺服器上,所以和物理的裝置無關。
資料包通過多個路由器道友的幫助,在網路世界途徑了很多路程,最終抵達了目的地的城門!城門值守的路由器,發現了這個小兄弟資料包原來是找城內的人,於是它就將資料包送進了城內,再經由城內的交換機幫助下,最終轉發到了目的地了。資料包感慨萬千的說道:“多謝這一路上,各路大俠的相助!”

 10.互相扒皮——伺服器與客戶端

資料包抵達了伺服器,伺服器肯定高興呀,正所謂有朋自遠方來,不亦樂乎?

伺服器高興的不得了,於是開始扒資料包的皮!就好像你收到快遞,能不興奮嗎?

資料包抵達伺服器後,伺服器會先扒開資料包的 MAC 頭部,檢視是否和伺服器自己的 MAC 地址符合,符合就將包收起來。

接著繼續扒開資料包的 IP 頭,發現 IP 地址符合,根據 IP 頭中協議項,知道自己上層是 TCP 協議。

於是,扒開 TCP 的頭,裡面有序列號,需要看一看這個序列包是不是我想要的,如果是就放入快取中然後返回一個 ACK,如果不是就丟棄。TCP頭部裡面還有埠號, HTTP 的伺服器正在監聽這個埠號。

於是,伺服器自然就知道是 HTTP 程序想要這個包,於是就將包發給 HTTP 程序。

伺服器的 HTTP 程序看到,原來這個請求是要訪問一個頁面,於是就把這個網頁封裝在 HTTP 響應報文裡。


HTTP 響應報文也需要穿上 TCP、IP、MAC 頭部,不過這次是源地址是伺服器 IP 地址,目的地址是客戶端 IP 地址。

穿好頭部衣服後,從網絡卡出去,交由交換機轉發到出城的路由器,路由器就把響應資料包發到了下一個路由器,就這樣跳啊跳。

最後跳到了客戶端的城門把手的路由器,路由器扒開 IP 頭部發現是要找城內的人,於是把包發給了城內的交換機,再由交換機轉發到客戶端。

客戶端收到了伺服器的響應資料包後,同樣也非常的高興,客戶能拆快遞了!

於是,客戶端開始扒皮,把收到的資料包的皮扒剩 HTTP 響應報文後,交給瀏覽器去渲染頁面,一份特別的資料包快遞,就這樣顯示出來了!

最後,客戶端要離開了,向伺服器發起了 TCP 四次揮手,至此雙方的連線就斷開了。

 

參考:https://mp.weixin.qq.com/s/iSZp41SRmh5b2bXIvz