普通網民打開網頁,訪問網站,並不需要了解所謂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個線程對這些內容進行下載,顯示在屏幕上。