計算機網絡學習(十三)Web 頁面請求的歷程

回顧:Web 頁面請求的歷程

  • 一名學生 Bob 將他的便攜機與學校的以太網交換機相連,下載一個 Web 頁面(比如說 www. google.com 主頁)
  • 在這裏插入圖片描述

總結

  1. 一臺電腦新加入網絡需要 IP 地址,靠 DHCP 協議獲得自己的 IP 地址
  2. 靠 DNS 解析域名獲得目的 IP 地址
  3. TCP 三次握手建立進程之間的連接

1. 準備: DHCP、 UDP、 IP 和以太網

  • 假定 Bob 啓動他的便攜機,然後將其用一根以太網電纜連接到學校的以太網交換機 , 交換機與學校的路由器相連。學校的路由器與一個 ISP 連接, 本例中 ISP 爲 comcast.net ,爲學校提供了 DNS 服務 ; 所以,DNS 服務器駐留在 comcast.net 網絡中而不是學校網絡中。 我們將假設 DHCP 服務器運行在路由器中。
  • 當 Bob 首先將其便攜機與網絡連接時,沒有 IP 地址他就不能做任何事情。所以,Bob 的便攜機所採取的一個網絡相關的動作是運行 DHCP 協議, 以從本地 DRHP 服務器獲得一個 IP 地址以及其他信息。
  1. Bob 便攜機上的操作系統生成一個 DHCP 請求報文 ,並將這個報文放入具有目的地端口 67 (DHCP 服務器)和源端口 68 的 UDP 報文段,該 UDP 報文段則被放置在一個具有廣播 IP 目的地地址 (255.255.255.255 ) 和源 IP 地址 0. 0. 0.0 的 IP 數據報中,因爲 Bob 的便攜機還不具有一個 IP 地址。
  2. 包含 DHCP 請求報文的 lP 數據報則被放置在以太網幀中。該以太網幀具有目的 MAC 地址 FF: FF: FF: FF: FF: FF,使該幀將廣播到與交換機連接的所有設備 (如果順利的話也包括 DHCP 服務器) ,該幀的源 MAC 地址是 Bob 便攜機的 MAC 地址
  3. 包含 DHCP 請求的廣播以太網幀是第一個由 Bob 便攜機發送到以太網交換機的幀。 該交換機在所有的出端口廣播入幀,包括連接到路由器的端口
  4. 路由器在它的具有 MAC 地址 00: 22: 6B: 45: 1F 的接口接收到該廣播以太網幀,該幀包含 DHCP 請求,並且從該幀中抽取出 IP 數據報,該數據報的載荷被分解向上到達 UDP, DHCP 請求報文從此 UDP 報文段中抽取出來。 此時 DHCP 服務器有了 DHCP 請求報文。
  5. 假設運行在路由器中的 DHCP 服務器能夠以 CIDR 塊 68.85.2.0/24 分配 IP 地址。 所以本例,在學校內使用的所有 IP 地址都在 Comcast 的地址塊中。 假設 DHCP 服務器分配地址 68.85.2.101 給 Bob 的便攜機。 DHCP 服務器生成包含這個 IP 地址 以及 DNS 服務器的 IP 地址 (68.87.71. 226) 、默認網關路由器的 IP 地址 (68. 85. 2. 1 )和 子網塊 (68. 85. 2. 0/24) (等價爲"網絡掩碼" )的一個 DHCP ACK 報文 。該 DHCP 報文被放入一個 UDP 報文段、 IP 數據報中、以太網幀中。 這個以太網幀的源 MAC 地址是路由器連到歸屬網絡時接口的 MAC 地址 (00:22:6B:45: 1F: 1B) 時,目的 MAC 地址是 Bob 便攜機的 MAC 地址 (00: 16: D3 : 23: 68: 8A) 。
  6. 包含 DHCP ACK 的以太網幀由路由器發送給交換機。 因爲交換機是自學習的,並且先前從 Bob 便攜機收到(包含 DHCP 請求的)以太網幀,所以該交換機知道尋址到 00:16: D3:23:68:8A 的幀僅從通向 Bob 便攜機的輸出端口轉發
  7. Bob 便攜機接收到包含 DHCP ACK 的以太網幀,從該以太網幀中抽逐層最終抽取 DHCP ACK 報文。 Bob 的 DHCP 客戶 則記錄下它的 IP 地址和它的 DNS 服務器的 IP 地址。 它還在其 IP 轉發表中安裝默認網關的地址。Bob 便攜機將向該默認網關發送目的地址爲其子網 68.85.2.0/24 以外 的所有數據報。

