Chinaunix

标题: 浏览器和服务器完成数据传输后,是哪方主动关闭tcp连接啊?? [打印本页]

作者: bjutslg    时间: 2014-04-15 14:27
标题: 浏览器和服务器完成数据传输后,是哪方主动关闭tcp连接啊??


   首先说,在看tcp状态转换图的时候有个time_wait状态。当TCP连接的一段主动关闭连接的时候,会进入这个状态;
我看的一些资料上说,由于这个状态的存在一般都是客户端主动关闭连接,当通信时使用短连接,如果由服务端主动关闭连接时,主动关闭连接的服务端会产生TIME_WAIT状态的连接。由于都连接到服务端80端口,服务端的TIME_WAIT状态的连接会有很多个。
假如server一秒钟处理1000个请求,那么就会积压240秒*1000=24万个TIME_WAIT的记录,服务有能力维护这24万个记录。
大多数服务器端一般执行被动关闭,服务器不会进入TIME_WAIT状态。
    但是我在用tcpdump抓包的时候,分析浏览器和服务器传输数据的时候;总是服务器那边先发送 Fin啊 ,刚开始使用tcpdump不知道是不是抓错了还是什么原因啊
有没有能个解释下的啊???

作者: timespace    时间: 2014-04-15 14:52
HTTP 1.0时代,如果不设置KeepAlive,默认都是短连接,服务器主动关,否则就看本地浏览器和web各自的设置了,基本都是某个间隔不活跃就断开,两边都可以。
HTTP 1.1时代,默认就是长连接,类似HTTP 1.0外加KeepAlive,那边主动关都可以,依然看本地浏览器设置和web服务器设置。

现在是HTTP1.1的天下。
作者: 流氓无产者    时间: 2014-04-16 09:29
都可以发起关闭啊,http有个tag,告之是否server主动发起close
作者: bjutslg    时间: 2014-04-16 19:40
原来这样啊 多谢了啊回复 2# timespace


   
作者: bjutslg    时间: 2014-04-16 19:41
嗯  明白了 谢了啊 回复 3# 流氓无产者


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2