发送了FIN的TCP端点仍会发送keepalive吗?

6
发送FIN表示该端不会发送任何数据。但是它能发送TCP keepalive吗?
如果可以,那么它就与“在发送FIN之后发送内容”这一说法相矛盾,即使它是keepalive而不是数据。
如果不发送keepalive,则无法检测到另一端是否已离开。
例如:
客户端发送FIN并收到ACK回复。然后服务器发送了一个被丢弃的重置。客户端唯一能够检测到服务器已经离开的方法是发送keepalive,这将得到重置响应,然后客户端关闭。
这种情况是否发生?
1个回答

6
根据RFC-1122的规定:
当连接在一段时间内没有接收到数据或确认包时,只能发送保持活动状态的数据包。
发送FIN仅表示不再发送数据,而不是不能再接收数据。如果应用程序在发送FIN后仍然期望接收数据,则RFC指示可以发送保持活动状态的数据包以确保另一端仍在运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接