如果我有一个连接套接字的进程,并且我终止了这个过程,那么Windows将导致发送一个RST数据包。
是否保证(在某处记录)在进程终止时始终发送RST数据包,还是可以发送FIN数据包?
答案 0 :(得分:1)
连接关闭时,TCP不应发送RST数据包。要关闭连接,TCP将在客户端进行以下状态:
FIN_WAIT_1
。FIN_WAIT_1
中,TCP等待来自服务器的确认(ACK)。FIN_WAIT_2
。FIN_WAIT_2
中,TCP等待来自服务器的FIN
数据包FIN
后,客户端会发送ACK
并输入TIME_WAIT
TIME_WAIT
在一段时间后退出(通常为30秒或1分钟)。此状态的目的是使最终ACK
能够重新发送到服务器以防丢失。 任何地方都没有RST数据包。 RST用于响应意外流量,不以关闭连接。
例如,如果您将TCP数据包发送到端口80,并且服务器未运行HTTP服务器(并假设数据包一直到服务器并且未被阻止/忽略),那么RST回复是送回客户端。