HTTP简介
HTTP定义
HTTP协议:超文本传输协议,用于从万维网服务器传输超文本到本地浏览器的传送协议,基于TCP/IP通信协议传递数据,属于应用层的面向对象协议,工作于客户端-服务端架构上。浏览器作为客户端向服务器通过URL发送请求,服务器收到请求后,向客户端发送响应信息。
特点
1.简单快速:客户端向服务器发送请求时,只需传送请求方法和路径。
2.灵活:Http允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。
3.无连接:即限制每次连接只处理一个请求,服务器处理完客户端的请求,并受到客户端的应答后,立即断开连接,节省传输时间。
4.无状态:即对事物的处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,必须重传。
5.支持C/S及B/S模式。
URL
定义
URL:统一资源定位符,是互联网上用来标识某一资源的地址。
构成
HTTP请求消息Request
客户端向服务器发送一个HTTP请求包括以下格式:请求行,请求头部,空行和请求数据组成。
栗子(Get方法)
GET /562f25980001b1b106000338.jpg HTTP/1.1
Host img.mukewang.com
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/ 537.36 (KHTML, like Gecko)
Chrome/51.0.2704.106 Safari/537.36
Accept image/webp,image/,/*;q=0.8
Referer http://www.imooc.com/
Accept-Encoding gzip, deflate, sdch
Accept-Language zh-CN,zh;q=0.8
第一部分:请求行,请求方法(Get)+空格+URL+空格+协议版本(HTTP/1.1)+回车符+换行符
第二部分:请求头部:头部字段名·:值
第三部分:空行
第四部分:请求数据,这里为空
HTTP响应消息Response
主要组成包括:状态行,消息报头,空行,响应正文
构成
栗子
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
第一部分:状态行,由协议版本号,状态码,状态消息三部分构成
第二部分:消息报头,头部字段名:值
第三部分:空行
第四部分:响应正文,服务器返回给客户端的信息
HTTP方法
方法 | 说明 | 支持HTTP协议版本 |
---|---|---|
Get | 获取资源,返回实体主体 | 1.0 /1.1 |
Post | 传输实体主体,数据包含在请求正文中 | 1.0/1.1 |
PUT | 客户端向服务器传送的数据取代指定文档的内容 | 1.0/1.1 |
HEAD | 获得报文头部 | 1.0/1.1 |
DELETE | 请求服务器删除指定页面 | 1.0/1.1 |
LINK | 建立与资源间的联系 | 1.0 |
UNLINK | 断开与资源间的联系 | 1.0 |
OPTIONS | 允许客户端查看服务器性能 | 1.1 |
TRACE | 回显服务器收到的请求,主要用于测试和诊断 | 1.1 |
CONNECT | 要求使用管道方式连接代理服务器 | 1.1 |
HTTP状态码
名称 | 类别 | 原因短语 |
---|---|---|
1xx | 信息性状态码 | 请求已接收正在处理 |
2xx | 成功状态码 | 请求已接收,理解,接受,处理完毕 |
3xx | 重定向状态码 | 完成请求必须进行更进一步操作 |
4xx | 客户端错误 | 请求有语法错误或请求无法实现 |
5xx | 服务器端错误 | 服务器未能实现合法的请求 |
常见状态码
200 OK :客户端发来的请求被正确处理
204 No Content :表名请求被正确处理,但响应信息无响应正文
206 Partial Content:该状态码表示客户端对服务器进行了范围请求,而且服务器成功的执行了这部分GET请求,响应报文中包含由Content-Range指定的实体内容范围。
301 Moved Permanently:永久性重定向,只跳转一次,该状态码表示请求的资源已经被分配到了新的URI,之后将使用新的URI
302 Found:临时重定向,每次访问都需跳转
400 Bad Request:请求报文存在语法错误,需修改内容重新发布
403 Forbidden:请求的资源被服务器拒绝,服务器没必要给出详细理由
404 Not Found:服务器上没有请求的资源、
500 Internal Server Error:服务器端执行过程发生故障,web自身存在bug
503 Server Unavailable:服务器端处于超负载状态,无法处理请求
HTTP工作原理
HTTP协议定义web客户端如何从web服务器请求web页面,以及服务器处理请求后如何将web页面传输送给客户端。采用了请求/响应模式,客户端向服务器发送一个请求报文,包括请求行(请求方法,URL,协议版本),请求报头,空行,请求正文,服务器端收到请求后进行处理发送响应报文给客户端,包括状态行(协议版本,状态码,状态消息),响应报头,空行,响应正文。
步骤
1.客户端连接到Web服务器
2.客户端发送HTTP请求
3.服务器接收请求并处理返回响应
4.释放TCP连接
5.客户端解析服务器端返回的HTML内容