关于HTTP keep-alive的实验(转至 http://my.oschina.net/flashsword/blog/80037)
2014-04-30 19:48
344 查看
前面一篇文章提到,HTTP1.1中持久连接已经是默认配置,除非设置Connection为close,否则默认都会进行持久连接。但是我们知道事实标准跟教科书还是可能会有一定差距的,所以不妨自己尝试一下。
我们知道,TCP建立连接时会进行三次握手,而握手是以一方发送一个SYN为开始的。下载抓包工具Wireshark之后,进行抓包调试。在Java里实现了一段模拟请求的代码:图1 第一次请求,keep-alive生效
图2 10秒后第二次请求,keep-alive过期
然后我们将Connection头设置为close,重试。发现确实建立了两次TCP连接。
图3 设置Connection:close后,keep-alive无效
总结:
Keep-alive只是HTTP1.0时代对持久化连接的叫法,目前HTTP1.1已经默认所有请求都是持久化的,RFC规范是正确的。
头部不设置Connection: keep-alive,依然会进行持久化连接。
如果设置Connection:close,则不进行持久化连接。
目前连接过期时间在服务端设置,Keep-Alive头设置超时时间的做法已经不再有效。
相关文章推荐
- 关于HTTP keep-alive的实验
- 关于HTTP keep-alive的实验 - 黄亿华的个人页面 - 开源中国社区
- 关于HTTP keep-alive的实验
- 关于HTTP keep-alive的实验
- 关于HTTP Keep-Alive
- 关于HTTP中的keep-alive
- 关于HTTP中的keep-alive
- 防止 apk反编译 jocky-- java混淆代码 (转至:http://my.oschina.net/f839903061/blog/72554)
- HTTP协议 keep-alive连接 与 BS(firefox-thttpd)实验
- 关于HTTP中的keep-alive
- 关于http keep-alive与tcp keep-alive
- HTTP keep-alive的实验
- 关于HTTP中的keep-alive
- HTTP Keep-Alive
- 微软IIS对http keep-alive的“霸道”处理
- http keep-alive与tcp keep-alive
- SpringMVC整合Shiro(原文:http://my.oschina.net/miger/blog/283526)
- HTTP Keep-Alive模式
- Java之HttpURLConnection的变态事: Keep-Alive
- 判断Keep-Alive模式的HTTP请求的结束的实现代码