最新消息:

HTTP消息(请求与响应)分析

网络协议 大步 1025浏览 0评论

HTTP(HyperText Transfer Protocol,超文本传输协议)是万维网访问所使用的核心通信协议。HTTP使用一种基本消息的模型:客户端发送出一条请求消息,而后由服务器返回一条响应消息。该协议基本上不需要要连接,虽然HTTP使用有状态的TCP协议作为它的传输机制,但每次请求与响应交换都自动完成,并且可能使用不同的TCP连接。关键词: HTTP消息  请求 响应  分析

所有HTTP消息(请求与响应)中都包含一个或者几个单行显示的消息头(header)。然后是一个强制空白行,最后是消息主题(可选,也就是可有可无)。

http请求分析
下面分析一个HTTP请求(这个是用firefox的Live HTTP handers插件截取的http消息请求),如下:

GET /i/site_bg.gif HTTP/1.1
Host: www.w3school.com.cn
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.w3school.com.cn/c3.css
Cookie: ASPSESSIONIDAQDCQDDR=EIAICMABNGHAABBHEIICJPBJ
Connection: keep-alive

每个HTTP请求的第一行都由3个空格间隔的项目组成。

  • 一个说明HTTP方法的动词。最常见的访问为GET,它的主要作用是从Web服务器获取一个资源。GET请求并没有消息主体,因此在消息头后的空白行中没有其他数据。
  • 所请求的URL。该URL通常由所请求资源的名称,以及一个包含客户端向该资源提交的参数的可选查询字符串组成。但我这里截取是例子是直接以所请求的资源的名字site_bg.gif 来获取。
  • 使用的HTTP版本。因特网常见的HTTP版本为1.0和1.1.多数浏览器默认使用1.1版本。两个版本存在一些差异。一般渗透测试的时候,唯一的差异可能就是1.1版本必须使用Host请求头。
  • Referer消息头用于表示发出请求的原始URL。在最初的HTTP请求规范中,这个消息头存在拼写错误,并且这个错误一直保留下来了。
  • User-Agent消息头提供与浏览器或其他生成请求的客户端软件有关的信息。请注意,由于历史原因,大多数浏览器中都包含Mozilla前缀。这是因为最初占支配地位的Netscape浏览器使用了User-Agent字符串,而其他浏览器也希望web站点相信他们与这种标准兼容。即使当前版本的IE浏览器也保留了这个做法。我这里是用火狐浏览器发出请求的。
  • Host消息头用于指定出现在被访问的完整的URL中毒主机名称。如果几个Web站点以相同的一台服务器为主机,就需要使用host消息头,因为请求第一行中的URL内通常并不包含主机名称,我截取的这个实例,第一行中的URL即是/i/site_bg.gif,没有包含主机名称。
  • Cookies消息头用于提交服务器向客户端发布的其他参数。

HTTP响应分析
截取的实例如下:
HTTP/1.1 200 OK
Pragram:no-cache
Content-Length: 18197
Content-Type: image/gif
Expires: Wed, 21 May 2014 20:20:48 GMT
Accept-Ranges: bytes
Etag: "a4557ff287dacb1:5d7"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET

每个HTTP响应的第一行由3个以空格间隔的项目组成。

  • 使用的HTTP版本
  • 表示请求结果的数字状态码:200是最常用的状态码,它表示成功提交请求,正在返回所请求的资源。
  • 一段文本形式的“原因短语”,进一步说明响应状态,这个短语中可以包含任何值,当前浏览器不将其用于任何目的。
  • Server消息头中包含一个旗标,指明所使用的web服务器软件:有时还包括其他信息,如所安装的模块和服务器操作系统。其中包含的信息可能并不准确。比如我的服务器,我就讲服务器的一些版本信息隐藏了,当然也可以故意弄些假的版本信息,迷惑那些攻击者。
  • Set-Cookie消息头像浏览器发送另一个cookie,它将在随后向服务器发送的请求中由Cookie消息头返回。
  • Pragram消息头只是浏览器不要将相应保存在缓存中。Expires消息头指出响应内容已经过期,因此不应该保存在缓存中。当返回动态内容时常常会发送这些指令,以确保浏览器随时获得最新内容。
  • 几乎所有的HTTP响应在消息头后的空白行下面都包含消息主体,Content-Type消息头表示这个消息主体中包含一个img图片。
  • Conten-Length消息头规定消息主题的字节长度。

 

转载请注明:大步's Blog » HTTP消息(请求与响应)分析

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
SiteMap