以前一直都記不住,這次自己理解了一下
用自己的話總結了一次,不對的地方希望大佬給我指出來
1.主機首先讀緩存,看看緩存內有沒有IP地址,如果沒有則通過DHCP協議獲取客戶端的IP地址、子網掩碼和DNS服務器的IP地址
2.然后開始向服務器發生請求,發生請求需要生產一個TCP套接字,生成這個套接字是需要網站域名對應的IP地址,要獲取IP地址需要解析域名,這時候就用到了DNS解析協議
3.要使用DNS解析協議,需要通過網關路由器轉發DNS解析請求,這時候通過ARP協議將DHCP獲取到的網關路由器IP解析成網關路由器的MAC地址,通過網關路由器發生DNS查詢請求,DNS服務器響應后,通過UDP協議傳輸 [ 其中間的路程:路由器反向轉發->網關路由器->以太網交換機->主機(客戶端) ]
以下為參考資料:附原文地址
1. DHCP 配置主機信息
-
假設主機最開始沒有 IP 地址以及其它信息,那么就需要先使用 DHCP 來獲取。
-
主機生成一個 DHCP 請求報文,並將這個報文放入具有目的端口 67 和源端口 68 的 UDP 報文段中。
-
該報文段則被放入在一個具有廣播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 數據報中。
-
該數據報則被放置在 MAC 幀中,該幀具有目的地址 FF:FF:FF:FF:FF:FF,將廣播到與交換機連接的所有設備。
-
連接在交換機的 DHCP 服務器收到廣播幀之后,不斷地向上分解得到 IP 數據報、UDP 報文段、DHCP 請求報文,之后生成 DHCP ACK 報文,該報文包含以下信息:IP 地址、DNS 服務器的 IP 地址、默認網關路由器的 IP 地址和子網掩碼。該報文被放入 UDP 報文段中,UDP 報文段有被放入 IP 數據報中,最后放入 MAC 幀中。
-
該幀的目的地址是請求主機的 MAC 地址,因為交換機具有自學習能力,之前主機發送了廣播幀之后就記錄了 MAC 地址到其轉發接口的交換表項,因此現在交換機就可以直接知道應該向哪個接口發送該幀。
-
主機收到該幀后,不斷分解得到 DHCP 報文。之后就配置它的 IP 地址、子網掩碼和 DNS 服務器的 IP 地址,並在其 IP 轉發表中安裝默認網關。
2. ARP 解析 MAC 地址
-
主機通過瀏覽器生成一個 TCP 套接字,套接字向 HTTP 服務器發送 HTTP 請求。為了生成該套接字,主機需要知道網站的域名對應的 IP 地址。
-
主機生成一個 DNS 查詢報文,該報文具有 53 號端口,因為 DNS 服務器的端口號是 53。
-
該 DNS 查詢報文被放入目的地址為 DNS 服務器 IP 地址的 IP 數據報中。
-
該 IP 數據報被放入一個以太網幀中,該幀將發送到網關路由器。
-
DHCP 過程只知道網關路由器的 IP 地址,為了獲取網關路由器的 MAC 地址,需要使用 ARP 協議。
-
主機生成一個包含目的地址為網關路由器 IP 地址的 ARP 查詢報文,將該 ARP 查詢報文放入一個具有廣播目的地址(FF:FF:FF:FF:FF:FF)的以太網幀中,並向交換機發送該以太網幀,交換機將該幀轉發給所有的連接設備,包括網關路由器。
-
網關路由器接收到該幀后,不斷向上分解得到 ARP 報文,發現其中的 IP 地址與其接口的 IP 地址匹配,因此就發送一個 ARP 回答報文,包含了它的 MAC 地址,發回給主機。
3. DNS 解析域名
-
知道了網關路由器的 MAC 地址之后,就可以繼續 DNS 的解析過程了。
-
網關路由器接收到包含 DNS 查詢報文的以太網幀后,抽取出 IP 數據報,並根據轉發表決定該 IP 數據報應該轉發的路由器。
-
因為路由器具有內部網關協議(RIP、OSPF)和外部網關協議(BGP)這兩種路由選擇協議,因此路由表中已經配置了網關路由器到達 DNS 服務器的路由表項。
-
到達 DNS 服務器之后,DNS 服務器抽取出 DNS 查詢報文,並在 DNS 數據庫中查找待解析的域名。
-
找到 DNS 記錄之后,發送 DNS 回答報文,將該回答報文放入 UDP 報文段中,然后放入 IP 數據報中,通過路由器反向轉發回網關路由器,並經過以太網交換機到達主機。
4. HTTP 請求頁面
-
有了 HTTP 服務器的 IP 地址之后,主機就能夠生成 TCP 套接字,該套接字將用於向 Web 服務器發送 HTTP GET 報文。
-
在生成 TCP 套接字之前,必須先與 HTTP 服務器進行三次握手來建立連接。生成一個具有目的端口 80 的 TCP SYN 報文段,並向 HTTP 服務器發送該報文段。
-
HTTP 服務器收到該報文段之后,生成 TCP SYN ACK 報文段,發回給主機。
-
連接建立之后,瀏覽器生成 HTTP GET 報文,並交付給 HTTP 服務器。
-
HTTP 服務器從 TCP 套接字讀取 HTTP GET 報文,生成一個 HTTP 響應報文,將 Web 頁面內容放入報文主體中,發回給主機。
-