瀏覽器HTTP請求分析

概述

  普通網民打開網頁,訪問網站,並不需要了解所謂HTTP協議。作爲軟件工程師,瞭解一下瀏覽器的工作過程還是一件比較有意思的事情。我向大家介紹一下當我們在瀏覽器的地址欄裏面回車的時候,瀏覽器如何和Web服務器通信。

  DNS域名解析

  瀏覽器第一步做的是DNS域名解析。域名解析的主要作用是將域名轉換成IP地址。例如www.sina.com.cn就是域名,202.108.33.81就是IP地址。Windows有個命令叫nslookup,就是域名解析命令。

  


  通過nslookup,我們發現新浪域名解析出好多IP地址,新浪Web網站規模大,所以Web服務器比較多,通過多臺Web服務器解決負載問題。

  建立Socket連接

  第二步是和Web服務器建立Socket連接。Web服務器缺省是80端口。我們在地址欄裏面輸入http://www.sina.com.cn,瀏覽器連接202.108.33.81服務器的80端口。如果Web服務器不是80端口,例如8080端口,我們需要輸入http://www.sina.com.cn:8080。

  HTTP請求和響應

  第三步是瀏覽器通過Socket向Web服務器發送HTTP請求,接收HTTP響應。HTTP協議比較複雜,下面是一個HTT請求的例子:

  Host:rss.sina.com.cn

  User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14

  Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

  Accept-Language:zh-cn,zh;q=0.5

  Accept-Encoding:gzip,deflate

  Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7

  Keep-Alive:300

  Connection:keep-alive

  Cookie:userId=C5bYpXrimdmsiQmsBPnE1Vn8ZQmdWSm3WRlEB3vRwTnRtW <-- Cookie

  If-Modified-Since:Sun, 01 Jun 2008 12:05:30 GMT

  Cache-Control:max-age=0

  HTTP 響應消息頭部實例:

  Status:OK - 200

  Date:Sun, 01 Jun 2008 12:35:47 GMT

  Server:Apache/2.0.61 (Unix)

  Last-Modified:Sun, 01 Jun 2008 12:35:30 GMT

  Accept-Ranges:bytes

  Content-Length:18616

  Cache-Control:max-age=120

  Expires:Sun, 01 Jun 2008 12:37:47 GMT

  Content-Type:application/xml

  Age:2

  Connection:close

  下載網頁文本內容

  第四步瀏覽器下載網頁文本內容,網頁文本中標記着圖片、CSS文件和Flash等等。瀏覽器分析出這些內容後開4個線程對這些內容進行下載,顯示在屏幕上。

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