HTTP(超文本传输协议)是一个基于TCP/IP通信协议的、无状态的、应用层协议,它简洁、快速,且适用于分布式超媒体信息系统。
HTTP协议的主要特点包括:
1、简单快速:客户向服务器请求服务时,只需要传送请求方法和路径。请求方法例如:GET,HEAD,POST。
更多请求方法:
GET—–请求指定的页面信息,并返回实体主体。
HEAD—–类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST—–向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT—–从客户端向服务器传送的数据取代指定的文档的内容。
DELETE—–请求服务器删除指定的页面。
CONNECT—–HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS—–允许客户端查看服务器的性能。
TRACE—–回显服务器收到的请求,主要用于测试或诊断。
2、灵活:http允许传入任意类型的数据对象,正在传输的类型由Content-Type加以标记。
3、无连接:服务器处理完客户端的请求并收到客户端的应答后,就断开链接。
4、无状态:对事务处理没有记忆力。虽然可能会导致每次链接传送的数据量增大(例如增加前次事物的信息等),但是另一方面,服务器不需要前面的信息时它的应答速度就会比较快。
HTTP:URL
URL(UniformResourceLocator统一资源定位符)是一种特殊类型的URI(Uniform Resource Identifiers统一资源标识符),它的基本格式估下:
http://www.Rabbit.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
http -> 协议名
www.Rabbit.com -> 域名
:8080 -> 端口(如果省略,则采用默认端口)
/news/ -> 虚拟目录
index.asp -> 文件名
?boardID=5&ID=24618&page=1 -> 参数
#name -> 锚
HTTP:Request
Request请求消息 = 请求行 + 请求头部 + 空行 + 请求数据
请求行 = 请求方法 + URL + 协议版本
请求头部 = HOST : 请求目的地
User_Agent : 客户代理
Content-Type : 要传输的数据类型
。。。
空行:请求头部后面的空行是必须的
HTTP:Response
Response响应消息 = 状态行 + 消息报头 + 空行 + 响应正文
状态行:HTTP协议版本号,状态码,状态消息。
例如:HTTP/1.1 200 OK
状态码:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
消息报头:用来说明客户端需要使用的一些附加信息
例如:Date: Fri, 22 May 2009 06:07:21 GMT;Content-Type: text/html; charset=UTF-8
空行:报头后面的空行是必须的