[TCP] TCP协议RST包介绍
Contents
TCP协议RST包介绍、出现场景
RST介绍
RST: TCP协议中重置、复位连接的标志位,用来关闭异常连接。
发送RST包关闭连接时,不等缓冲区的包发送完成,会丢弃缓冲区中的包,直接发送RST。 同样接收端收到RST包后,也不必发送ACK确认包。
使用场景
- 当服务器收到没有监听端口的连接请求时会返回RST包
- 异常终止一个连接
- 检测半打开连接
几种不会发送RST包情况
- 使用shutdown、close关闭套接字,发送的是FIN,不是RST。
- 套接字关闭前,使用sleep。对运行的程序Ctrl+C,会发送FIN,不是RST。
- 套接字关闭前,执行return、exit(0)、exit(1),会发送FIN、不是RST。
网络编程中常见错误:
- broken pipe: 在对已经关闭的通道write时出现
- connection reset by peer: 出现不可恢复错误,比如直接kill服务, write/read都可能出现