×

從輸入 URL 到頁(yè)面加載是怎么完成(上)

  • 作者:新網(wǎng)
  • 來(lái)源:新網(wǎng)
  • 瀏覽:100
  • 2018-02-26 17:52:36

網(wǎng)站的訪問(wèn)從輸入 URL 到頁(yè)面加載是怎么完成?相信很多的人都瀏覽過(guò)網(wǎng)站,但是網(wǎng)站的訪問(wèn)過(guò)程是怎么完成的?下面小編的解析。

 網(wǎng)站的訪問(wèn)從輸入 URL 到頁(yè)面加載是怎么完成?相信很多的人都瀏覽過(guò)網(wǎng)站,但是網(wǎng)站的訪問(wèn)過(guò)程是怎么完成的?下面小編的解析:

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

免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

免費(fèi)咨詢獲取折扣

Loading