輸入URL后的那些事-建立連接

1.用戶輸入URL

首先,用戶輸入URL(統(tǒng)一資源定位符):https://www.baidu.com
https : 協(xié)議名
www : 在配置域名解析的時候,這叫主機記錄
baidu.com : 域名
說道這里,可能有小伙伴不知道網(wǎng)址-域名-服務(wù)器這幾個家伙的關(guān)系!

配置域名解析(一句話概況:通過URL去訪問哪個資源)

2、DNS解析

上一步,游覽器拿到了URL,接著游覽器需要知道具體的ip地址,這時候就需要DNS解析服務(wù)來告訴它了,你可能會問,那我們干嘛不干脆輸IP地址呢?

  1. IP地址是192.168.0.1這類數(shù)字,相比baidu.com等語義化不利于記憶
  2. 你也可以直接輸入IP地址,但是如果你的服務(wù)部署在阿里云,阿里云會視訪問為惡意攻擊而觸發(fā)警報

DNS是什么呢?

DNS(Domian Name System),網(wǎng)域名稱系統(tǒng),我們配置域名解析的過程,其實就是在互聯(lián)網(wǎng)上建立一個域名IP地址的映射關(guān)系(一個分布式數(shù)據(jù)庫),當(dāng)然具體的操作是你的域名提供商幫你做了。

解析過程

  1. 游覽器從緩存中查找DNS記錄(緩存時間比較短,大概只有1分鐘,且只能容納1000條緩存,chrome查看辦法:net-internals/#dns)
  2. 如果沒找到,則到操作系統(tǒng)的DNS緩存(Windows系統(tǒng)可以在命令行下使用 ipconfig /displaydns查看 )中查找
  3. 如果沒找到,則到hosts文件(位于C:\Windows\System32\drivers\etc)中查找
  4. 如果沒找到,游覽器發(fā)起DNS的系統(tǒng)調(diào)用,接著向本地配置的DNS服務(wù)器(360可以配置,反正它說自己的好,-,-)發(fā)起域名解析請求
  5. 接下來的過程,嘴炮不如上圖


    DNS解析過程

3、發(fā)起TCP三次握手

拿到服務(wù)器IP后,游覽器會以一個隨機端口(1024 < port < 65535)向服務(wù)器的80端口(第一張圖域名解析中,可以看到?jīng)]有配置服務(wù)器端口,默認(rèn)的)發(fā)起TCP連接請求。這個連接請求(原始的http請求經(jīng)過TCP/IP4層模型的層層封包)到達(dá)服務(wù)器端后(這中間通過各種路由設(shè)備,局域網(wǎng)內(nèi)除外),進(jìn)入到網(wǎng)卡,然后是進(jìn)入到內(nèi)核的TCP/IP協(xié)議棧(用于識別該連接請求,解封包,一層一層的剝開),還有可能要經(jīng)過Netfilter防火墻(屬于內(nèi)核的模塊)的過濾,最終到達(dá)WEB程序,最終建立了TCP/IP的連接。

大白話模式
client : 嘿,服務(wù)器大哥,咱們嘮嘮嗑吧
server:好,我聽著呢,你嘮吧
client : 那你聽好啦,我要嘮了!

三次握手

4、發(fā)起HTTP請求

這個時候,有個需要注意的點,很多人也奇怪的東西,為什么我的請求前面有個類型為option的請求,這個是復(fù)雜請求簡單請求的區(qū)別,叫預(yù)檢請求(PreFlight),詳情:阮一峰:跨域資源共享 CORS 詳解
http請求成功后,服務(wù)器把html發(fā)送給游覽器,碰到linkscript標(biāo)簽后,渲染暫停,等待下載完成(阻塞式),所以性能優(yōu)化中有一點就是把必要的css和script放在head標(biāo)簽內(nèi),其他的比如點擊事件,定時器,放在下面(onload就是這個作用)

后面還有幾個大點,后續(xù)更新:
1、游覽器渲染原理(dom樹,渲染樹,回流,重繪)
2、瀏覽器渲染阻塞與優(yōu)化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容