为什么HTTP标准中 webService 主动会关闭tcp连接

如题所述

这确实是历史包袱。原因很简单,早先客户端处理HTTP是单线程的、阻塞的,服务器端发送完信息后客户端要一直等到信息处理完毕、渲染完毕,才能有处理能力来通知服务器处理完成。在当时这个过程可以长达数分钟,而且当时服务器没有能力去承载这么多等待响应的连接(可以用Erlang计算一下这个延迟下需要满足%99.9的可用性需要多么恐怖的硬件)。

所以解决方案就是服务器发送完之后就关闭连接。等客户端接收到了所有信息,处理完毕,一看连接也关掉了,此时服务器早已在处理其他连接了。

另外这也是为什么有大量TIME_WAIT的原因,相比挂着连接等待客户端关闭,服务器等待确认TCP连接状态要快太多了。

说到底就是HTTP协议太老了,虽然高级应用一直在更新,但是这种底层设计很难做出大的改变。这也是为什么Google要弄SPDY来更新HTTP的底层机制。
温馨提示:答案为网友推荐,仅供参考
相似回答