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

在瀏覽器輸入:http://www.baidu.com/,最後,瀏覽器呈現出相應網頁,這個過程究竟發生了什麼?

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

(1)瀏覽器會緩存DNS一段時間,一般2-30分鐘不等。如果有緩存,直接返回IP,否則下一步。

(2)緩存中無法找到IP,瀏覽器會進行一個系統調用,查詢hosts文件。如果找到,直接返回IP,否則下一步。(在計算機本地目錄etc下有一個hosts文件,hosts文件中保存有域名與IP的對應解析,通常也可以修改hosts科學上網或破解軟件。)

(3)進行了(1)(2)本地查詢無果,只能藉助於網絡。路由器一般都會有自己的DNS緩存,ISP服務商DNS緩存,這時一般都能夠得到相應的IP。如果還是無果,只能藉助於DNS遞歸解析了。

(4)這時,ISP的DNS服務器就會開始從根域名服務器開始遞歸搜索,從.com頂級域名服務器,到baidu的域名服務器。

到這裏,瀏覽器就獲得了IP。在DNS解析過程中,常常會解析出不同的IP。比如,電信的是一個IP,網通的是另一個IP。這是採取了智能DNS的結果,降低運營商間訪問延時,在多個運營商設置主機房,就近訪問主機。電信用戶返回電信主機IP,網通用戶返回網通主機IP。當然,劫持DNS,也可以屏蔽掉一部分網點的訪問,某防火長城也加入了這一特性。

第二部,瀏覽器與網站建立TCP連接

瀏覽器利用IP直接與網站主機通信。瀏覽器發出TCP(SYN標誌位爲1)連接請求,主機返回TCP(SYN,ACK標誌位均爲1)應答報文,瀏覽器收到應答報文發現ACK標誌位爲1,表示連接請求確認。瀏覽器返回TCP()確認報文,主機收到確認報文,三次握手,TCP鏈接建立完成。

第三部分,瀏覽器發起GET請求

瀏覽器向主機發起一個HTTP-GET方法報文請求。請求中包含訪問的URL,也就是http://www.baidu.com/ ,還有User-Agent用戶瀏覽器操作系統信息,編碼等。值得一提的是Accep-Encoding和Cookies項。Accept-Encoding一般採用gzip,壓縮之後傳輸html文件。Cookies如果是首次訪問,會提示服務器建立用戶緩存信息,如果不是,可以利用Cookies對應鍵值,找到相應緩存,緩存裏面存放着用戶名,密碼和一些用戶設置項。

第四部分,顯示頁面或返回其他

返回狀態碼200 OK,表示服務器可以相應請求,返回報文,由於在報頭中Content-type爲“text/html”,瀏覽器以HTML形式呈現,而不是下載文件。

但是,對於大型網站存在多個主機站點,往往不會直接返回請求頁面,而是重定向。返回的狀態碼就不是200 OK,而是301,302以3開頭的重定向碼,瀏覽器在獲取了重定向響應後,在響應報文中Location項找到重定向地址,瀏覽器重新第一步訪問即可。

補充一點的就是,重定向是爲了負載均衡或者導入流量,提高SEO排名。利用一個前端服務器接受請求,然後負載到不同的主機上,可以大大提高站點的業務併發處理能力;重定向也可將多個域名的訪問,集中到一個站點;由於baidu.com,www.baidu.com會被搜索引擎認爲是兩個網站,照成每個的鏈接數都會減少從而降低排名,永久重定向會將兩個地址關聯起來,搜索引擎會認爲是同一個網站,從而提高排名。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章