初识HTTP协议--请求与响应报文

本文详细介绍了HTTP协议的历史演变,从HTTP/0.9到HTTP/1.1,以及其在TCP/IP协议中的角色。重点解析了HTTP协议的消息类型,包括请求与响应消息的构成。通过具体实例分析了请求与响应消息的每一行所代表的意义,如请求方法、接受格式、主机名、连接状态等关键信息。同时,提供了响应状态码的常见解释,帮助读者理解HTTP协议在实际应用中的作用。
摘要由CSDN通过智能技术生成

2012-05-16 14:39

            HTTP相信大家都知道这个词,我们也都知道它是要干嘛的,以前的我也一直只是知道它就是基于TCP/IP协议为浏览器和服务器提供的一个通信协议标准,可以是GET、POST方式,可以通过telnet的方法 来发送一个HTTP请求并得到返回的内容,默认端口是80啊等等。最近也不知道出于什么原因,突然就想了解它的内部协议构造了,网上找了点资料,并动手去查看研究研究它。

      概念啥的就不去理会了;既然HTTP是基于TCP/IP的那么我们先看看TCP/IP协议又是怎么回事?

      在OSI的七层模型中,TCP是在传输层中,而IP则在网络层。而在OSI的各层中层与层之间是相互独立又相互依靠的,上层依赖于下层,下层又为上层提供服务,所以你应该知道了TCP/IP的关系和作用了。(下面2张图都是网上找的)



一、HTTP协议的历史(网上找的历史,具体历史我也不知道,HTTP产生的时候我还没出生呢!)

u   HTTP/0.9: 从1990年就已经用来作为WWW的传输协      议,当时非常简单,只支持GET方法,响应中携带      的消息必须HTML文件。

u   HTTP/1.0: 1996发布RFC1945,90年后,基于0.9的    各种客户端和服务端的扩展层出不穷,把这些扩

      展进行综合推出新标准HTTP/1.0 。

u   HTTP/1.1: 1997推出RFC2068,HTTP/1.1的标准。

u   HTTP/1.1: 1999推出RFC2616,废弃了RFC2068标准。

二、HTTP协议的基础内容

http协议的消息类型分为2中类型:一种是请求(Request)消息:由客户端发给服务器的消息。

                                                  另一种是响应(Response)消息:是服务端回复客户端请求的消息。 

     看下面2张图片看看个返回的都是什么数据:

这是请求消息:


这个是响应消息:


      我们看看具体每行都是干啥用的?

     我们先看看请求消息的组成:

  这就是一个请求报文,响应报文是对应的 

对照上面的你就可以清楚看出来了


  相对的你可以对应这张图片看下:

1、请求报文详解:

接下来就分析下:上面我们刚才得到那份请求消息:

GET /ex/CookieAutoLogin.aspx HTTP/1.1  :

               表示向服务器用GET方式请求/ex/CookieAutoLogin.aspx文件,使用HTTP/1.1协议。

Accept: text/html, application/xhtml+xml, */*

              表示我当前浏览器可以接收的MIME文件格式。可以根据它判断并返回适当的文件格式。

Accept-Language: zh-CN

              表示当前浏览器支持的语言,中文;很多国际网站默认进入的语言都是通过这个实现的。

User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

              表示客户端浏览器名称、类型、版本等。

Accept-Encoding: gzip, deflate

                表示我当前浏览器支持gzip、deflate两种压缩算法。

Host: localhost:12478

                表示对应请求网址URL中的Web名称和端口号。

Connection Keep-Alive:

                     Keep-Alive是永久连接(其实应该是长连接,这时候服务器发送了响应报文之后不直接关闭套接字,而是保持连接一段时间看看还有没有其他请求,如果有请求,这样不仅节省了创建新套接字的时间,还可以节约网络流量和)而如果是close则是在告知服务器本浏览器不想使用永久连接方式(HTTP/1.0使用非永久连接,HTTP/1.1默认使用永久连接)。

Cookie: username=1; pwd=123

               这是浏览器向服务器发送和当前网站关联的Cookie,这样在服务器端也能读取浏览器端的Cookie了。

请求方法的解释:

GET:获取一个URL指定的资源,即资源实体

HEAD:获取一个指定资源的信息,

POST:向服务器提交数据

PUT:向服务器提交资源

DELETE请求源服务器删除Request-URI标识的资源

TRACE网络跟踪

CONNECT与PROXY之间的连接管理

OPTIONS查询能力

还有其他的一些信息可以查看博客园的

http://www.cnblogs.com/ryhan/archive/2011/08/09/2132509.html

1、响应报文详解:

再来分析响应报文信息:

HTTP/1.1 302 Found

           响应行:使用HTTP1.1协议,返回的状态码。具体常见状态吗见后面。(302是只重定向)

Server: ASP.NET Development Server/10.0.0.0

           表示服务器的类型,这是使用VS开发自启动的小服务器,10版本。

Date: Wed, 16 May 2012 05:46:46 GMT

             这个你一看就知道是啥了,(时间)。

X-AspNet-Version: 2.0.50727       这个是服务器使用的.NET版本信息。

Location: /ex/Default.aspx      重定向到哪个页面。

Cache-Control: private            缓存控制:私有。

Content-Type: text/html; charset=utf-8        表示返回数据的类型

Content-Length: 137                表示返回的字节长度。

          这个要知道这是后续数据消息体的长度,响应报文头不包括在内,响应报文头只是描述,返回的具体数据(比如HTML文本、图片数据等)。

Connection: Close             连接状态:关闭。

下面这些就是返回的具体消息了。(上面的长度也指代的是这个的长度。)

<html><head><title>Object moved</title></head><body>

<h2>Object moved to <a href="%2fex%2fDefault.aspx">here</a>.</h2>

</body></html>

响应行中的响应状态

1xx:指示信息--表示请求已接收,继续处理。

2xx:成功--表示请求已被成功接收、理解、接受。

3xx:重定向--要完成请求必须进行更进一步的操作。

4xx:客户端错误--请求有语法错误或请求无法实现。

5xx:服务器端错误--服务器未能实现合法的请求。

常见状态代码、状态描述的说明如下

200 OK:客户端请求成功。

400 Bad Request:客户端请求有语法错误,不能被服务器所理解。

401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。

403 Forbidden:服务器收到请求,但是拒绝提供服务。

404 Not Found:请求资源不存在,举个例子:输入了错误的URL。

500 Internal Server Error:服务器发生不可预期的错误。

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值