計算機網絡面試題 – 在地址欄鍵入URL 後,網絡世界發生了什麼?

計算機網絡面試題 – 在地址欄鍵入URL 後,網絡世界發生了什麼?

計算機網絡面試題 – 在地址欄鍵入URL 後,網絡世界發生了什麼?


    01.獲取本機IP 地址,DNS 服務器地址,網關路由器地址
        ~首先我們需要準備一個DHCP 報文,封裝在一個UDP 報文段中,裡麵包括本機端口號68 和目的端口號67,然後到網絡層封裝成數據包裡麵包括了本機的初始IP 0.0.0.0 ,和廣播地址255.255.255.255。接著到鏈路層封裝成鏈路層幀。裡麵包括廣播地址和本機網卡的MAC 地址。最後發送到本地局域網中

        ~這個數據包最終會被局域網中的DHCP 服務器發現(有可能有多個DHCP 服務器),DHCP 服務器會把可用的IP 地址返回給我們的主機。然後操作系統選擇一個IP 地址並發送給DHCP 服務器,最後DHCP 服務器會返回一個包含本機IP,DNS 服務器IP,網關路由器IP 的報文。

        ~接下來我們需要通過網關路由器的IP 地址去獲得網關路由器的MAC 地址,這樣我們才可以把獲取網站IP 的DNS 請求報文由網關發送給DNS 服務器。這時候我們需要準備一個ARP 請求報文,請求獲取網關路由器的MAC 地址,這個報文同樣是以廣播的方式發送到局域網中,網關路由器接受到請求報文就會把自己的MAC 地址返回給本機。

    02.獲取域名的IP 地址
        ~接下來一切都準備好了,可以開始講鍵入URL 之後的事情了:

        ~首先我們要訪問DNS 服務器獲得網站對應的IP 地址,這時我們需要把DNS 報文封裝到一個UDP 報文中,進而封裝到網絡層的數據包中,填上源IP,目的DNS 服務器IP 地址。接著封裝鏈路層,填上網卡MAC 地址和網關路由器MAC 地址。接下來這個DNS 請求報文就會經網關路由器發送給DNS 服務器。

        ~我們假設DNS 服務器緩存有該網站的IP 地址,(如果沒有緩存會進一步向更高級的DNS服務器索要IP地址)。接著DNS 服務器會返回該域名的IP 地址。

    03.三次握手建立TCP 連接
        ~拿到了該網站的IP 地址後就可以與該網站的服務器建立TCP 連接了。建立TCP 連接需要經過三次握手,過程如下:(更詳細的過程在開頭)

         △本機的TCP 首先生成一個不帶任何數據,SYN 標誌位為1,序號字段假設為client_num 的TCP 報文,經過下層一系列網絡棧後發送給目的ip 服務器。

         △該服務器接受到TCP 請求報文後,會回應一個同意連接的TCP 報文,這個報文的SYN 標誌位也會被置1,序號字段假設為server_num,ACK 響應字段為client_num + 1。

         △接受到同意連接的報文後,我方主機會進行響應,這次的TCP 報文SYN 位會被置0,序號字段為client_num + 1,ACK 響應字段為server + 1。並且這次的響應報文是可以攜帶數據的。

    04.建立連接後進行數據交互
        ~在三次握手建立連接後,本機就可以向服務器發送HTTP 請求了,服務器接受到了請求會做出響應的響應,把請求的數據發送給本機瀏覽器,最終瀏覽器把服務器響應的數據渲染顯示出來,我們就看到了五彩繽紛的網頁。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *