當(dāng)你在瀏覽器輸入一個網(wǎng)址后發(fā)生了什么

當(dāng)你在瀏覽器中輸入一個網(wǎng)址铝阐,瀏覽器的處理過程如下:

第一步 瀏覽器查找該域名的 IP 地址

第二步 瀏覽器根據(jù)解析得到的IP地址向 web 服務(wù)器發(fā)送一個 HTTP 請求

第三步 服務(wù)器收到請求并進(jìn)行處理

第四步 服務(wù)器返回一個響應(yīng)

第五步 瀏覽器對該響應(yīng)進(jìn)行解碼,渲染顯示铐拐。

第六步 頁面顯示完成后徘键,瀏覽器發(fā)送異步請求。

下面對每個環(huán)節(jié)做進(jìn)一步分析:

01 瀏覽器查找該域名的 IP 地址

瀏覽器緩存 首先是查找瀏覽器緩存,瀏覽器會緩存DNS記錄一段時間遍蟋,不同瀏覽器保存的時常不等(2分鐘到30分鐘不等)吹害。

系統(tǒng)緩存 如果在瀏覽器緩存里沒有找到需要的記錄,瀏覽器會做一個系統(tǒng)調(diào)用來查找這個網(wǎng)址的對應(yīng)DNS信息虚青。

路由器緩存 如果在系統(tǒng)緩存里沒有找到找到對應(yīng)的IP它呀,請求會發(fā)向路由器,它一般會有自己的DNS緩存。

ISP DNS服務(wù)器 如果在路由器緩存里還是沒有對應(yīng)的IP纵穿,請求會被發(fā)送到ISP下隧。

根域名服務(wù)器 如果還是沒有,請求將發(fā)向根域名服務(wù)器進(jìn)行搜索谓媒。找不到就說明此域名不存在淆院。

02 瀏覽器根據(jù)解析得到的IP地址向 web 服務(wù)器發(fā)送一個 HTTP 請求

