DNS 解析過程

HTTP請求過程

  1. DNS 域名解析 -->

  2. 發起 TCP 的 3 次握手 -->

    • 1) Client首先發送一個連接試探,ACK=0 表示確認號無效,SYN = 1 表示這是一個連接請求或連接接受報文,同時表示這個數據報不能攜帶數據,seq = x 表示Client自己的初始序號(seq = 0 就代表這是第0號包),這時候Client進入syn_sent狀態,表示客戶端等待服務器的回復

    • 2) Server監聽到連接請求報文后,如同意建立連接,則向Client發送確認。TCP報文首部中的SYN 和 ACK都置1 ,ack = x + 1表示期望收到對方下一個報文段的第一個數據字節序號是x+1,同時表明x為止的所有數據都已正確收到(ack=1其實是ack=0+1,也就是期望客戶端的第1個包),seq = y 表示Server 自己的初始序號(seq=0就代表這是服務器這邊發出的第0號包)。這時服務器進入syn_rcvd,表示服務器已經收到Client的連接請求,等待client的確認。

    • 3) Client收到確認后還需再次發送確認,同時攜帶要發送給Server的數據。ACK 置1 表示確認號ack= y + 1 有效(代表期望收到服務器的第1個包),Client自己的序號seq= x + 1(表示這就是我的第1個包,相對于第0個包來說的),一旦收到Client的確認之后,這個TCP連接就進入Established狀態,就可以發起http請求了。

    • TCP 為什么需要3次握手?
      舉個例子:
      假設一個老外在故宮里面迷路了,看到了小明,于是就有下面的對話:
      老外: Excuse me,Can you Speak English?
      小明: yes 。
      老外: OK,I want ...
      在問路之前,老外先問小明是否會說英語,小明回答是的,這時老外才開始問路

      2個計算機通信是靠協議(目前流行的TCP/IP協議)來實現,如果2個計算機使用的協議不一樣,那是不能進行通信的,所以這個3次握手就相當于試探一下對方是否遵循TCP/IP協議,協商完成后就可以進行通信了,當然這樣理解不是那么準確。

      為什么HTTP協議要基于TCP來實現?
      目前在Internet中所有的傳輸都是通過TCP/IP進行的,HTTP協議作為TCP/IP模型中應用層的協議也不例外,TCP是一個端到端的可靠的面向連接的協議,所以HTTP基于傳輸層TCP協議不用擔心數據的傳輸的各種問題。

  3. 建立 TCP 連接后發起 http 請求 -->

  4. 服務器響應 http 請求, 瀏覽器得到html代碼

  5. 瀏覽器解析html代碼,并請求html代碼中的資源

    ????????瀏覽器拿到index.html文件后,就開始解析其中的html代碼,遇到js/css/image等靜態資源時,就向服務器端去請求下載(會使用多線程下載,每個瀏覽器的線程數不一樣),這個時候就用上keep-alive特性了,建立一次HTTP連接,可以請求多個資源,下載資源的順序就是按照代碼里的順序,但是由于每個資源大小不一樣,而瀏覽器又多線程請求請求資源
    ????????瀏覽器在請求靜態資源時(在未過期的情況下),向服務器端發起一個http請求(詢問自從上一次修改時間到 現在有沒有對資源進行修改),如果服務器端返回304狀態碼(告訴瀏覽器服務器端沒有修改),那么瀏覽器會直接讀取本地的該資源的緩存文件。

  6. 瀏覽器對頁面進行渲染呈現給用戶

    • 渲染引擎 (Webkit Blink Gecko Trident Presto)
    • JavaScript引擎(V8)

DNS解析

  1. Step1: 首先拿到 URL 后,瀏覽器會尋找本地的 DNS 緩存,看看是否有對應的 IP 地址

    • 如果緩存中存在那就好了, 直接向該IP地址發送
    • 如果沒有,那就得向 DNS Server 發送一個請求,找到你想要的 IP 地址。
  2. Step2: 首先他會向你的 ISP(互聯網服務提供商) 相關的 DNS servers 發送 DNS query。然后這些 DNS 進行遞歸查詢(recursive)。所謂的遞歸查詢,就是能夠直接返回對應的IP地址,而不是其他的 DNS server 地址。

  3. Step3: 如果上述的 DNS Servers 沒有你要的域名地址,則就會發送迭代查詢,即會先從 root nameservers 找起。 即是假如你要查詢 www.example.com ,會先從包含根結點的 13 臺最高級域名服務器開始。

  4. Step4: 接著,以從右向左的方式遞進,找到 com. 然后向包含 com 的 TLD(頂級域名) nameservers 發送 DNS 請求。接著找到包含 example 的 DNS server。

  5. Step5: 現在進入到了example.com 部分,即是現在正在詢問的是權威服務器,該服務器里面包含了你想要的域名信息,也就是拿到了最后的結果 record 。

  6. Step6: 遞歸查詢的 DNS Server 接受到這 record 之后, 會將該record 保存一份到本地。 如果下一次你再請求這個 domain 時,我就可以直接返回給你了。由于每條記錄都會存在 TLL ,所以 server 每隔一段時間都會發送一次請求,獲取新的 record,

  7. Step7: 最后,再經由最近的 DNS Server 將該條 record 返回。 同樣,你的設備也會存一份該 record 的副本。 之后,就是 TCP 的事了,下面是一張萌萌的簡化圖:

image.png
迭代查詢的流程
流程: . => com. => .exampl.com. => www.example.com. => IP adress    

DNS PC和Mobile 域名發散和收斂

  1. 在 PC 上,我們采用域名發散策略,是因為在 PC 端上,DNS 解析通常而言只需要幾十 ms ,可以接受。

  2. 而移動端,2G 網絡,3G網絡,4G網絡/wifi 強網,而且移動 4G 容易在信號不理想的地段降級成 2G ,通過大量的數據采集和真實網絡抓包分析(存在DNS解析的請求),DNS的消耗相當可觀,2G網絡大量5-10s,3G網絡平均也要3-5s(數據來源于淘寶)。 下面附上在 2G,3G,4G, WIFI 情況下 DNS 遞歸解析的時間 (ms):


    QQ截圖20160408104038
  3. 因為在增加域的同時,往往會給瀏覽器帶來 DNS 解析的開銷。所以在這種情況下,提出了域名收斂,減少域名數量可以降低 DNS 解析的成本。

  4. 在 2 個域名分散條件下,網頁的加載速度提升較大,而第 3 個以后就比較慢了。 所以,一般來說,域名分散的數量最好在 3 以下。

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

推薦閱讀更多精彩內容