RST复位攻击原理与实战(rs触发器复位是什么意思)
RST是什么
RST即reset(复位),与我们常见的SYN、ACK等常见TCP报文一样,目的是为了标记TCP连接中的各种状态;而RST即是为了处理TCP连接中的异常连接而设计出来的。当发送端发送RST关闭连接时,会直接丢弃缓冲区中的数据,连接释放进入CLOSED状态。而接收端收到RST段后,也无需发送ACK确认。
RST触发的常见情况
端口未监听(尝试三次握手建立连接) 当服务端进程未启动或被系统关闭后,当客户端尝试建立新连接时,服务端都会返回"Connection Reset"等错误信息用来表示这种状态。
一方突然断开,无法通过四次挥手通知另一方正常断开连接(建立连接中,直接拔网线) 在经过三次握手建立连接后,如果一方直接退出,当另一方试图连接时发现无法连接后,会直接收到RST的回复,终止此次连接。
SO_LINGER设置丢弃缓冲区数据,立刻RST(通过方法设置) 通过设置SO_LINGER为true,linger设置为0后,当调用socket.close()方法时,close函数会立即返回并丢失缓冲区数据,发送RST包重置此次连接。
RST攻击 指第三方通过获取通讯双方的IP、端口号(即连接的四元组:请求方IP、请求方端口、发送方IP、发送方端口号)后 通过模拟请求RST来中断原本通讯正常的双方。
在抓包过程中观察出,如果设置长连接后,由于Nginx中的长连接等待时长为65S,如果此时客户端(也就是请求端)不主动发送数据,服务端也会主动发送RST来断开请求来达到节省开销的目的。
如果RST包发送失败/丢失后,TCP会如何处理
如果服务端发送的RST包在途中丢失后,由于客户端并未收到返回的状态,等到有数据需要发送时,仍然会发送给客户端。客户端在收到后,将会再次发送RST包给客户端,如果客户端还是没有收到,会在一定次数后放弃并自己重置状态为CLOSED。
作者:__十七
链接:https://juejin.cn/post/7038995609579159565