几张图带你走进http协议

作为一个web开发工程师,http(超文本传输协议)必定是我们的必修课。
几乎所有的web工程的通信都是基于http。它简单快速,可以根据url请求到服务端数据;它灵活,可以根据我们需要传任意类型对象。

一、http网络之间通信

clipboard.png

从图中可以看到http是基于传输层的tcp协议,tcp是通过三次握手策略进行连接的,并且数据发送后不会没有响应。这就奠定了http是个安全可靠协议,并被广泛使用。关于tcp的学习我会在之后更新。

二、http通信规则

2.png

上图是http的请求报文,可以把报文分成3部分:起始状态行 、请求头 、请求实体
1、起始行:定义请求的方法、资源对象、协议版本号。
2、请求头:定义我们的请求域和我们想要的各种请求字段,比如图中的Connecton:keep-alive这表明这次请求是个持久化连接,这个http/1.0和http/1.1是有区别的这里就不进行讲解;Content-Type表示我们请求的数据编码格式图上是比较常见的表单提交数据按照 key1=val1&key2=val2 的方式进行编码。
3、实体:协议规定 POST 提交的数据必须放在内容实体里,实体的长度是没有限制的。但是get请求的参数是拼接在uri上的,而uri是有长度限制(2048位)。get请求类型本身就是作为请求获取资源设计的,所以用它来传输大量数据到服务端是不妥的。

3.png

上图是http的响应报文,也是由3部分组成:起始状态行、响应头、响应实体
1、起始行:不同于请求的起始行,这里有响应状态码和原因短语。其他的请求的类似,这里不详解。

三、http请求方法

6.png

四、http持久化连接

4.png

HTTP 协议的初始版本中,每进行一次 HTTP 通信就要断开一次 TCP 连接。
但是现在一个页面包含很多资源请求,如果每次建立又断开,会增加通信量的开销。

5.png

为了减少开销,http增加持久化请求设计,即在请求头字段增加Connecton:keep-alive,只要客户端或服务端其中一方发起断开,才会断开tcp连接。

五、http响应码

7.png

了解一些响应码,对以后遇到相关问题就可以马上定位问题,提高工作效率。
http协议状态码多达60余种,不必都记住在工作遇到也经常是哪几种403(权限)、404(找不到资源)、500(服务内部错误)、502(获取不到连接)、504(超时)等等

http会和web服务器结合做些通信数据转发程序,比如:代理、网关、隧道。

这篇文章就到这了,希望有问题小可爱们能积极支持!

你可能感兴趣的:(几张图带你走进http协议)