http keep-alive简解

Posted 炎泽

tags:

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

http协议中,客户端发送请求,服务端再接收到请求后返回所需要的数据后即关闭连接,这样客户端读取数据局时会返回EOF(-1),表明数据已接受完全

备注:EOF end of file

什么是keep-alive

一般情况下,服务端发送完毕后会自动关闭,而keep-alive功能可以使得客户端与服务端之间建立持续有效的连接,当出现后续请求时不必重新连接。

http1.0中keep-alive默认关闭,需要在请求头中加入connection: keep-alive,而在1.1中默认开启,需加入connection: close

优点是减少了建立连接/释放的开销

那么接下来面临一个问题,没有了EOF,如何知道服务端已发送完毕?

1.content-length

content-length实体内容的长度(大小,即返回文件的大小),客户端可根据这个字段来判断是否发送/接收完毕

2.transfer-enconding

当服务端发送一个图片或静态页面时,它很清楚文件的大小,从而知道content-length的值,但如果是发送动态网页呢?服务器不知道其实际大小。。这时候就需要transfer-enconding:chunk

设置transfer-encoding:chunk后,会将文件进行chunk编码,将文件分成一块一块再串联起来,由一个长度为0的chuck结束,客户端接收到这个chunk后明白发送完毕。

以上是关于http keep-alive简解的主要内容,如果未能解决你的问题,请参考以下文章

TCP keep-alive翻译

HTTP协议简解

http keep-alive 解释

理解HTTP之keep-alive

HTTP Keep-Alive模式

HTTP协议Keep-Alive模式详解和HTTP头字段总结