可能會重定向響應(yīng)

   例如“[http://facebook.com/](http://facebook.com/)”,服務(wù)器會給瀏覽器響應(yīng)一個301永久重定向響應(yīng)句惯,這樣瀏覽器就會訪問“[http://www.facebook.com/](http://www.facebook.com/)” 而非“[http://facebook.com/](http://facebook.com/)”土辩。

服務(wù)器重定向的原因有很多,舉其中兩個:

   一:跟搜索引擎排名有關(guān)抢野。你看拷淘,如果一個頁面有兩個地址,就像“[http://www.facebook.com/](http://www.facebook.com/)” 和“[http://facebook.com/](http://facebook.com/)”指孤。搜索引擎會認(rèn)為它們是兩個網(wǎng)站启涯,結(jié)果造成每一個的搜索鏈接都減少從而降低排名。 

   二:不同的地址會造成緩存友好性變差恃轩。當(dāng)一個頁面有好幾個名字時逝嚎,它可能會在緩存里出現(xiàn)好幾次。

然后瀏覽器會跟蹤重定向地址

   瀏覽器會發(fā)送另一個獲取請求到”[http://www.facebook.com/](http://www.facebook.com/)”详恼。

過程:

   通過DNS獲取到IP后补君,目標(biāo)IP和本機(jī)IP分別與子網(wǎng)掩碼相與的結(jié)果相同,那么它們在一個子網(wǎng)昧互,那么通過ARP協(xié)議可以查到目標(biāo)主機(jī)的MAC地址挽铁,否則的話,需要通過網(wǎng)關(guān)轉(zhuǎn)發(fā)敞掘,也就是目標(biāo)MAC是網(wǎng)關(guān)的MAC情臭。 

   請求需要進(jìn)行編碼芒炼,生成一個HTTP數(shù)據(jù)包癌瘾,依次打上TCP记劈、IP、以太網(wǎng)協(xié)議的頭部赫冬。其中TCP頭部主要信息是本機(jī)端口和目標(biāo)端口號等信息浓镜,用于標(biāo)識同一個主機(jī)的不同進(jìn)程,對于HTTP協(xié)議劲厌,服務(wù)器端的默認(rèn)端口號是80膛薛,本機(jī)瀏覽器的話生成一個1024到65535之間的端口號。IP頭部主要包含本地IP和目標(biāo)IP等信息补鼻。以太網(wǎng)協(xié)議頭部主要是雙方的MAC地址哄啄,目標(biāo)MAC可以由第一條所訴方法得到雅任。以太網(wǎng)數(shù)據(jù)包的數(shù)據(jù)部分,最大長度為1500字節(jié)咨跌,所以如果IP包太大的話還要拆包沪么,比如IP包5000字節(jié),要分為4包锌半,每一包都包含一個IP頭部成玫。

03 服務(wù)器收到請求并進(jìn)行處理

負(fù)載均衡

   網(wǎng)站可能會有負(fù)載均衡設(shè)備來平均分配所有用戶的請求。 

   負(fù)載均衡拳喻,即對工作任務(wù)進(jìn)行平衡,分?jǐn)偟蕉鄠€操作單元上執(zhí)行猪腕,如圖片服務(wù)器冗澈,應(yīng)用服務(wù)器÷希可分為鏈路負(fù)載均衡亚亲,集群負(fù)載均衡,操作系統(tǒng)負(fù)載均衡 

   集群負(fù)載均衡又分為硬件負(fù)載均衡和軟件負(fù)載均衡腐缤。

CDN

   請求的數(shù)據(jù)可能存儲在分布式緩存捌归、靜態(tài)文件或者數(shù)據(jù)庫中。如果請求的數(shù)據(jù)是靜態(tài)文件岭粤,如果在CDN上惜索,那么CDN服務(wù)器又會處理這個用戶的請求。如果在數(shù)據(jù)庫中需要向數(shù)據(jù)庫發(fā)起查詢請求剃浇。

04 服務(wù)器返回一個響應(yīng)

過程:

   服務(wù)器返回一個 HTTP 響應(yīng)巾兆,如果返回狀態(tài)碼304,瀏覽器可以直接使用之前緩存的資源虎囚。對于內(nèi)容響應(yīng)角塑,瀏覽器需要進(jìn)行響應(yīng)解碼,渲染顯示淘讥。

05 瀏覽器對該響應(yīng)進(jìn)行解碼圃伶,渲染顯示。

過程:

   在瀏覽器沒有完整接受全部HTML文檔時蒲列,它就已經(jīng)開始顯示這個頁面了窒朋,如果是個靜態(tài)的頁面,拿到此就基本結(jié)束了蝗岖。如果是是動態(tài)的炼邀,那么在瀏覽器顯示HTML時,會獲取嵌入在HTML中的對象剪侮,瀏覽器會發(fā)送獲取請求來重新獲得這些文件拭宁。這些請求都要經(jīng)歷一個和HTML讀取類似的過程洛退。 

   對于靜態(tài)的頁面內(nèi)容,瀏覽器通常會進(jìn)行緩存杰标,而對于動態(tài)的內(nèi)容兵怯,瀏覽器通常不會進(jìn)行緩存。

06 頁面顯示完成后腔剂,瀏覽器發(fā)送異步請求媒区。

過程:

   頁面顯示完成后客戶端仍與服務(wù)器端保持著聯(lián)系。 

它會持續(xù)與服務(wù)器保持聯(lián)系來及時更新一些頁面信息掸犬。在瀏覽器中執(zhí)行的 JavaScript代碼會給服務(wù)器發(fā)送異步請求袜漩。這個異步請求發(fā)送給特定的地址,它是一個按照程式構(gòu)造的獲取或發(fā)送請求湾碎。

相關(guān)擴(kuò)展:

ARP原理

01 每個主機(jī)都會在自己的ARP緩沖區(qū)中建立一個ARP列表宙攻,以表示IP地址和MAC地址之間的對應(yīng)關(guān)系。

02 當(dāng)源主機(jī)要發(fā)送數(shù)據(jù)時介褥,首先檢查ARP列表中是否有對應(yīng)IP地址的目的主機(jī)的MAC地址座掘,如果有,則直接發(fā)送數(shù)據(jù)柔滔,如果沒有溢陪,就向本網(wǎng)段的所有主機(jī)發(fā)送ARP數(shù)據(jù)包,該數(shù)據(jù)包包括的內(nèi)容有:源主機(jī) IP地址睛廊,源主機(jī)MAC地址形真,目的主機(jī)的IP 地址。

03 當(dāng)本網(wǎng)絡(luò)的所有主機(jī)收到該ARP數(shù)據(jù)包時超全,首先檢查數(shù)據(jù)包中的IP地址是否是自己的IP地址没酣,如果不是,則忽略該數(shù)據(jù)包卵迂,如果是裕便,則首先從數(shù)據(jù)包中取出源主機(jī)的IP和MAC地址寫入到ARP列表中,如果已經(jīng)存在见咒,則覆蓋偿衰,然后將自己的MAC地址寫入ARP響應(yīng)包中,告訴源主機(jī)自己是它想要找的MAC地址改览。

04 源主機(jī)收到ARP響應(yīng)包后下翎。將目的主機(jī)的IP和MAC地址寫入ARP列表,并利用此信息發(fā)送數(shù)據(jù)宝当。如果源主機(jī)一直沒有收到ARP響應(yīng)數(shù)據(jù)包视事,表示ARP查詢失敗。

RARP原理

   RARP是逆地址解析協(xié)議庆揩,作用是完成硬件地址到IP地址的映射俐东,主要用于無盤工作站跌穗,因?yàn)榻o無盤工作站配置的IP地址不能保存。 

   工作流程:在網(wǎng)絡(luò)中配置一臺RARP服務(wù)器虏辫,里面保存著IP地址和MAC地址的映射關(guān)系蚌吸,當(dāng)無盤工作站啟動后,就封裝一個RARP數(shù)據(jù)包砌庄,里面有其MAC地址羹唠,然后廣播到網(wǎng)絡(luò)上去,當(dāng)服務(wù)器收到請求包后娄昆,就查找對應(yīng)的MAC地址的IP地址裝入響應(yīng)報文中發(fā)回給請求者佩微。因?yàn)樾枰獜V播請求報文,因此RARP只能用于具有廣播能力的網(wǎng)絡(luò)萌焰。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哺眯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子杆怕,更是在濱河造成了極大的恐慌,老刑警劉巖壳贪,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陵珍,死亡現(xiàn)場離奇詭異,居然都是意外死亡违施,警方通過查閱死者的電腦和手機(jī)互纯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磕蒲,“玉大人留潦,你說我怎么就攤上這事±蓖” “怎么了兔院?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長站削。 經(jīng)常有香客問我坊萝,道長,這世上最難降的妖魔是什么许起? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任十偶,我火速辦了婚禮,結(jié)果婚禮上园细,老公的妹妹穿的比我還像新娘惦积。我一直安慰自己,他們只是感情好猛频,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布狮崩。 她就那樣靜靜地躺著蛛勉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪厉亏。 梳的紋絲不亂的頭發(fā)上董习,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機(jī)與錄音爱只,去河邊找鬼皿淋。 笑死,一個胖子當(dāng)著我的面吹牛恬试,可吹牛的內(nèi)容都是我干的窝趣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼训柴,長吁一口氣:“原來是場噩夢啊……” “哼哑舒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幻馁,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤洗鸵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仗嗦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膘滨,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年稀拐,在試婚紗的時候發(fā)現(xiàn)自己被綠了火邓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡德撬,死狀恐怖铲咨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜓洪,我是刑警寧澤纤勒,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站隆檀,受9級特大地震影響踊东,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刚操,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一闸翅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧菊霜,春花似錦坚冀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽司训。三九已至,卻和暖如春液南,著一層夾襖步出監(jiān)牢的瞬間壳猜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工滑凉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留统扳,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓畅姊,卻偏偏與公主長得像咒钟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子若未,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容