2. 仍在準備: DNS 和 ARP

  • 當 Bob 將 www.google.com 的 URL 鍵入其 Web 瀏覽器時,Bob 的 Web 瀏覽器通過生成一個 TCP 套接字開始了該過程,套接字用於向 www. google. com 發送 HTTP 請求 。 爲了 生成該套接字, Bob 便攜機將需要知道 www.google.com 的 IP 地址,使用 DNS 協議提供這種名字到 IP 地址的轉換服務。
  1. Bob 便攜機上的操作系統因此生成一個 DNS 查詢報文,將字符串附 www. google. com 放入 DNS 報文的問題段中。該 DNS 報文則放置在一個具有 53 號 (DNS 服務器)目的端口的 UDP 報文段中,再被放入具有 IP 目的地址 68.87.71. 226 (在 第 5 步中 DHCP ACK 返回的 DNS 服務器地址)和源 IP 地址 68.85.2.101 的 IP 數據報中
  2. Bob 便攜機將該數據報放入一個以太網幀。 該幀將發送 (在鏈路層尋址)到學校網絡中的網關路由器。 然而,即使 Bob 便攜機經過上述第 5 步中的 DHCP ACK 報文知道了學校網關路由器的 IP 地址(68. 85. 2. 1) ,但仍不知道該網關路由器的 MAC 地址。 爲了獲得該網關路由器的 MAC 地址, Bob 便攜機將需要使用 ARP 協議
  3. Bob 便攜機生成一個具有目的 IP 地址 68.85.2.1 (默認網關)的 ARP 查詢報文,放置在一個具有廣播目的地址的以太網幀,並向交換機發送,交換機將原幀交付給所有連接的設備,包括網關路由器。
  4. 網關路由器在通往學校網絡的接口上接收到包含讀 ARP 查詢報文的幀,發現在 ARP 報文中目標 IP 地址匹配其接口的 IP 地址。因此準備一個 ARP 回答,指示它的 MAC 地址 00:22:6B:45:1F:1B 對應 IP 地址 68.85.2. 1。 它將 ARP 回答放 在一個以太網幀,其目的地址爲 (Bob 便攜機) ,並向交換機發送該幀,交換機將幀交付給 Bob 便攜機。
  5. Bob 便攜機接收包含 ARP 回答報文的幀,從 ARP 回答報文中抽取網關路由器的 MAC 地址
  6. Bob 便攜機現在能夠使包含 DNS 查詢的以太網幀尋址到網關路由器的 MAC 地址。 注意到在該幀中的 IP 數據報具有 IP 目的地址 68.87.71. 226 (DNS 服務器) , 而該幀具有目的地 00: 22: 6B: 45: 1F: 1B (網關路由器) 。Bob 便攜機向交換機發送該幀, 交換機將該幀交付給網關路由器。

3. 仍在準備:域內路由選擇到 DNS 服務器

  1. 網關路由器接收該幀並抽取包含 DNS 查詢的 IP 數據報。 路由器查找該數據報的目的地址 (68.87.7 1. 226). 並根據其轉發表決定該數據報應當發送到 Comcast 網絡中最左邊的路由器。 lP數據報放置在鏈路層幀,該鏈路適合將學校路由器連接到最 左邊 Comcast 路由器,並且該幀經這條鏈路發送。
  2. 在 Comcast 網絡中最左邊的路由器接收到該幀,抽取 IP 數據報,檢查該數據報的目的地址,根據其轉發表確定出接口,經過該接口朝着 DNS 服務器轉發數據報,而轉發表已根據 Comcast 的域內協議(RIP、 OSPF)以及因特網的域間協議 BGP 所填寫
  3. 最終包含 DNS 查詢的 IP 數據報到達了 DNS 服務器,DNS 服務器抽取出 DNS 查詢報文,在它的 DNS 數據庫中查找名字 www. google. com ,找到包含對應 www.google.com 的 IP 地址 (64.233.169.105)的 DNS 源記錄 , (假設它當前緩存在 DNS 服務器中)這種緩存數據源於 google. com 的權威 DNS 服務器。該 DNS 服務器形成了一 個包含這種主機名到 IP 地址映射的 DNS 回答報文,將該 DNS 回答報文放入 UDP 報文段中,該報文段放入尋址到 Boh 便攜機 (68.85.2. 101 )的 IP 數據報中。該數據報將通過 Comcast 網絡反向轉發到學校的路由器,並從這裏經過以太網交換機到 Bob 便攜機。
  4. Bob 便攜機從 DNS 報文抽取出服務器 www. google. com 的 IP 地址。 最終,Bob 便攜機此時準備接觸 www.google.com 服務器!

