发送FIN表示结束不会发送任何数据。但它能发送TCP keepalive吗?
如果它可以,那么它与“在FIN之后发送东西”的陈述相矛盾,即使它是保持活跃而不是数据。
如果它没有发送keepalive,它将无法检测到另一端是否消失。
例如:
客户端发送FIN并收到ACK。然后,服务器发送了丢失的重置。 只有客户端可以检测到服务器已经消失的方法是发送keepalive,它将通过重置响应,然后客户端关闭。
这会发生吗?
答案 0 :(得分:3)
根据RFC-1122:
只有在间隔内没有收到连接的数据或确认数据包时,才能发送保持活动的数据包。
发送FIN
仅表示不再发送数据,而不是不能再接收数据。如果发送FIN
后的应用程序仍然需要数据,则RFC表示它可以发送保持活动数据包以确保另一端仍在那里。