您的位置:首页 > 理论基础 > 计算机网络

Http的报文结构

2013-04-16 14:22 183 查看
Http有两类报文:

(1):请求报文-----从客户端向服务器发送的请求报文。

(2):响应报文-----从服务器到客户的回答(即响应报文)。

报文结构如下图:



左边是请求报文。右边是响应报文

HTTP请求报文和响应报文都是由三个部分组成。可以看出这二种报文的不同在于开始行的不同。

开始行:用于区分是请求报文还是响应报文。在请求报文中开始行叫做请求行(Request_Line),而在响应报文中的开始行叫做状态行(Status-Line)。在开始行的三个字段之间都以空行分隔开,最有的“CR”和“LF”分别代表回车和换行。

首部行:用来说明浏览器,服务器或报文主体的一些信息。首部可以有好几行,也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。

实体主体(entity body),在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。

请求报文的第一行“请求行”的一些特点

请求行只有三个内容,即方法,请求资源的URL,以及HTTP的版本。

ps:这里的名词“方法”(method)是面向对象技术中使用的专有名词。所谓方法就是对所请求的对象进行的操作,这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。



eg:我们可以使用telnet来发送请求报文。

telnet  localhost 8080

连接上后:

输入:

GET /test4/http.jsp?name=zhanglei&password=baother HTTP/1.1

Host: localhost

Connection: keep-alive

(可以使用firefox中的利器firebug查看)

第一行:请求行使用了相对的URL(删略了主机的域名),是因为下面的首部中给出主机的域名。

第三行:告诉服务器使用持续连接,表示浏览器希望服务器在传送文所有的请求对象后等片刻再关闭TCP连接。

这个请求报文没有实体主体。

响应报文的主要特点:每一个请求报文发出后,都可以收到一个响应报文。响应报文的第一行就是状态行。

状态行包含三项内容,即:http的版本,状态码,以及解释状态码的简单短语。

状态码(Status-Code)都是三位数的,分为5大类。

1xx:表示通知消息的,如请求收到了或者正在进行处理。

2xx表示成功,如接受或知道了。

3xx表示重定向,如要完成请求还必须采取进一步的行动。

4xx表示客户的差错,如请求中有错误的语言或不能完成。

5xx表示服务器的差错,如服务器无法完成请求。

eg:

HTTP /1.1 202 Accepted 接受

HTTP /1.1 400 Bad Request 错误的请求

HTTP/1.1 404 Not Found 请求的资源找不到

HTTP/1.1 302 Found 重定向

ps:

重定向:

HTTP/1.1 302 Found

Server: Apache-Coyote/1.1

Set-Cookie: JSESSIONID=42FFBC442E7CF68066

Location: http://localhost/test4/session.
Content-Type: text/html;charset=UTF-8

Content-Length: 0

Date: Tue, 16 Apr 2013 06:26:07 GMT
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: