HTTP协议通信过程细节
Posted 云层天咨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议通信过程细节相关的知识,希望对你有一定的参考价值。
关注云层天咨有助于升职加薪噢!
云 知道
比某知道更专业靠谱的知识分享平台
HTTP协议通信过程细节
虽然不管从一些抓包监听工具还是HTTP的请求工具,甚至是从代码角度看,HTTP都是一个Request,同时返回一个Response的数据对象,里面包含了整个HTTP Response的数据内容,从而形成一个完整的接口,实际上一个完整的HTTP请求是有多个步骤的,只是被封装了起来,这有利于更快速的开发和测试,但也给需要更多学习的人带来的很多的麻烦,无法了解内部到底是怎么做的。
理解HTTP的通信过程是有必要的,特别是在一些接口的性能测试和安全测试方面。先来看单个HTTP的过程,这样也有利于理解HTTP为什么既是短连接,又可以使用长连接的模式,这些内容也有助于学习更底层更复杂的协议。
HTTP & HTTPS通信过程
1、DNS Lookup
DNS(Domain Name System),所谓DNS Lookup就是一个域名解析的过程,将一个域名转换为IP,在互联网中都是依赖于IP进行访问的,域名只是一个名称,为了便于记忆而产生。如果是直接IP访问,那么就没有DNS Lookup这一步,另外还有一种情况,当短期内已经解析的域名,也会根据之前解析的缓存直接读取,跳过DNS Lookup的过程。
2.、TCP Connect
TCP Connect即TCP连接,这个步骤只要是经过TCP传输连接的,都统一会有,相当于打开一个数据传递通道,每一次新的TCP连接都会有这么一个过程,而HTTP也是通过TCP进行传递数据,这个过程还要是新的连接就是必然产生的,也称之为“三次握手”。如果是使用已有的TCP传输通道,那么在HTTP请求时就不会有这个步骤,这个依赖已经建立的连接过程一般就叫作长连接。
3、HTTPS Handshake
HTTPS Handshake 即HTTPS握手过程,用于交换证书等一系列的加密信息,只有在协议为HTTPS的情况下会出现,而且必须有,且这个步骤只会存在于每次新的TCP连接之后进行,对于已经连接或者复用之前已经做过这个握手过程的,也将跳过这个步骤。如果是普通的HTTP协议,那么就没有这个步骤。
4、HTTP Request Header
这里的HTTP Request Header包括了2个部分,首先是请求行,再来是所有的头信息,那么不管是什么样的HTTP请求方法,都是必然包含这些内容的,所以这是在HTTP通信过程中不可缺少的部分。
5、HTTP Request Body
HTTP Request Body从常理来说,应该和上一步Header都是HTTP Request的数据,是完全可以合在一起发送的,但是比较规范的协议角度还是将他们分开了,但这并不会影响任何的解析,对于GET等没有Body的HTTP请求方法,那么就没有这个步骤,也是为什么从会提到GET速度相对快一些的原因,但这个差别几乎是看不到的。
6、HTTP Response Header
HTTP Response和Request相同,也是将Header和Body分开了,Header这个步骤是必须的,很多时候甚至只需要HTTP状态码即可分辨结果。
7、 HTTP Response Body
在Response Header之后,继续发送的Response Body内容,但如果没有Body,那么跳过此步骤。
8、TCP Close
既然有连接的打开,就也会存在TCP连接的关闭,但如果协定了不关闭连接,比如HTTP中的Keep-alive逻辑,就会将一个连接保留在后续HTTP请求的过程中再次利用。
下回我们来讲解一下如何更详细的分解整个HTTP中间每个步骤的精确耗时,这还有助于性能测试的分析,分辨网络与服务器处理的耗时,敬请期待。
云知道
专业知识分享平台
全栈测试聚集地
测试学习 | 测试交流 | 测试招聘
以上是关于HTTP协议通信过程细节的主要内容,如果未能解决你的问题,请参考以下文章