@
g0t3n tcp不去检查连接状态。
看看rfc吧,实在不行看 tcpip详解。。。。
生存检查都是上层协议干的(程序)
你说的这个tcp连接维持有些类似,udp的丢包检测。udp本身不去做丢包检测,是上层协议去管的丢包检测。
tcp也一样,tcp自己不去管,但是上层去管。
@
lehui99 的例子不错,只要2个主机不挂,中间的网络挂了n次,那么tcp连接也不会中断。
以ssh为例,如果电脑从休眠恢复过来,ssh client的tcp连接还是established,如果这时候按回车,程序会按照原来的tcpip序列号去和服务器端进行交涉。注意这时的sport和src都是不变的,如果有公网ip,并且没有设置keepalive,这个连接还会继续的。
但是现在的网络环境都是nat。nat默认30分钟没有活动自动删除端口。所以这是如如果用的是内网ip,那么肯定无法连接了,因为sport改了,再去连服务器,回来的肯定是rst了。收到rst后,ssh客户端就会认为连接关闭了。。。
其次还有如果ip变换了,主机上类似的操作就是把网卡down掉,在up一下,这个操作会吧tcpip协议栈清空。