假devise算机A和B已经build立了TCP连接,现在两台计算机上的相应应用程序都不会发送任何数据10秒(*)。 在这10秒内,是否有任何物理上的stream动阻止了连接,或者“a和b有一个开放的networking连接”,只是两台计算机上的软件状态? 感谢任何提示!
(*)进一步假设超时被定义为例如20秒,所以连接不被破坏。
TCP / IP状态是逻辑/抽象的,并不一定对应于物理世界中发生的事情。
以下是TCP上的维基百科链接: http : //en.wikipedia.org/wiki/Transmission_Control_Protocol
所以,你说的是两台机器之间的ESTABLISHED连接,两台机器的networking堆栈中都有条目,表示该IP上的这个端口连接到另一台机器的IP /端口,还有序列号和其他记帐。
如果你拿起一把斧子,把它们之间的电缆断开,然后修补它,那么如果它们已经空闲,连接可能仍然存在(因此没有发送数据包,等待接收这些数据包的确认,并且给定等待)。
一个空闲的TCP / IP连接就是这样,闲置。
IP堆栈不会生成数据包,这就是为什么有些应用程序需要执行keepalive消息,以确保防火墙和NAT路由器在一段时间不活动后不超时(例如,断开连接状态)。