谈谈我对HTTP协议的理解
2017-03-07 21:04
330 查看
一.HTTP协议版本
HTTP1.0与HTTP1.1的区别主要体现在以下几个方面:1. HTTP1.0是短连接、HTTP1.1是长连接。
2. 增加请求头和响应头。(什么是请求头和响应头?等下我会上图说明)
3. 客户端不同请求之间是异步的。(个人理解,这里的异步并不是指客户端可以同时处理多个请求,而是当一个请求执行过程中遇等待情况时,可以切到另外一个请求上执 行)
HTTP2.0相较于HTTP1.x主要在以下几个方面有所提升:
1. HTTP2.0支持多路复用。
2. HTTP2.0会根据请求优先级进行传输。(例如在浏览商品的时候突然滑到最下方,那么最下面的商品信息无疑是用户最想看到的,所以这时对最下面商品信息的请求属于优先级高的请求)
3. HTTP2.0支持header压缩。
4. HTTP2.0支持server推送。(http1.x只能由客户端发起请求,然后服务器被动的发送response。开启server push之后,server通过X-Associated-Content header告知客户端会有新的内容推送过来。在用户第一次打开网站首页的时候,server将资源主动推送过来可以极大的提升用户体验。)
5. HTTP2.0支持server暗示。(与server推送不同,server暗示仅仅告知客户端服务器上有这些资源,或是有新内容产生,具体的下载还是要靠客户端发起请求完成,但由于省去了查询server状态这一过程,所以省去了一道询问)
二. HTTP通讯流程
在HTTP1.0中,通讯流程可以概括为以下几步:1. 客户端与服务器建立TCP连接,一般使用80端口。
2. 客户端向服务器发送请求。
3. 服务器向客户端发送响应。
4. TCP连接断开。
5. 重复上述步骤。
而在HTTP1.1中,通讯流程可以概括为以下几步:
1. 客户端与服务器建立TCP连接,一般使用80端口。
2. 客户端向服务器发送请求。
3. 服务器向客户端发送响应。
4. 重复上述步骤。
5. 通讯完毕,TCP连接断开。
三. HTTP协议——请求与应答
两张图说明问题。请求:
响应:
再直白点:
请求:
<request line> <headers> <blank line> <body>
响应(和请求一样,就是第一行变了):
<request line> <headers> <blank line> <body>
其中请求方法有8种,分别为:
GET:请求获取由 Request-URI
所标识的资源。
POST:在 Request-URI 所标识的资源后附加新的数据。
HEAD:请求获取由 Request-URI
所标识的资源的响应消息报头。
OPTIONS:请求查询服务器的性能,或查询与资源相关的选项和需求。
PUT:请求服务器存储一个资源,并用 Request-URI作为其标识。
DELETE:请求服务器删除由 Request-URI所标识的资源。
TRACE:请求服务器回送收到的请求信息,主要用语测试或诊断。
常见的响应状态码有以下几种,在各种下面分别列几个常见的状态码:
1开头(消息)
2开头(成功)
200(OK):请求成功
202(Accepted):已接受请求,尚未处理
204(No Content):请求成功,且不需返回内容
3开头(重定向)
301(Moved Permanently):被请求的资源已永久移动到新位置
301(Moved Temporarily):被请求的资源已临时移动到新位置
4开头(请求错误)
400(Bad Request):请求的语义或是参数有错
403(Forbidden):服务器拒绝了请求
404(Not Found):未找到请求的资源
5开头(服务器错误)
500(Internal Server Error):服务器遇到错误,无法完成请求
502(Bad
Getway):网关错误,一般是服务器压力过大导致连接超时
503(Service Unavailable):服务器宕机
四. POST和GET究竟有什么区别?
1. POST将请求数据放在请求的body里,而GET则是将他放在请求行里。2. GET请求的数据会体现在URL上,而POST不会。
3. 由于请求行的长度是有上限的,所以GET提交数据时会有长度上限,而POST不会。
五. 要想深入理解、还是需要截数据包观察
这里就不带着大家截包了,这个链接里有截好的数据包,推荐一看:http://www.he11oworld.com/front-end/2786.html怎么截包?可以用Firebug,比如上面那个POST与GET的问题,就可以看到,POST的内容是在“post”一栏,而GET则是在“参数”
参考文章
1. http://www.jianshu.com/p/a27f91c51a8b2. http://blog.csdn.net/witsmakemen/article/details/8994963
3. http://www.he11oworld.com/front-end/2786.html
4. http://www.tuicool.com/articles/jMFfIv
5.https://www.zhihu.com/question/34074946
相关文章推荐
- 小项目心得体会.对HTTP协议格式更深的理解.
- 深入理解 ASP.NET 与客户端缓存 (Part 1 - HTTP 协议)
- 深入理解HTTP协议、HTTP协议原理分析
- 深入理解HTTP协议
- 深入理解HTTP协议、HTTP协议原理分析(转)
- 深入理解 ASP.NET 与客户端缓存 (Part 1 - HTTP 协议)
- 谈谈我网络分层协议的理解和问题
- 理解HTTP协议之报文(三)
- 理解HTTP协议之报文(一)
- Http协议理解
- 理解ASP.NET与客户端缓存之HTTP协议
- Http协议的深入理解
- 关于HTTP协议的理解
- 理解HTTP协议之报文(四)
- 谈谈一个重要的http协议头标:X-Forwarded-For
- 理解ASP.NET与客户端缓存之HTTP协议
- 【转】:理解HTTP协议的Request/Response(请求响应)模型
- HTTP协议是无状态协议,怎么理解?
- 转载和积累系列 - 深入理解HTTP协议、HTTP协议原理分析(转)
- 深入理解HTTP协议之POST方法——ajax实例