Web技术小结之HTTP协议

(一)HTTP简介

HTTP协议全名是超文本传输协议,它是一个基于TCP/IP通信协议来传递数据(HTML文件、图片文件等)。HTTP协议工作于客户端-服务端架构上,浏览器作为HTTP客户端通过URL向HTTP服务器(即Web服务器)发送请求。Web服务器根据接收到的请求,向客户端发送响应信息。HTTP的默认端口是80(PHP常用的apache服务器的默认端口就是80),也可以修改为8080(java常用的tomcat服务器就是8080)或者其他端口。

HTTP的三点注意事项:

(1)HTTP是无连接的:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。

(2)HTTP是媒体独立的:只要客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

(3)HTTP是无状态的:无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

(二)HTTP消息结构

HTTP使用统一资源标识符(URI)来传输数据和建立连接。

1、客户端请求消息

客户端请求报文格式

图1:客户端请求报文格式

客户端请求消息包括以下格式:请求行(request line)、请求头部(header)、空行、请求数据。

2、服务器响应消息

服务器响应报文格式

图2:服务器响应报文格式

服务器响应包括以下格式:状态行、消息报头、空行、响应正文。

3、例子

// 客户端请求
GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

// 服务器响应
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

// 输出结果
Hello World! My payload includes a trailing CRLF.

(三)HTTP请求方法

根据HTTP标准,HTTP1.0定义了三种请求方法:GET、POST、HEAD,HTTP1.1新增了五种请求方法:OPTIONS、PUT、DELETE、TRACE、CONNECT。

方法描述
GET
请求指定的页面信息,并返回实体主体。
HEAD
类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT
从客户端向服务器传送的数据取代指定的文档的内容。
DELETE请求服务器删除指定的页面。
CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS允许客户端查看服务器的性能。
TRACE
回显服务器收到的请求,主要用于测试或诊断。

(四)其他

有关HTTP的其他内容,比如HTTP请求头信息(比如:WWW-Authenticate)、HTTP状态码(比如:200、301、404)、HTTP content-type(比如:text/html),这些知识用到的时候,直接在网上搜索即可。

本文标题:Web技术小结之HTTP协议

本文链接:http://yedward.net/?id=262

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章