TCP报文首部中存在一个RST位,如果该位被置1则表示这是个复位报文段。当一个报文段从一端发往一个不存在或者处于异常状态的另一端时,就会以一个复位报文段应答发送端,告知发送端连接出现错误,应当被关闭
有三种连接情况可能会产生复位报文段
- 尝试连接到一个不存在的<ip,port>
- 主动关闭的一方的套接字设置了SO_LINGER选项,并且超时时间为0
- 另一端异常崩溃导致连接处于半关闭状态,此时正常的一端向已关闭的一端发送报文段
向不存在的端口发送连接请求
如果客户端尝试连接到port端口上而这个端口根本就没有服务器监听,那么当客户端发送三次握手的第一个SYN报文段时另一端会以复位报文段回应
可以在终端使用telnet ip port命令向
➜ ~ telnet localhost 9999
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
➜ ~