計算機網絡自頂向下 —— 鏈路層(二)

前言

  繼續說鏈路層

  web的請求 的三次我握手我寫過一篇猝不及防的愛情
  詳細的說了三次握手
 
  我是前端開發者
  其實web的請求每一天都有在用
  瀏覽器主動發起請求 請求成功後 服務器返回數據,拿到數據後,頁面展示。
  這就是實際應用的一條龍服務
  然後再深入的瞭解一下web請求,我發現一位球友寫的特別的詳細,但是我找不到他的博客了,如果哪一天看到了。可以叫我註明出處。

 

正文

  • 數據字段: (46-1500字節) 以太網的最大傳輸單元(MTU)是1500字節,最小長度是46字節。Ip數據報小於46字節,數據包必須被填充到46字節。
  • 目的地址 目的地的MAC地址
  • 源地址 源地址的MAC地址
  • 類型字段 類型字段允許以太網複用多種網絡層協議
  • CRC 循環冗餘檢測
  • 前同步碼 以太網幀以一個8字節的前同步碼字段開始,該前同步碼的前7個字節都是10101010,最後一個字節是10101011。前7個字節用於喚醒接收適配器,並且將他們的時鐘和發送方的時鐘同步。
  • MAC地址空間爲6字節, 2^48比特
  • IPv4: 4字節, 2^32比特
  • IPv6: 21字節, 2^128比特

DNS和ARP

  • Bob便攜機上的操作系統生成DNS查詢報文,將字符串www.google.com放入DNS報文的問題段中。該DNS報文則放置在一個具有53號目的端口的UDP報文段中。該UDP報文段則被放入具有IP目的地址的(68.87.71.226)和源IP地址(68.85.2.101)的IP數據報中。
  • Bob便攜機則將包含DNS請求報文的數據報放入一個以太網幀中。該幀將發送到Bob學校的網絡路由器,然而Bob便攜機知道了學校的網關路由器的IP地址,但是不知道MAC地址,需要使用ARP協議查詢。
  • Bob便攜機生成一個具有目的IP地址68.85.2.1(默認網關)的ARP查詢報文,將該查詢報文放置在一個具有廣播目的地址(FF:FF:FF:FF:FF:FF)的以太網幀中,並向交換機發送該以太網幀,交換機將該幀交付給所有連接的設備,包括網關路由器。
  • 網關路由器在通往學校網絡的接口上接受到包含該ARP查詢報文的幀, 發現在ARP報文中目標IP地址68.85.2.1匹配其接口的IP地址。網關路由器因此準備一個ARP回答,指示他的MAC地址00:22:6B:45:1F:1B對應IP地址68.85.2.1。它將ARP回答放在一個以太網幀中,並向交換機發送該幀,再由交換機將幀交付給Bob便攜機。
  • Bob便攜機接收包含ARP回答報文的幀,並從ARP回答報文中抽取網關路由器的MAC地址。
 
以下內容來自球友
WEB頁面請求的歷程
 
 
第一步:準備:通過DHCP、UDP等獲取本機的動態IP
 
(1)Bob的PC機首先生成DHCP請求報文,放入目的端口67和源端口68的UDP報文段。報文段放入廣播目的IP地址(255.255.255.255)和源IP地址(0.0.0.0)的IP數據報中。
(2)包含DHCP請求的數據報被放入以太網幀中,目的MAC地址爲廣播地址FF:FF:FF:FF:FF:FF,源MAC地址爲PC適配器MAC地址。該幀在交換機所有出口端廣播。
(3)路由器接口(MAC地址:00:22:6B:45:1F)接收到該幀,抽取出IP數據報。廣播IP地址表示該IP數據報需要節點的高層協議處理,所以分解出UDP報文上傳UDP。DHCP服務器從UDP報文段中得到該請求報文。
(4)服務器生成DHCP ACK報文,包括分配給PC的IP地址、DNS服務器IP地址、默認網關路由器IP地址(68.85.2.1)、子網塊(68.80.2.0/24)。該報文放入UDP、IP數據報、以太網幀中,目的MAC地址爲PC的MAC地址、源MAC地址爲路由器剛剛收到幀的子網接口的MAC地址。
(5)ACK報文發送到交換機。由於交換機通過自學習,之前從PC接收幀的時候得到MAC地址和端口的映射,所以直接將幀從連接PC的接口轉發。
(6)PC接收到幀,一步步抽取出ACK報文,記錄下自己的IP地址、DNS服務器地址。配置IP轉發表的默認網關,將目的地址爲子網塊之外的所有數據報發送向默認網關。
 
第二步:仍在準備:通過ARP查詢DNS
 
(1)Bob的PC機生成DNS查詢報文,www.google.com放入報文的問題段。DNS報文放入端口號53的UDP報文段中,UDP報文段目的IP爲DNS服務器的IP地址,源IP地址爲PC的IP地址的IP數據報,但是缺少默認網關的目的MAC地址(只知道IP地址)。
(2)PC發送查詢默認網關MAC地址的ARP查詢報文,放入廣播目的地址的以太網幀。向交換機發送該幀,交換機將該幀轉發給所有出口端。網關路由器收到查詢報文後,準備ARP回答,包括默認網關IP和對應的MAC地址。將ARP回答放入以太網幀,目的MAC地址爲PC的MAC地址。發送該幀,通過交換機交付給PC。
(3)PC獲取該幀,抽取得到網關路由器的MAC地址。將步驟(1)中的數據報放入以太網幀,目的MAC地址爲網關路由器的MAC地址。將幀發送給交換機,交付給網關路由器。
 
第三步:仍在準備:通過DNS查詢到網站的IP
 
(1)網關路由器接收幀,抽取IP數據報。根據目的地址和轉發表,決定下一跳路由器。將IP數據報放入鏈路層幀,發送至下一跳路由–comcast最左邊路由器。
(2)comcast最左邊路由器接收到幀,抽取IP數據報,根據目的IP地址和轉發表確定出口,向DNS服務器轉發數據報。轉發表已經根據域內路由協議和域間路由協議填好。
(3)DNS服務器收到IP數據報,抽取出DNS查詢報文,找到對應的IP地址,生成DNS回答報文,放入UDP報文段,反向尋址到學校路由器,最後通過交換機到PC。
(4)PC從DNS報文中抽取出www.google.com對應的IP地址。
 
第四步:WEB客戶通過TCP和HTTP與服務器交互
 
(1)PC生成一個目的端口號80的TCP SYN報文段,放入目的IP爲谷歌的(www.google.com)IP地址的數據報中,將該數據報放置在MAC地址爲00:22:6B:45:1F:1B(網關路由器)的幀中,並向交換機發送。
(2)該數據報通過學校網絡、comcast網絡、谷歌網絡到達谷歌服務器,服務器分配資源,產生TCP SYNACK報文段,放入數據報,反向到達PC。PC形成套接字,進入連接狀態,第三次握手與之後的HTTP請求一起發送。
(3)PC的瀏覽器生成獲取URL的HTTP GET報文,寫入套接字。生成的TCP報文段放入一個IP數據報中,到達谷歌服務器。
(4)谷歌HTTP服務器從TCP套接字讀取HTTP GET報文,生成HTTP響應報文,將請求的頁面內容放入HTTP報文實體,將響應報文放入套接字,生成的TCP報文段放入IP數據報,經過網絡到達PC。
(5)PC的瀏覽器從套接字讀取HTTP響應,從實體中抽取頁面的html,終於顯示web頁面。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章