一次頁面請求過程

很早以前就想寫一篇關於頁面請求整個過程的文章。固然,這樣的文章網上處處都是。並且本身寫的並無比別人好,那爲何還要寫那。人都是善忘的動物,寫下來主要是做爲備忘,同時鍛鍊下本身的表達能力。畢竟能把一個問題講明白才能說明真正的懂了。php

首先,在瀏覽器輸入網址(www.melody.com/index.php)

瀏覽器查找該域名對應的 IP 地址(DNS 解析)

  • DNS 解析過程:css

    • 瀏覽器緩存 - 瀏覽器會緩存 DNS記錄一段時間,俺電腦上的谷歌瀏覽器默認是1分鐘。html

    • hosts 文件 - 不一樣系統放置的目錄不同,Mac 是在 /etc/hosts.linux

    • 路由器緩存 - 額,這個就沒什麼好說的了。瀏覽器

    • ISP 解析服務器 - 其實這個是 DNS記錄的緩存。緩存

    • 遞歸查詢 - 這個過程詳細能夠google。這個查詢是由 ISP 的解析服務器發起的,因此查到後,ISP 會將記錄緩存後發送給瀏覽器。服務器

    • 注:DNS 查找的過程就這樣完成了, 假設查詢到的 IP 地址爲 115.26.23.117。值得注意的是(4)中,通常默認是運營商解析服務器。好比筆者用的是聯通的寬帶,默認的就是聯通的解析服務器。linux/mac 能夠經過 cat /etc/resolv.conf 查看。google

瀏覽器發起到115.26.23.117端口80的鏈接

  • TCP 鏈接創建須要經歷三次握手(SYN -> SYN+ACK -> ACK)spa

瀏覽器給Web服務器發送一個HTTP請求

Paste_Image.png

詳細的報文分析能夠參考《HTTP權威指南》,這裏不作贅述。

服務器接收請求


  如圖1,其實是Nginx 接收了請求。code

服務器"處理"請求

  • 如圖1,請求經Nginx 轉發給App Server 進行處理。

  • 請求處理就是一個可以讀懂請求而且可以生成HTML來進行響應的程序(像Python、PHP、Ruby)。

 服務器返回一個HTML響應

 APP Server 生成一個HTML響應經Nginx 返回給瀏覽器。

瀏覽器開始顯示HTML

  • 在瀏覽器沒有完整接受所有HTML文檔時,就開始顯示頁面了。 

  • 瀏覽器會根據響應報頭的信息來決定如何解釋該響應。

 瀏覽器獲取嵌入在HTML中的對象(css、js、img等)

 如:<link type="text/css" rel="stylesheet" href="/bundles/blog-common.css?v=TcLu_VRYP-hjFEuOQ-7LRL7nW7QGyV_7JTjhUjBtzsY1">

總結一下:

  1. 加深下記憶
  2. 參考: http://www.cnblogs.com/wenanr...

相關文章
相關標籤/搜索