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