超文本传送协议(HTTP)
是一种通信协议,它允许将超文本标记语言(HTML) 文档从Web 服务器传送到Web 浏览器。HTML 是一种用于创建文档的标记语言,这些文档包含到相关信息的链接。您可以单击一个链接来访问其它文档、图像或多媒体对象,并获得关于链接项的附加信息。
HTTP工作在TCP/IP协议体系中的TCP协议上。
客户机和服务器必须都支持HTTP,才能在万维网上发送和接收HTML 文档并进行交互。
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。无状态: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(请求方法)/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 2005 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