網(wǎng)站的訪問從輸入 URL 到頁面加載是怎么完成?相信很多的人都瀏覽過網(wǎng)站,但是網(wǎng)站的訪問過程是怎么完成的?下面小編的解析:
操作的過程很簡單:打開瀏覽器,在地址欄中鍵盤輸入www.baidu
.com,回車,瀏覽網(wǎng)頁….
地址欄輸入www.baidu.com
當你按輸入www.baidu.com,瀏覽器接收到這個消息之后,會觸發(fā)自動完成機制。瀏覽器根據(jù)自己的算法識別出你要訪問的URL。
按下回車鍵
此時,回車鍵的電流回路通過電
容器間接地閉合,使得少量的電流進入了鍵盤的主邏輯電路系統(tǒng)中。邏輯電路系統(tǒng)會掃描每個按鍵的狀態(tài),對于按鍵開關的電位彈跳變化進行解析,并將其轉化為鍵盤碼值。鍵盤控制器在得到碼值之后,將進行編碼。編碼后,鍵碼值將儲存在寄存器內(nèi)。鍵盤的USB控制器會查詢到這個鍵碼值,然后將鍵碼值轉換為一個數(shù)據(jù)包。之后,此數(shù)據(jù)包將通過鍵盤傳遞給計算機,計算機把數(shù)據(jù)包進行解碼。最后,解碼后的按鍵碼值傳輸?shù)讲僮飨到y(tǒng)的硬件層。
解析URL
瀏覽器通過URL可以知道將要使用HTTP協(xié)議,和請求資源的主頁。
瀏覽器會將地址欄中輸入的文字傳給默認的搜索引擎。把文字傳遞給搜索引擎的時候,URL會帶有特定的一串字符,用來告訴搜索引擎這次搜索來自某個瀏覽器。
Unicode(規(guī)范字符集)編碼轉換。如果有非ASCII的字符,將其進行Unicode編碼轉換。
檢查HSTS列表
瀏覽器檢查自帶的“HSTS(HTTP嚴格傳輸安全)”列表,這個列表里包含了那些只使用HTTPS進行連接的網(wǎng)站。
DNS查詢與解析
如果緩存中沒有,就調(diào)用庫函數(shù)進行查詢。庫函數(shù)在進行DNS解析之前,檢
查域名是否在本地 Hosts 里。
如果域名在緩存和Hosts中都沒有,庫函數(shù)會向 DNS
服務器發(fā)送一條 DNS 查詢請求。
查詢本地的DNS服務器。
首先查詢地址解析協(xié)議(ARP)的緩存,如果緩存命中,則返回結果:目標 IP = MAC地址。如果緩存沒有命中,就看看目標 IP 地址是不是在本地路由表中的某個子網(wǎng)內(nèi),并使用相關接口。然后查詢選擇的網(wǎng)絡接口的MAC地址。
發(fā)送ARP請求,路由器或其他硬件會返回結果(結果中包含默認網(wǎng)關的IP地址)。
通過TCP/UDP協(xié)議向DNS服務器發(fā)送相應請求。如果本地DNS服務器沒有找到結果,將會逐層查詢,直到結果(目標服務器的IP地址)返回。
使用套接字
瀏覽器得到了目標服務器的 IP 地址,以及 URL 中給出來端口號(http默認端口號是80端口)后,瀏覽器調(diào)用庫函數(shù)socket。這個請求將被封裝,目標端口會被加入頭部。在網(wǎng)絡層會再加入一個IP頭部,里面包含了目標服務器的IP地址以及本機的IP地址。接下來繼續(xù)封裝,將本地內(nèi)置網(wǎng)卡的MAC地址和本地路由器的MAC地址封裝進去。此時封裝包已經(jīng)準備就緒。