問題:1、網域名稱解析
2、發起tcp的3次握手
3、建立tcp連線後發起的http請求
4、伺服器端響應http請求,瀏覽器得到html**
5、瀏覽器解析html**,並請求html**中的資源
6、瀏覽器對頁面進行渲染呈現給使用者
1.網域名稱解析
dns解析的詳細過程:
1、解析網域名稱時,瀏覽器會首先會依次檢視自己的dns快取、作業系統中的dns快取、本地硬碟的 hosts 檔案、路由器快取,看看其中有沒有快取和這個網域名稱對應的ip位址,如果有的話就直接使用 。
2、如果在上面的檔案中沒有找到對應的 ip 位址,瀏覽器就會發出乙個dns請求到本地dns伺服器。本地dns伺服器一般是你的網路接入伺服器商提供,比如中國電信,中國移動。
3、於是本地dns伺服器檢視自己有沒有快取對應的 ip 位址,若有則直接返回結果,否則本地dns伺服器需要向dns根伺服器進行查詢。根 dns 伺服器沒有記錄具體的網域名稱和 ip 位址的對應關係,而是告訴本地 dns 伺服器,你可以到域伺服器上去繼續查詢,並返回頂級網域名稱伺服器的 ip 位址給本地dns 伺服器。
4、本地dns伺服器再請求頂級網域名稱伺服器返回二級網域名稱伺服器ip,再請求二級網域名稱伺服器返回**網域名稱伺服器ip…直到找到對應的 ip 位址,返回給瀏覽器。
5、最後,本地dns伺服器不僅要把ip位址返回給使用者電腦,還要把這個對應關係儲存在快取中,以備下次別的使用者查詢時,可以直接返回結果,加快網路訪問。
2.tcp的三次握手
過程:(1)第一次握手:
客戶端主動向服務端傳送請求建立連線的報文,並進入同步已傳送狀態;syn = 1 表示連線請求,seq = x 表示起始序列號,x表示乙個隨機數,通常為1。(syn = 1,seq = x)
(2)第二次握手:
服務端收到客戶端的報文之後,返回一段確認接收到請求報文並同意建立新連線的報文,並進入同步收到狀態。(syn = 1, ack = 1, seq = y, ack = x + 1)
(3)第三次握手:
客戶端接收到服務端的確認報文之後,也返回一段確認報文給服務端表示自己已收到確認報文並進入建立連線狀態,服務端收到確認報文後也進入建立連線狀態,此時雙方成功建立tcp連線。(ack = 1, seq = x + 1, ack = y + 1)
注:雙方的確認號ack和序號seq的值,都是在彼此ack和seq值的基礎上進行計算的,這樣做保證了tcp報文傳輸的連貫性。一旦出現某一方發出的tcp報文丟失,便無法繼續"握手",以此確保了"三次握手"的順利完成。
關於詳細的tcp三次握手與四次揮手可見文章: tcp的三次握手與四次揮手.
3.客戶端傳送http請求
瀏覽器將使用者輸入的位址封裝成http request請求報文,傳送到伺服器。
http請求報文格式:請求行+請求頭+空行+請求體
//請求行:請求方法+http版本
accept:image/gif.image/jpeg //從這裡開始直到空行都是請求頭
accept-language:zh-cn
connection:keep-alive
host:localhost
user-agent:mozila/
4.0(compatible;
msie5
.01;window nt5.0)
accept-encoding:gzip,deflate
username=jinqiao&password=
1234
//請求體
4.伺服器端響應資源
伺服器收到請求後會返回響應報文,並在響應體中返回相關資源。
http響應報文格式:狀態行+響應頭+空行+響應體
//狀態行:http版本+狀態碼+提示資訊
server:apache/r/n //從這裡開始直到空行都是響應頭
content-encoding:gzip/r/nxi
//響應體
5.瀏覽器渲染頁面
(1)html被html解析器解析成dom tree, css則被css解析器解析成cssom tree(並行解析)。
(2)dom tree和cssom tree解析完成後,被合併到一起,形成渲染樹(render tree)。
當第5步完成後,之前建立的tcp連線會因為資源傳輸完成而斷開嗎?
這要根據connection請求頭,如果是keep-alive,伺服器就保持tcp連線;如果沒有或者是close,則傳輸完畢便主動關閉tcp連線。
現在的瀏覽器都是http1.1,都是預設keep-alive,http1.0及以前就都是請求完畢便主動關閉tcp連線。
瀏覽器輸入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網域名稱解析 客戶端收到你輸入的網域名稱位址後,它首先去找本...