超文本传输协议 (HTTP)
HTTP协议允许服务器和客户机通过INTERNET接收和发送数据。它是个请求和回应协议----客户机发送请求,服务器对请求给出回应。HTTP 使用可靠的TCP 连接,默认TCP端口是80。HTTP的第一版是HTTP/0.9,随后被 HTTP/1.0所取代。当前最新的版本是HTTP/1.1,这个在RPC2616规范文档中给出了定义。
这一章节简单讲叙了HTTP 1.1, 对于你理解WEB服务器应用程序发送的消息还是足够的。如果你很感兴趣,可以参考RFC 2616文档。
使用HTTP,客户端通过建立一个连接和发送一个HTTP请求来初始化事务会话,服务器联系客户端或者回应一个callback连接给客户端。 它们都可以中断连接。比如,在使用WEB浏览器时,你可以点击浏览器上的STOP按钮来停止文件下载进程,就有效的关闭了和这个WEB服务器的HTTP连接。
HTTP 请求(Requests)
一个HTTP request包含三个部分:
方法,URL,协议/版本(Method-URI-Protocol/Version)
请求包头Request headers
实体包(Entity body)
下面给出一个HTTP请求的范例:
POST /servlet/default.jsp HTTP/1.1
Accept: text/plain; text/html
Accept-Language: en-gb
Connection: Keep-Alive
Host: localhost
Referer: http://localhost/ch8/SendDetails.htm
User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
Content-Length: 33
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
LastName=Franks&FirstName=Michael
请求的第一行就是method-URI-Protocol/Version。
POST /servlet/default.jsp HTTP/1.1
请求的是POST方法,后面的 /servlet/default.jsp 表示一个URL地址,HTTP/1.1表示协议的版本。
HTTP标准规范定义了一些请求方法,用来给每个HTTP请求所使用。HTTP 1.1支持7中请求方法: GET, POST, HEAD, OPTIONS, PUT, DELETE, 和 TRACE。 GET和POST 在INTERNET的应用程序中是使用最普遍的两个方法。
URI完整的指明了一个INTERNET资源。一个URI通常是相对于服务器的根目录被解释的。 因此,它总是使用符号(/)开头。一个URL实际是一个URI类型。协议版本表示当前正在使用的HTTP协议的版本。
请求包头(request header)包含了一些有用的客户机环境的信息和请求的实体(entity body)信息。比如,它可以包含浏览器使用的语言和实体的长度等等。每个请求包头都被CRLF(回车换行)序列所分离。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)在先前的HTTP请求中,实体是下面简单的一行:
LastName=Franks&FirstName=Michael
在一个典型的HTTP请求中,这个实体能够很容易地变得更长。