HTTP协议
- HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:WorldWide Web )服务器传输超文本到本地浏览器的传送协议。
- HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件,,查询结果等)。
- HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(NextGeneration of HTTP)的建议已经提出。
URL
- URL( UniformResourceLocator ),中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。
- HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
URL格式
<协议名称>:// <主机名> / <资源的路径> ?<查询字符串> # <片段标识符>
schema : // user:password@host:port / path ? query_string # segement
HTTP客户端请求、响应协议
请求格式(Request):
- 请求方法 路径 版本
- 请求头:值
- ……
- 空行
- [请求正文]
响应格式(Response):
- 版本 状态码 状态描述 (响应行/状态行)
- 响应头:值
- ……
- 空行
- [响应正文]
HTTP状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
状态码 | 含义 |
---|---|
1xx | (指示信息)表示请求已接收,继续处理 |
2xx | (成功)表示请求已被成功接收、理解、接受 |
3xx | (重定向)要完成请求必须进行更进一步的操作 |
4xx | (客户端错误)请求有语法错误或请求无法实现 |
5xx | (服务器端错误)服务器未能实现合法的请求 |
HTTP主要特点
-
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
-
灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
-
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
-
无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
-
支持B/S及C/S模式。
HTTP方法
方法 | 说明 | 支持的HTTP协议版本 |
---|---|---|
GET | 获取资源 | 1.0 / 1.1 |
POST | 传输实体主体 | 1.0 / 1.1 |
DELETE | 删除文件 | 1.0 / 1.1 |
PUT | 传输文件 | 1.0 / 1.1 |
HEAD | 获得报文首部 | 1.0 / 1.1 |
OPTIONS | 询问支持的方法 | 1.1 |
TRACE | 追踪路径 | 1.1 |
CONNECT | 要求用隧道协议连接代理 | 1.1 |
LINK | 建立和资源之间的联系 | 1.0 |
UNLINE | 断开连接关系 | 1.0 |
注:
-
GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type做的这种参数形式,后面讲)
-
POST方法是把提交的数据放在HTTP包的请求体中.
-
GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.