4. Web 客戶-服務器交互: TCP 和 HTTP

  1. Bob 便攜機有了 www.google.com 的 IP 地址,它能夠生成 TCP 套接字 ,該套接字將用於向 www.google.com 發送 HTTP GET 報文 。Bob 生成 TCP 套接字時,在 Bob 便攜機中的 TCP 必須首先與 www.google.com 中的 TCP 執行三次握手。Bob 便攜機因此首先生成一個具有目的端口 80 (針對 HTTP 的)的 TCP SYN 報文段,將該 TCP 報文段放置在具有目的 IP 地址 64.233. 169. 105 (www. google. com) 的 IP 數據報中,將該數據報放置在 MAC 地址爲 00:22:6B:45:1F: 1B (網關路由器)的幀中, 並向交換機發送該幀。
  2. 在學校網絡、 Comcast 網絡和谷歌網絡中的路由器朝着 www. google. com 轉發包含 TCP SYN 的數據報,使用每臺路由器中的轉發表。 前面講過支配分組經 Comcast 和谷歌網絡之間域間鏈路轉發的路由器轉發表項,是由 BGP 協議定的
  3. 最終,包含 TCP SYN 的數據報到達 www. googole. com。 從數據報抽取出 TCP SYN 報文並分解到與端口 80 相聯繫的歡迎套接字。 對於谷歌 HTTP 服務器和 Bob 便攜機之間的 TCP 連接生成一個連接套接字。 產生一個 TCP SYNACK 報文段, 將其放入向 Bob 便攜機尋址的一個數據報中,最後放人鏈路層幀,該鏈路適合將 www.google.com 連接到其第一跳路由器。
  4. 包含 TCP SYNACK 報文段的數據報通過谷歌、 Comcast 和學校網絡,最終到達 Bob 便攜機的以太網卡。 數據報在操作系統中分解到步驟 18 生成的 TCP 套接字,從而進入連接狀態
  5. 藉助於 Bob 便攜機上的套接字,現在準備向 www. google. com 發送字節 了, Bob 的瀏覽器生成包含要獲取的 URL 的 HTTP GET 報文。 HTTP GET 報文則寫入套接字,其中 GET 報文成爲一個 TCP 報文段的載荷。 該 TCP 報文段放置進一個數據報,交付到 www.google.com ,如前面步驟 18 -20 所述。
  6. 在 www.google.com 的 HTTP 服務器從 TCP 套接字讀取 HTTP GET 報文,生成一 個 HTTP 響應報文,將請求的 Web 頁內容放入 HTTP 響應體中,並將報文發送進 TCP 套接字中
  7. 包含 HTTP 回答報文的數據報通過谷歌、 Comcast 和學校網絡轉發,到達 Bob 便攜機。 Bob 的 Web 瀏覽器程序從套接字讀取 HTTP 響應,從 HTTP 響應體中抽取 Web 網頁 的 html,終於顯示了 Web 網頁。
  • 上述例子看起來是儘可能詳盡 ,但是我們已經忽略了一些可能的附加協議(例如,運行在學校網關路由器中的 NAT,到學校網絡的無線接入,接入學校網絡或對報文段或數據報加密的安全協議, 網絡管理協議) ,以及人們將會在公共因特網中遇到的一些考慮 (Web 緩存, DNS 等級體系) 。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章