在瀏覽器輸入url到頁面展示的過程

前言

上次說到 HTTP基礎 概念相關的問題,這次非常簡單的講解一道超高頻率的面試題。

在瀏覽器輸入 url 到頁面展示的過程 ,我主要從網(wǎng)絡相關的層面去講一下。

當你輸入了 https://www.baidu.com 到頁面顯示出來一共發(fā)生了什么?

解析url

首先這個過程肯定是需要涉及到 「 客戶端跟服務端的數(shù)據(jù)傳輸 」 的,數(shù)據(jù)傳輸?shù)那疤峋褪?「 雙方建立連接 」 ,那么這個建立連接的過程是如何建立的呢?

當你敲上網(wǎng)址然后敲了回車之后,瀏覽器就會開始解析這個域名了,其實解析域名最主要的就是 「 把url網(wǎng)址解析成對應的服務器的IP地址 」 ,而解析成地址的方式有很多種,這里從最外層的瀏覽器一直到路由器再到dns服務器都有。具體流程的話有:

  1. 檢查瀏覽器緩存中是否緩存過該域名對應的IP地址
  2. 查看host文件有沒有跟域名對應的規(guī)則(本地主機host文件中一般會存儲經(jīng)常訪問的url到host文件中)。
  3. 查看路由器里面有沒有緩存。
  4. 最后才發(fā)出DNS請求到本地DNS(域名分布系統(tǒng))服務器 。本地DNS服務器一般都是你的網(wǎng)絡接入服務器商提供,比如中國電信,中國移動。

建立tcp連接

為什么要建立tcp連接呢?主要就是為了保證兩端能夠進行 「 可靠的傳輸 」 ,可靠的傳輸?shù)幕荆褪莾啥藢?shù)據(jù)的發(fā)送和接收的功能。

ssl / tls 證書

ssl / tls 是什么?大白話來說一下,在我們中國,身份證就是我們個人的專屬身份的標志,同理,在網(wǎng)絡中,為了確定連接那頭的人是不是你要找的人,就會有一個大型的網(wǎng)上認證系統(tǒng),ssl / tls 其實就是每個人自己服務器的 身份證, 確認了建立連接對面的人是你要的那個人,就是通過 ssl / tls 這個證書來確認的。

所以由于http的 「 明文傳輸 」 ,導致了一次普通的沒有 身份證 的http的調(diào)用其實是不不夠安全的,有可能會被惡意修改數(shù)據(jù)或者是截取信息,這個時候https來了,它主要就是通過 ssl / tls 提供驗證服務端的身份,加密處理數(shù)據(jù)等等,只要服務端提前在ca機構注冊好自己的 身份證, 就可以做到保證兩端身份的確定性,就進行可靠安全的傳輸了。這里的話不細講具體是如何加密的,簡單說一下流程。

  1. 客戶端向服務端請求連接,請求頭里面包含了客戶端支持的加密解密類型等等。
  2. 服務端根據(jù)客戶端可接受的加密類型中,選擇最合適自己的那一個,加密自己的私鑰,并且存在證書里面,連同 「 證書 」 一起發(fā)給客戶端。
  3. 客戶端收到證書之后,首先向權威 「 ca機構 」 驗證證書的有效性,確認了服務端的身份后,將自己用來對稱加密的公鑰用證書返回的公鑰加密,發(fā)送給服務端。

總的來說,就是確定了雙方同時持有對稱加密使用的公鑰,就可以安全的進行傳輸了。

這里補充一下,假如服務端申請了客戶端未信任的證書機構的話(也有可能自己制作ssl證書),客戶端需要信任(或者直接拒絕訪問了),而且自制的ssl證書容易被偽造的,不咋安全(畢竟沒收到國際認證和電子簽發(fā)許可),所以這也是一種可能被釣魚的情況之一。

三次握手

