超詳細的 Web頁面請求過程 之旅

2021-08-21 22:00:39 字數 2980 閱讀 1453

(斜體部分是解釋的內容,能幫助理解)

前言:整體過程

*一句話過程:*開啟瀏覽器,輸入url,連線伺服器,渲染伺服器返回的結果。

那在這個過程中首先我們需要建立連線,也就是tcp三次握手,先開始第一次握手,也就是主機向伺服器傳送請求報文段,這就需要知道源ip,目的ip

一開始,我們沒有源ip,現在開始申請ip

一、為主機申請ip:dhcp動態主機配置協議

我需要乙個ip位址,告訴網路我是誰。這就需要dhcp動態主機配置協議。

1)主機生成乙個dhcp請求報文(應用層)

2)放入udp報文段(傳輸層),udp報文段主要包含

3)網路層新增頭部封裝成ip資料報,主要包含

4)資料鏈路層新增頭部封裝成乙太網幀,主要包含

5)乙太網幀被傳送到交換機*(他是怎麼找到交換機的呢?你的網線連著呢呀)*,交換機修改**表記錄我的mac (自學習:每接收到乙個幀都記錄該幀的mac和到達的介面),然後在他的所有出口廣播這個幀

6)與交換機相連的預設閘道器路由器接收到了這個廣播幀,進行解析,提取出ip資料報,發現目的ip是廣播ip,就交給傳輸層,傳輸層又提取出 dhcp 請求交給應用層, dhcp 伺服器就收到了該 dhcp 請求。

(路由器?伺服器?這裡路由器怎麼就成伺服器了呢?其實路由器的路由功能只是它眾多功能的一種,他還可以支援別的協議,比如這裡的dhcp協議)

7)dhcp 伺服器為此生成乙個 dhcp ack 報文,主要包含:

這個報文再被傳輸層、網路層、資料鏈路層一路封裝成幀,該幀的目的 mac 是我的mac,源mac是接收 dhcp 請求幀的路由器埠的 mac

8)dhcp ack乙太網幀由預設閘道器路由器傳送給交換機,交換機根據**表**回給我的主機

9)主機收到該幀之後再從鏈路層到應用層,層層提取,最後得到自己的ip、dns伺服器ip、預設閘道器路由器ip,進行配置,我就有了ip。

現在我有了源 ip,要開始找目的 ip,現在我已知什麼呢?已知目的網域名稱,根據網域名稱找 ip,找 dns 網域名稱系統伺服器去查就好。在前面 dhcp 過程中我們已經得到了 dns 伺服器的 ip 位址,現在只要去訪問該ip就好,但是在這之前我們需要先走出我們所處的區域網,這就需要區域網預設閘道器路由器的mac位址,這是為什麼呢?又要怎麼找呢?繼續往下看。

先解釋一下預設閘道器路由器,每乙個主機都在乙個區域網裡,要訪問區域網以外的主機就需要先離開這個區域網,那我們要怎麼離開呢?我們把這個區域網比作乙個院子,閘道器路由器就是這個院子的門,我們要離開這個院子的話就要從門出去,那乙個院子可以有很多個門,我們從哪個門出去呢?我們自己也不知道啊,但一般都有乙個預設的,不知道該從哪出去的時候,就走預設的。

為什麼需要區域網的mac位址呢?因為區域網內是通過 mac 進行識別的,為什麼要用 mac 位址識別呢?是這樣的,以前沒這麼多主機的時候,ip 是固定的,我們就不需要 mac,但現在主機越來越多,這就導致區域網裡 ip 不是十分充足,管理起來也不是很好管理,所以 ip 每隔一段時間就會被**,需要的時候才會被分配,這也就是為什麼前面提到的 dhcp 動態主機配置協議會存在,所以這個 ip 是會變的,對於主機來說,唯一不變的是 mac,所以,在區域網內部我們是用 mac 定位的。

那又要怎麼找mac位址呢?通過ip找mac,這就用到了arp位址轉換協議

