一、超文本传输协议 (HTTP )
HTTP 协议,允许Web 服务器和浏览器在Internet 上发送和接受数据。HTTP 是一种基于“请求-响应”模式的协议。客户端请求一 个文件(file ),服务器针对该请求给出响应。HTTP 使用可靠的TCP 连 接——默认端口是80。HTTP的最初版本是HTTP/0.9 ,后来被HTTP/1.0 重 写。HTTP/1.0 的替代者是当前的HTTP/1.1。HTTP 的 通信总是由客户端主动初始化:建立连接并发送HTTP 请求。Web 服务器从来不主动联系(contact ) 客户端,或者建立到客户端的回调(callback )连接。无论客户端还是服务器,都可以随时(prematurely )中断连接。例如,当你在下载文件时,点击浏览器的“停止”按钮,就关闭了浏览器和服务器之间的HTTP 连接。
二、HTTP 请求
HTTP 请求包含3 个组成部分:
- Method-Uniform Resource Identifier (URI)-Protocol/Version
- Request headers (请求头部)
- Entity body (实体主体)
下面是HTTP 请求的一个例子:
- POST /examples/default.jsp HTTP/1.1
- Accept: text/plain; text/html
- Accept-Language: en-gb
- Connection: Keep-Alive
- Host: localhost
- 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 /examples/default.jsp HTTP/1.1
POST 是Method ,/examples/default.jsp 是URI ,HTTP/1.1 就是Protocol/Version 。
每个HTTP 请求都可以使用HTTP 标 准中众多Method 中的一个。HTTP/1.1 共支 持7 种Method : GET , POST ,HEAD , OPTIONS , PUT , DELETE 和TRACE 。GET 和POST 是互联网应用使用最普遍的Method 。
URI 标 识了互联网上的资源。URI 的解析通常都是相对与服务器根目录的。因此,URI 总是从正斜线/ 开 始。统一资源定位器(Uniform Resource Locator , URL )实际上是一种URI (参 见 http://www.ietf.org/rfc/rfc2396.txt)。Protocol version 表示使用了哪个版本的HTTP 协议。
Request header 包含了关于客户端环境和entity body的有用信息 。例如,headers 可能包括浏览器的语言,entity body 的 长度等等。Header 之间通过回车/换行符(CRLF )分隔。
在headers 和entity body 之 间,是一个空行(CRLF )。这个CRLF 对于HTTP 请求内容的格式是相当重要的,它告诉HTTP 服务器:entify body 从哪开始。在一些介绍互联网编程的书中,该CRLF 被认为是HTTP 请求的第4 个组成部分。
在前面的HTTP 请求中,entify body 仅仅只有这一行:
- lastName=Franks&firstName=Michael
这里只是一个例子,实际的HTTP 请求中,entity body 当然可以更长一些。
三、http响应
和HTTP请求一样,HTTP 响应也包含3 个组成部分:
- Protocol—Status code—Description
- Response headers (响应头部)
- Entity body (实 体主体)
下面是HTTP 响 应的一个例子:
- HTTP/1.1 200 OK
- Server: Microsoft-IIS/4.0
- Date: Mon, 5 Jan 2004 13:13:33 GMT
- Content-Type: text/html
- Last-Modified: Mon, 5 Jan 2004 13:13:12 GMT
- Content-Length: 112
- <html>
- <head>
- <title>HTTP Response Example</title>
- </head>
- <body>
- Welcome to Brainy Software
- </body>
- </html>
HTTP 响应的第一行类似于HTTP 请求的第一行。第一行告诉你:使用的HTTP 版本是HTTP/1.1 ,请求处理成功了(200 = 成功),一切运行正常。
响应headers 和请求headers 类似,包含了很多有用的信息。响应数据中的entity body 是响应本身的HTML 内容。Headers 和entity body 之间通过CRLF 分隔。