你以為鍵入網址後只是等待嗎?驚!原來網頁顯示背後隱藏著這些奇妙步驟(上)

努力的小雨發表於2023-10-30

當鍵入網址後,到網頁顯示,其間發生了什麼

在面試過程中,很可能會遇到一個常見的問題,即"當輸入一個網址後,到網頁顯示之間發生了什麼"。這個問題的確非常常見,我也喜歡問這個問題,因為它可以幫助我瞭解面試者對網路部分的應用知識的掌握情況,同時也能夠基本囊括網路通訊的整個過程。

接下來,為了更好地探究這個問題,我將以一個簡單的網路拓撲模型為例,來詳細解釋在鍵入網址後到網頁顯示之間具體發生了什麼。

image

探究HTTP

在瀏覽器中,第一步的工作是解析URL。這意味著將URL分解成不同的元素,以便傳送給Web伺服器的請求資訊。下面是一個具有較長URL的示例,我們來看看其中的各個元素代表什麼。

image

因此,根據圖中的長URL,我們實際上是在請求伺服器中的檔案資源。如果省略了圖中的藍色URL元素,那麼實際上是在請求根目錄下事先設定的預設檔案,例如/index.html或/default.html等檔案,這樣可以避免混亂。

在解析URL之後,瀏覽器會確定Web伺服器和檔名,然後根據這些資訊生成HTTP請求訊息。

image

一個孤獨的HTTP資料包,彷彿在無邊無際的網路中迷茫著。它小小的身軀,沒有親人也沒有朋友,只是被髮送到廣袤的網路中,不知道有誰會注意到它。它心中充滿了疑問,不知道有誰能給它提供一層保護,幫助它到達目的地。它不停地前進,毫不停歇,繼續踏上這個充滿未知的征途!

真實地址查詢-DNS

當瀏覽器解析URL並生成HTTP訊息後,下一步就是委託作業系統將訊息傳送給Web伺服器。然而,在傳送之前,還有一項重要的任務需要完成,那就是查詢伺服器域名對應的IP地址。因為在委託作業系統傳送訊息時,必須提供通訊物件的IP地址。

可以將這個過程類比為打電話,當我們打電話時,必須知道對方的電話號碼。然而,由於電話號碼往往難以記憶,我們通常會將對方的電話號碼和姓名儲存在通訊錄中以便快速撥號。

同樣地,存在一種伺服器專門用於儲存Web伺服器域名與IP地址的對應關係,它被稱為DNS伺服器。DNS伺服器的作用就是為我們提供域名到IP地址的轉換服務。當我們在瀏覽器中輸入一個域名時,瀏覽器會向DNS伺服器傳送查詢請求,以獲取與該域名對應的IP地址。一旦獲取到IP地址,瀏覽器就可以將HTTP訊息傳送給正確的Web伺服器了。

指南好幫手-協議棧

透過 DNS 獲取到 IP 後,我們可以將 HTTP 的傳輸工作交給作業系統中的協議棧。協議棧由多個部分組成,每個部分承擔不同的任務。這些部分之間存在一定的層次關係,上層部分會將工作委託給下層部分,下層部分則接收並執行委託的工作。

image

應用程式(例如瀏覽器)透過呼叫 Socket 庫來委託協議棧工作。協議棧的上半部分包括負責收發資料的 TCP 和 UDP 協議。這兩個協議接收應用層的委託,並執行資料的傳輸操作。

協議棧的下半部分是由 IP 協議控制網路包的收發操作。在網際網路上傳輸資料時,資料會被切分成一塊一塊的網路請求包(具體細節已經在之前的章節討論過,這裡不再贅述),而將這些網路包傳送給對方的操作由 IP 協議負責。

此外,IP 協議還包括 ICMP 協議和 ARP 協議。

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

在 IP 協議下方是網路卡驅動程式,其功能是負責控制網路卡硬體。而最底層的網路卡則負責實際的收發操作,即執行對網線中訊號的傳送和接收操作。

總結

在鍵入網址後到網頁顯示之間的過程中,首先瀏覽器會對URL進行解析,並生成相應的HTTP請求訊息,以確定要請求的Web伺服器和檔名。接下來,瀏覽器會透過DNS伺服器進行查詢,以獲取伺服器域名對應的IP地址。整個過程中涉及到URL解析、DNS查詢和HTTP請求。在後續的章節中,我們將進一步介紹TCP/IP、MAC地址、網路卡和路由器等內容,以更全面地瞭解網路通訊的細節。敬請期待後續章節的更新!

相關文章