10)主機生成乙個 arp 查詢報文,目的 ip 是預設閘道器路由器,這個報文最終被封裝成乙太網幀,幀的目的mac是 ff:ff:ff:ff:ff:ff(廣播位址),然後把幀發給交換機,交換機看到是廣播位址就給廣播出去

11)預設閘道器路由器接收到了這個幀,經過層層提取得到 arp 報文,發現其中的目的 ip 跟他自己某個介面的 ip 匹配,就傳送回去乙個 arp 應答報文給主機,這裡包含他自己的 mac

三、查詢目的網域名稱的ip:dns網域名稱系統

現在我們拿到了預設閘道器路由器的mac,可以離開區域網去dns伺服器查目的網域名稱的ip了

12)主機生成dns查詢報文,包含

層層封裝成乙太網幀,幀的目的 mac 是預設閘道器路由器的 mac

13)預設閘道器路由器接收到該幀之後,提取出ip資料報,並根據路由表進行**,因為路由器具有內部閘道器協議*(rip路由資訊協議、ospf開放最短路徑優先協議)和外部閘道器協議(bgp邊界閘道器協議)*,因此路由表中已經配置了可以從路由器到達 dns 伺服器的路由表項

14)dns 伺服器接收到幀後,層層提取出 dns 查詢報文,並在 dns 資料庫中查詢待解析網域名稱對應的 ip,找到之後傳送 dns 應答報文,封裝成 udp 報文段,再放入 ip 資料報,最後通過路由器轉回給源主機的預設閘道器路由器,再經由交換機**給源主機。

四、tcp三次握手

這樣我就拿到了目的網域名稱的ip,就可以進行tcp的三次握手了。

15)(第一次握手)主機向目的伺服器傳送連線請求報文段,syn=1,ack=0,選擇乙個初始的序號 x。

16)(第二次握手)目的伺服器收到連線請求報文段後,如果同意建立連線,則向主機傳送連線確認報文段,syn=1,ack=1,確認號為 x+1,同時也選擇乙個初始的序號 y。

17)(第三次握手)主機收到目的伺服器的連線確認報文段後,還要向目的伺服器發出確認,確認號為 y+1,序號為 x+1。

18)目的伺服器收到主機的確認後,連線就建立了。

為什麼要進行第三次握手呢?

第三次握手是為了防止失效的連線請求到達伺服器,讓伺服器錯誤開啟連線。

客戶端傳送的連線請求如果在網路中滯留,那麼就會隔很長一段時間才能收到伺服器端發回的連線確認。客戶端等待乙個超時重傳時間之後,就會重新請求連線。但是這個滯留的連線請求最後還是會到達伺服器,如果不進行三次握手,那麼伺服器就會開啟兩個連線。如果有第三次握手,客戶端會忽略伺服器之後傳送的對滯留連線請求的連線確認,不進行第三次握手,因此就不會再次開啟連線。

19)連線建立完成了,現在我們就可以繼續前言中連線建立之後的過程進行訪問了

感謝以下文章:

Web 頁面請求過程

客戶端作業系統生成乙個 dhcp 請求報文,將報文放入目的地埠67和源埠68的 udp 報文段。該 udp 報文段被放置在乙個具有廣播 ip 目的地位址 255.255.255.255 和源 ip 位址 0.0.0.0 的 ip 資料報中,因為此時客戶端還沒有 ip 位址。包含 dhcp 請求報文的...

Web 頁面請求過程

假設一台計算機最開始沒有 ip 位址以及其它資訊,如何動態獲取ip位址?這就需要用到執行動態主機配置協議 dynamic host configuration,dhcp 以從本地的dhcp伺服器獲取乙個ip位址以及其他資訊。主機生成乙個 dns 查詢報文,該報文具有 53 號埠,因為 dns 伺服器...

web頁面請求過程

一般會經歷以下幾個過程 1 首先,在瀏覽器位址列中輸入url 2 瀏覽器先檢視瀏覽器快取 系統快取 路由器快取,如果快取中有,會直接在螢幕中顯示頁面內容。若沒有,則跳到第三步操作。3 在傳送http請求前,需要網域名稱解析 dns解析 解析獲取相應的ip位址。4 瀏覽器向伺服器發起tcp連線,與瀏覽...