代码改变世界

HTTP请求过程简介[转]

2009-03-14 15:27  K-imba  阅读(939)  评论(0编辑  收藏  举报

浏览器一般是图形界面的,因此我们并不了解在这华丽表面后面所发生的一切。当你点击一个连接时,浏览器首先找到站点的IP地址,这是通过DNS来实现的。在找到IP地址后可以建立TCP连接了,连接建立后我们就可以发送请求了,但这个请求是什么样子呢?我们现在假设点击了一个从WWW.WEBMONKEY.COM/HTML/96/47/INDEX2A.HTML点击了WWW.GRIPY.ORG/MATTMARG/,这时浏览器会发出下面的请求:


            Get /mattmarg/ HTTP/1.0
            User-Agent: Mozilla/2.0 (Macintosh; I; PPC)
            Accept: text/html; */*
            Cookie: name = value
            Referer: http://www.webmonkey.com/html/96/47/index2a.html
            Host: www.grippy.org
            

第一行称为请求,它告诉服务器从MATTMARG取得文件,这里的目录一般是要加/的。下面几行通知服务器你所使用的浏览器是什么类型,你所接收的数据是什么类型。如果你以前访问过这个站点,站点可能向你发送了cookie,如果你已经有了一个这样的cookie,浏览器会将这个cookie返回给服务器。referer行通知服务器用户从哪一页到达此页的。

下面服务器就要返回文件了,每次服务器返回文件时,都要返回一个http/1.0响应,同时带有状态码,在此之后是一些描述内部的头信息。下面就是一个响应:

HTTP/1.0 200 Found
            Date: Mon, 10 Feb 1997 23:48:22 GMT
            Server: Apache/1.1.1 HotWired/1.0
            Content-type: text/html
            Last-Modified: Tues, 11 Feb 1997 22:45:55 GMT
            

不同数据可能返回不同的content-type,因此不同的内容需要不同的content-type,因此有时候这个过程是很慢的。