1.網域名稱解析
要知道,資料傳輸時所識別的資料鏈路層封裝的幀,並不是通過字串「www.baidu.com」傳輸的,而是通過對放的mac位址找到對方的(硬體位址),那麼要想獲得mac位址,自然也是通過ip位址並通過arp協議轉換而來的。
因為應用層只認識ip位址,所以當務之急,要想獲取資料,必須先了解「www.baidu.com」網域名稱所對應的ip位址。
想到了什麼?dns伺服器——網域名稱解析伺服器。
但是我們要知道,我們的網路環境是錯綜複雜的,所以能自己自立根深解決的問題,盡量不要去麻煩別人,就好比你不確定高速路上堵不堵,你可以在家樓下買到香菸,何必大老遠上高速去上海買呢?
hosts檔案是乙個用於儲存計算機網路中節點資訊的檔案,它可以將主機名對映到相應的ip位址,實現dns的功能,它可以由計算機的使用者進行控制。
(ps:所以如果我們修改它,將www.baidu.com的對應ip改為127.0.0.1,看看會發生什麼?)
b)如果hosts檔案沒有,瀏覽器會檢視自己的快取。(由上面 ps 中的結果可以得出結論順序為先 a) 再 b) 還是先 b) 再 a))。
:我們先來看一下分布式的網域名稱系統dns:
我們以m.xyz.com 向 a.abc.com傳送郵件為例,我們m.xyz.com詢問對方網域名稱解析的方式分別是迭代查詢和遞迴查詢,如圖所示:
2.發起連線,構造請求。
a)建立tcp連線,牢記三次握手的過程。
b)確認連線後傳送乙個http請求報文。
在這裡要清楚網路棧模型封裝http資料報的過程,先是寫入http報文的資訊——首行、頭部、空行、內容。再是在傳輸層打包,加上tcp首部,再來到ip層加上ip頭部,通過arp協議知道對方的mac位址,到資料鏈路層打包封裝成幀,通過路由**,抵達目的mac位址,再自下而上拆包,知道抵達對方伺服器。之後對方伺服器寫乙個響應報文再用同樣的方式傳回。
http請求報文的格式:
需要注意的是,還有兩個很常見的報文方法是 connect 和 get 。
connect表示要求用隧道協議連線**,連線https協議下的網域名稱時經常可以抓到這個型別的包。
get表示獲取資源,與post作用大致相同,最大的不同就是post有body,而get沒有。
3.資料**
我們在2中有提及過細粒度上的路由**。那麼在粗粒度上發生了什麼?
a)請求抵達運營商維護的cdn伺服器,看看是否有該請求對應響應的靜態頁面。
cdn的一大作用就是貯存一些在它所管理區域會頻發用到的響應靜態頁面,這在很大程度上就很好的減輕了網路壓力,使用者不用直接去詢問**的總部伺服器,可以更快得到響應,增加了使用者體驗的幸福感,還減輕了網路擁塞,兩全其美。
入口伺服器的作用也是為了提高使用者體驗的幸福感,入口伺服器也會貯存一些常用的靜態頁面,這也不用再深入其他伺服器取資料了。
c)如果入口伺服器也沒有,則要深入去相關的伺服器取得資料。
就比如我要看,還有我登入了賬號的資訊,就會從伺服器,使用者管理伺服器去取響應資料。
詳情見圖:
瀏覽器輸入URL後發生了什麼
我們經常在瀏覽器中輸入乙個 但是在輸入這個 後,發生了什麼?今天我們來分析一下!通常,在輸入乙個 後,發生的事情分為六步 dns網域名稱解析,tcp連線,http請求,接收響應結果,瀏覽器解析html,瀏覽器布局渲染。1.查詢網域名稱的ip位址 1 url的格式 乙個url包括協議,網路位址,資源路...
細說瀏覽器輸入URL後發生了什麼
1.dns網域名稱解析 2.建立tcp連線 3.傳送http請求 4.伺服器處理請求 5.返回響應結果 6.關閉tcp連線 7.瀏覽器解析html 8.瀏覽器布局渲染 總結 當我們在瀏覽器輸入 並回車後,一切從這裡開始。一 dns網域名稱解析 客戶端收到你輸入的網域名稱位址後,它首先去找本地的hos...
細說瀏覽器輸入URL後發生了什麼
本文摘要 1.dns網域名稱解析 2.建立tcp連線 3.傳送http請求 4.伺服器處理請求 5.返回響應結果 6.關閉tcp連線 7.瀏覽器解析html 8.瀏覽器布局渲染 總結 當我們在瀏覽器輸入 並回車後,一切從這裡開始。一 dns網域名稱解析 客戶端收到你輸入的網域名稱位址後,它首先去找本...