三次握手的主要目的,就是確定 「 雙方同時具備正常的收和發(fā)功能 」 的功能,需要站在客戶端和服務端的角度來看這個為什么需要三次握手的問題,接下來說一下流程:

  1. 客戶端發(fā)送連接請求 「 你好服務器兄弟聽得到嗎 」 給服務端,服務端收到。

「 服務端的角度 」

服務端的角度:我服務端收到了客戶端的消息,所以服務端是知道客戶端的發(fā)是正常的,服務端自己的收也是正常的。

客戶端 服務端
X 正常
發(fā) 正常 X

「 客戶端的角度 」

客戶端的角度:不清楚自己發(fā)出去的服務端收到?jīng)],也不清楚自己能不能收到服務端的消息。

客戶端 服務端
X X
發(fā) X X

  1. 服務端發(fā)送 「 聽得到啊,客戶端兄弟聽得到嗎 」 給客戶端,客戶端收到了。

「 服務端的角度 」

服務端的角度:是只能確認自己的收是正常的,但是不確定客戶端有沒有收到自己發(fā)出去的東西。

客戶端 服務端
X 正常
發(fā) 正常 X

「 客戶端的角度 」

客戶端的角度:客戶端是已經(jīng)可以確認,客戶端的收發(fā)的功能都是正常的,服務端的收發(fā)功能也是正常的。(此時客戶端的角度已經(jīng)確認好了)。

客戶端 服務端
正常 正常
發(fā) 正常 正常

  1. 客戶端發(fā)送 「 我也聽得到 」 給服務端。

這個時候服務端才知道,客戶端收到了,所以就確認了自己可以發(fā)數(shù)據(jù)給客戶端。(此時服務端的角度也確認好了)。
總的來說,照著 「 確定雙方同時具備收和發(fā)的功能 」 這個思路說下去,三次握手就很好理解了。

「 服務端的角度 」

客戶端 服務端
正常 正常
發(fā) 正常 正常

「 客戶端的角度 」

客戶端 服務端
正常 正常
發(fā) 正常 正常

數(shù)據(jù)傳輸。

連接建立后自然就是發(fā)送數(shù)據(jù)了,這時候客戶端也就可以發(fā)送請求給服務端了,服務端收到對應的請求,(可能有代理)找到自己的對應的服務對應的端口去做相應的處理,并反回數(shù)據(jù)給客戶端(tcp的擁塞機制)。

三次握手

四次揮手

四次揮手 「 連接終止協(xié)議 」 ,這個很好理解,主要就是確認雙方都沒有數(shù)據(jù)發(fā)送了。

為什么要四次揮手? 主要就是因為上面說到的三次握手,建立的連接是去確定雙方同時具備收和發(fā)的功能來建立的一個通道,那么關閉這個通道肯定也是要雙方去確認的,所以我們可以按照這個思路往下去整理。

  1. 當客戶端發(fā)起所有需要的請求后,決定關閉連接了,他向服務器發(fā)送了一個 「 我已經(jīng)沒啥要的了 」
  2. 服務器收到后,要給客戶端返回一個 「 收到 」

其實這樣的話是存在服務器數(shù)據(jù)還沒發(fā)完數(shù)據(jù)的情況的,所以上面的兩次揮手的主要作用只是斷開了客戶端的發(fā),但服務器還是可以繼續(xù)傳輸沒傳輸完的數(shù)據(jù)。

  1. 當服務器發(fā)送完所有之后,決定關閉連接了,他向客戶端發(fā)送了一個 「 我也把東西都發(fā)完給你了 」
  2. 完了客戶端也要回復一個 「 收到 」

到此四次揮手就結束了,這里補充一張四次揮手的圖給大家參悟一下。

四次揮手

最后

關于https相關流程可以看看 HTTPS原理及流程

PS

都結合網(wǎng)上資料加上自己的一些理解,如果有影響到人的地方,可以聯(lián)系我:fzfz2007@163.com

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

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