瀏覽器輸入URL到返回頁面的全過程


【問題描述】

在瀏覽器輸入www.baidu.com,然后,瀏覽器顯示相應的百度頁面,這個過程究竟發生了什么呢?

   

【第一步,解析域名,找到主機】

正常情況下,瀏覽器會緩存DNS一段時間,一般2分鍾到30分鍾不等。如果有緩存,直接返回IP。

   

緩存中如果沒有查到IP,瀏覽器會做系統調用,讀取主機的hosts文件,如果找到,直接返回IP。

   

hosts文件里面還是沒有找到,則直接去路由器中尋找DNS緩存,一般這個時候都能找到對應的IP。

   

如果還是沒有找到,ISP的DNS服務器就開始從根域名服務器開始遞歸搜索,從.com頂級域名服務器開始,一直到baidu的域名服務器。

   

這個時候,瀏覽器就獲取到了對應的IP。在解析的過程中,常常會解析出不通的IP,這是根據不同的用戶,不同的網絡供應商,所在的地域,等等等等進行計算給出的最優的IP地址。

   

劫持DNS,可以屏蔽掉很多網點的訪問。

   

【第二步,瀏覽器與網站建立TCP連接】

瀏覽器利用IP直接與網站主機通信。

   

瀏覽器發出TCP(SYN=1,ACK=0)連接請求,主機返回TCP(SYN=1,ACK=1)應答報文,瀏覽器收到應答報文發現ACK標志位為1,表示連接請求確認。

   

瀏覽器返回TCP(ACK=1)確認報文,主機收到確認報文,三次握手,TCP鏈接建立完成。

   

【第三步,瀏覽器發起get請求】

瀏覽器向主機發起一個HTTP-GET方法報文請求。

   

請求中包含訪問的URL,也就是http://www.baidu.com ,還有User-Agent用戶瀏覽器操作系統信息,編碼等。

   

值得一提的是Accep-Encoding和Cookies項。

Accept-Encoding一般采用gzip,壓縮之后傳輸html文件。

Cookies如果是首次訪問,會提示服務器建立用戶緩存信息,如果不是,可以利用Cookies對應鍵值,找到相應緩存,緩存里面存放着用戶名,密碼和一些用戶設置項。

   

【最后一步,顯示頁面】

返回狀態碼,表示服務器已經成功響應后正常返回。

   

在報文頭里面Content-type為"test/html",瀏覽器以HTML形式呈現。

   

不過,對於大型網站,一般都存在兩個乃至上百個主機站點,往往都不會直接返回請求頁面,而是重定向。

這時候,返回的狀態碼就不再是200,而是"301,302"等以3開頭的重定向碼。

瀏覽器在獲取了重定向響應后,在響應報文中Location項找到重定向地址,瀏覽器重新第一步訪問即可。

   

最后再補充一點。

重定向是為了負載均衡或者導入流量提高SEO排名

   

利用一個前端服務器接受請求,然后負載到不同的主機上,可以大大提高站點的業務並發處理能力;

重定向也可將多個域名的訪問,集中到一個站點,

由於baidu.com,www.baidu.com會被搜索引擎認為是兩個網站,造成每個的鏈接數都會減少從而降低排名,永久重定向會將兩個地址關聯起來,搜索引擎會認為是同一個網站,從而提高排名。

   

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM