HTTP ------ connection 为 close 和 keep-alive 的区别

Posted 流水灯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP ------ connection 为 close 和 keep-alive 的区别相关的知识,希望对你有一定的参考价值。

keep-alive和close这个要从TCP握手讲起


HTTP请求是基于TCP连接的,TCP的请求会包含(三次握手,中间请求,四次挥手)
在HTTP/1.0时代,一个HTTP请求就要三次握手和四次挥手,当一个网页中包含大量的图片或者其它外部资源时,加载一个Document要很多个HTTP请求,也就意味着要多次三次握手和四次挥手,这样就造成了网络资源的浪费

到了HTTP/1.1的时候,通过请求头的connection字段用来申明,作用就是减少TCP握手次数,开始的三次握手后就可以进行多次HTTP正文请求,可以长时间的保持,也就是加载一个Document的时候,即使有大量的图片等,也只用进行一次握手,这样就大大的减少了传输量了。keep-alive就表示之前已经进行过握手,可以直接进行HTTP正文传输,close表示结束,我接下来没有东西了,可以进行四次挥手结束这个TCP连接了

以上是关于HTTP ------ connection 为 close 和 keep-alive 的区别的主要内容,如果未能解决你的问题,请参考以下文章

HTTP2 ERR CONNECTION CLOSED(开销太大)

将 http.Response 转换为字节数组

在 AWS Linux 上增加 RestClient / Net::HTTP 中的 connect(2) 超时

HTTP 标头中的 Connection 和 Proxy-connection 有啥区别?

HTTP协议中的通用头及其功能

.NET Socket.Connect 将主机名解析为 IP 地址