linuxlearning4R 发表于 2016-05-31 09:41

tcp连接超时 疑问



服务器上,tcp的timeout设置为30s

client和server都是Windows机器
在client和server之间建立一个tcp连接,在分别在两台pc上通过netstat查看,已经进入了established状态
服务器上在连接跟踪表里面也看到了有这个连接


client和server之间什么数据都不发送、心跳包也不发。30s以后,服务器连接跟踪表里面也看到了 没有 这个连接了(连接超时就会消失,这个理解)
在分别在两台pc上通过netstat查看,还是established状态机器(不是连接已经超时了,怎么还是established????)

nswcfd 发表于 2016-05-31 10:25

就像对同一件事情不同的人有不同的观点一样,第三方(中间服务器)的看法不需要跟当事人(client/server)保持一致。

nswcfd 发表于 2016-05-31 10:31

服务器的连接表超时是仅对服务器有意义的一个事件,外界对此基本是无感知的。

再比如说,中间有两个防火墙,
client <--> fw1 <--> fw2 <--> server,
完全可以设置不同的超时值,比如fw1=30s,fw2=60s,
这样fw1和fw2对连接的感知就是不一样的。

linuxlearning4R 发表于 2016-05-31 16:31

nswcfd 发表于 2016-05-31 10:31 static/image/common/back.gif
服务器的连接表超时是仅对服务器有意义的一个事件,外界对此基本是无感知的。

再比如说,中间有两个防火 ...

意思是,fw那里虽然看到连接timeout了,但是在client 、server那里看到的连接其实还是建立的。
除非client 、server那里的连接timeout了或者主动断开了,连接才会真的断开是吗?

nswcfd 发表于 2016-05-31 18:46

是的。

中间路径的连接表/会话表实现【不应该】干扰端到端的行为,理想的情况是,对client/server而言,它就像不存在一样。

nswcfd 发表于 2016-05-31 18:52

实际上linux也没有做到完全透明,比如nat环境,服务器提前超时了,之前的nat信息就丢掉了,client/server 30s之后的报文就不能正常被转发了(因为很有可能被nat到不同的ip/port)。
页: [1]
查看完整版本: tcp连接超时 疑问