发送FIN的TCP端点是否仍然发送keepalive?

时间:2013-08-07 17:47:51

标签: networking tcp

发送FIN表示结束不会发送任何数据。但它能发送TCP keepalive吗?

如果它可以,那么它与“在FIN之后发送东西”的陈述相矛盾,即使它是保持活跃而不是数据。

如果它没有发送keepalive,它将无法检测到另一端是否消失。

例如:

客户端发送FIN并收到ACK。然后,服务器发送了丢失的重置。 只有客户端可以检测到服务器已经消失的方法是发送keepalive,它将通过重置响应,然后客户端关闭。

这会发生吗?

1 个答案:

答案 0 :(得分:3)

根据RFC-1122

  

只有在间隔内没有收到连接的数据或确认数据包时,才能发送保持活动的数据包。

发送FIN仅表示不再发送数据,而不是不能再接收数据。如果发送FIN后的应用程序仍然需要数据,则RFC表示它可以发送保持活动数据包以确保另一端仍在那里。