首页 > 相同的请求,http发送第一次三次握手,第二次还会握手三次吗?

相同的请求,http发送第一次三次握手,第二次还会握手三次吗?

相同的请求,http发送第一次三次握手,第二次还会握手三次吗?


看客户端发送的请求头了,在同IP同端口情况下,如果请求头包含connection:keep-alive,服务器是会在一定时间内保持连接,这样可以节省很多资源和时间。

如果没有这个选项,服务器response完直接就close连接了。

当然,这个keep是有过期时间的,具体看服务器设置,如果客户端在指定时间内没有再次请求,服务器还是要把它close了的,占着服务器上一个端口呢,这个也是一个服务器性能调优的手段,根据具体情况设置超时时间。

具体请参考 http://zh.wikipedia.org/zh-cn/HTTP%E6%8C%81%E4%B9%85%E8%BF%9E%E6%8E%A5


三次握手是TCP协议的概念, 不是HTTP的. HTTP协议是基于TCP协议的.

到底有没有三次握手取决于是不是两次不同的socket连接.

按说WEB服务器应该支持单个socket的情况. 不知道HTTP请求头里的Keep Alive设置是不是就是告诉服务器咱们通信的连接不要断, 免得还要重建socket连接.(重建socket连接就会再来三次握手).


你可以认为http其实和底层的tcp之间的关系没有那么紧密,或者说http是不太管tcp的是如何实现的,只是tcp已经把http的数据都传输了

三次握手是tcp的事情,所以只要有tcp连接没断,那么自然也不用再做三次握手;比如说http连接是keep-alive的,那么就可以复用同一个tcp连接座很多事情~ 但是如果每次http连接都close,那么就需要每次都重新建立tcp连接,也就是都要重新握手


考虑到缓存策略,可能会直接使用缓存。

没有缓存的情况下,如果开启Keepalive后则多个HTTP请求会重用一个TCP连接。如果没有开启此选项,则每次HTTP请求都使用单独的TCP连接。

【热门文章】
【热门文章】