http协议学习总结 协议格式 消息头 消息体等

超文本传送协议 (HTTP) 是一种通信协议,它允许将超文本标记语言 (HTML) 文档从 Web 服务器传送到 Web HTML 是一种用于创建文档的标记语言,这些文档包含到相关信息的链接。您可以单击一个链接来访问其它文档、图像或多媒体对象,并获得关于链接项的附加信息。

HTTP工作在TCP/IP协议体系中的TCP协议上。

客户机和服务器必须都支持 HTTP,才能在万维网上发送和接收 HTML 文档并进行交互。

HTTP是一个属于应用层的的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于19xx年提出,经过几年的使用与发展,得到不断地完善和扩展。

无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

消息的通用格式为:

generic-message=start-line *(message-header CRLF)

CRLF

[message-body]

其中start-line=Request-Line|Status-Line

请求(Request)消息:

由客户端发给服务器的消息。

其组成包括:请求行(Request-Line),可选的头域(Header Field ),及实体(Entity-Body)。

请求消息结构:

Full-Request = Request-Line

*(General-Header | Request-Header | Entity-Header) CRLF [Entity-Body]

请求消息示例:

请求行:GET(请求方法) http://www.yesky.com/pub/WWW/page.html(URL) HTTP/1.1(版本号)

报头行(可选的头域?):Connection:close(告知服务器本浏览器不想使用永久连接方式)

User-agent:Mozilla/4.0(指定用户代理服务器的类型)

Accept-Encoding:gzip,compress (发送此请求的浏览器支持哪些压缩编码方式)

Accept-language:en(客户浏览器支持的语言是英语) CR LF

(实体)Entity-Body

响应消息示例:

(状态行)HTTP/1.1(版本号) 200(状态码) OK(原因短语) Connection:close

Date: Thu, 13 Oct 20xx 03:17:33 GMT(服务器创建并发送本响应消息的日期和时间)

Server: Apache/2.0.54 (Unix)(本消息是由Apache服务器产生的,服务器版本为2.0.54)

LastNodified:Mon,22 Jun 1998 09;23;24 GMT (对象本身的创建或最后修改日期或时间。)

Content—Length:682l (所发送对象的字节数。)

Content-Type:text/html(包含在实体中的对象是HTML文本。) 状态行由协议版本、状态码、原因短语3个元素组成,各个元素之间用SP分隔。状态码字段由三个数字组成,标识客户请求方法的结果。状态码有5种可能的值,如下表所示。 状态码 定义

1XX

2XX

3XX 信息 成功 重定向 说明 接收到请求,继续处理 操作成功地收到,理解和接受 为了完成请求,必须采取进一步措施

消息的报头分通用报头、请求报头、响应报头和实体报头四个类型。 请求报头

request-header = Accept请求希望服务器能响应何种媒体数据格式。 | Accept-Charset请求端能够接受的字符集

| Accept-Encoding告诉服务器可以接收何种压缩格式传输 | Accept-Language请求端能够识别的语言

| Authorization按特定认证方案编码的用户名和密码证书,服务器接收验证通过执行请求。

| Host请求资源的网络主机和端口号

| Expect

| From

| If-Match

响应报头

response-header = Accept-Ranges

| Age

| ETag

| Location

| Proxy-Authenticate

| Retry-After

| Server

| Vary | WWW-Authenticate 实体头

entity-header = Allow |

Content-Encoding|

Content-Language|

Content-Length|

Content-Location|

Content-MD5|

Content-Range|

Content-Type|

Expires|

Last-Modified|

extension-header

相关推荐