當我們在瀏覽器中輸入一個網址,想要瀏覽該網站的內容時,計算機及網路是通過哪些協議幫助我們實作這一需求的呢?
一、DHCP 配置主機資訊:獲得網關路由器的 IP 地址
(1)假設主機最開始沒有 IP 地址以及其它資訊,那么就需要先使用 DHCP 來獲取,
(2)主機生成一個 DHCP 請求報文,并將這個報文放入具有目的埠 67 和源埠 68 的 UDP 報文段中,
(3)該報文段則被放入在一個具有廣播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 資料報中,
(4)該資料報則被放置在 MAC 幀中,該幀具有目的地址 FF:FF:FF:FF:FF:FF,將廣播到與交換機連接的所有設備,
(5)連接在交換機的 DHCP 服務器收到廣播幀之后,不斷地向上分解得到 IP 資料報、UDP 報文段、DHCP 請求報文,之后生成 DHCP ACK 報文,該報文包含以下資訊:IP 地址、DNS 服務器的 IP 地址、默認網關路由器的 IP 地址和子網掩碼,該報文被放入 UDP報文段中,UDP 報文段有被放入 IP 資料報中,最后放入 MAC 幀中,
(6)該幀的目的地址是請求主機的 MAC 地址,因為交換機具有自學習能力,之前主機發送了廣播幀之后就記錄了 MAC地址到其轉發介面的交換表項,因此現在交換機就可以直接知道應該向哪個介面發送該幀,
(7)主機收到該幀后,不斷分解得到 DHCP 報文,之后就配置它的 IP 地址、子網掩碼和 DNS 服務器的 IP 地址,并在其 IP 轉發表中安裝默認網關,
二、ARP 決議 MAC 地址
(1)用戶在瀏覽器鍵入URL(網址)后,主機通過瀏覽器生成生成一個 TCP 套接字,套接字向 HTTP 服務器發送 HTTP 請求,為了生成該套接字,主機需要知道網站的域名對應的 IP 地址,
(2)主機生成一個 DNS 查詢報文,該報文具有 53 號埠,因為 DNS 服務器的埠號是 53,
(3)該 DNS 查詢報文被放入目的地址為 DNS 服務器 IP 地址的 IP 資料報中,
(4)該 IP 資料報被放入一個以太網幀中,該幀將發送到網關路由器,
DHCP 程序只知道網關路由器的 IP 地址,為了獲取網關路由器的 MAC 地址,需要使用 ARP 協議,
(5)主機生成一個包含目的地址為網關路由器 IP 地址的 ARP 查詢報文,將該 ARP 查詢報文放入一個具有廣播目的地址(FF:FF:FF:FF:FF:FF)的以太網幀中,并向交換機發送該以太網幀,交換機將該幀轉發給所有的連接設備,包括網關路由器,
(6)網關路由器接收到該幀后,不斷向上分解得到 ARP 報文,發現其中的 IP 地址與其介面的 IP 地址匹配,因此就發送一個 ARP 回答報文,包含了它的 MAC 地址,發回給主機,
三、DNS 決議域名
(1) 網關路由器接收到包含 DNS 查詢報文的以太網幀后,抽取出 IP 資料報,并根據轉發表決定該 IP 資料報應該轉發的路由器,
(2)因為路由器具有內部網關協議(RIP、OSPF)和外部網關協議(BGP)這兩種路由選擇協議,因此路由表中已經配置了網關路由器到達 DNS 服務器的路由表項,
(3)到達 DNS 服務器之后,DNS 服務器抽取出 DNS 查詢報文,并在 DNS 資料庫中查找待決議的域名, 【具體查詢程序可以看我的博客【計算機網路】DNS域名決議程序】
(4)找到 DNS 記錄之后,發送 DNS 回答報文,將該回答報文放入 UDP 報文段中,然后放入 IP 資料報中,通過路由器反向轉發回網關路由器,并經過以太網交換機到達主機,
四、HTTP 請求頁面
(1)有了 HTTP 服務器的 IP 地址之后,主機就能夠生成 TCP 套接字,該套接字將用于向 Web 服務器發送 HTTP GET 報文,
(2)在生成 TCP 套接字之前,必須先與 HTTP 服務器進行三次握手【三次握手的程序可以看我的博客【計算機網路】TCP建立/洗掉連接:三次握手與四次揮手】來建立連接,生成一個具有目的埠 80 的 TCP SYN 報文段,并向 HTTP 服務器發送該報文段,
(3)HTTP 服務器收到該報文段之后,生成 TCP SYN ACK 報文段,發回給主機,
(4)連接建立之后,瀏覽器生成 HTTP GET 報文,并交付給 HTTP 服務器,
(5)HTTP 服務器從 TCP 套接字讀取 HTTP GET 報文,生成一個 HTTP 回應報文,將 Web 頁面內容放入報文主體中,發回給主機,
瀏覽器收到 HTTP 回應報文后,抽取出 Web 頁面內容,之后進行渲染,顯示 Web 頁面,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286948.html
標籤:其他
上一篇:Spark之核心架構
下一篇:2021面試資料總結
