SYN和RST 学习
来源:互联网 发布:12315可以投诉淘宝小二 编辑:程序博客网 时间:2024/05/29 10:28
1. SYN 攻击原理和解决办法
三次握手的第二次,服务器端接收到了SYN信号之后就进入了SYN_RECV状态,然后发送SYN和ACK信号给客户端,等待客户端发送ACK信号进入ESTABLISHED状态,但是如果一直都等不到ACK信号,并且还有很多很多的这样的连接请求,这个时候,我们大致可以判断是发生了SYN攻击了。
当然咯,可以通过 netstat 来查看下,So easy !!!
好,既然发现了,那么如何解决呢?
先从最简单的说起:
1 , 防火墙设置超时的限制,当服务器多长时间没有收到ACK,那么防火墙就发送RST到服务器端强制关闭这个连接,问题是这个时间不太好确认,但也总是一种解决办法。
2, SYN网关收到了服务器发送的ACK信号后,马上就回复给服务器一个ACK。 同时以服务器的身份转发这SYN_ACK信号给客户端,这样假设已经连接成功。如果这个时候客户端有发送数据,那么SYN网关就转发,不然就丢弃。
3, 加个SYN代理网关,他的作用是做一个假设的三次握手,只有当他和客户端能正常连接之后,那么才去和服务器端连接,这样就过滤了非正常连接的请求。、
2.RST 报文
前面说到了解决SYN攻击,可以由防火墙来发送RST报文给服务器到某个超时时间后断开连接,那么这个RST报文是啥东西呢?
RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。
简单的说: RST报文就是强制关闭连接的报文,当发送RST报文关闭连接的时候,不必等待缓冲区的数据都发送出去,而是直接丢弃缓冲区的数据发送RST包,而接收到RST报文之后,也不用回复ACK信号进行关闭确认。
那么什么情况下会发送RST报文呢?
1.到不存在的端口的连接请求
产生复位的一种常见情况是当连接请求到达时,目的端口没有进程正在监听。对于UDP,当一个数据报到达目的端口时,该端口没在使用,它将产生一个ICMP端口不可达的信息;而对于TCP呢,服务器就会发送一个RST给客户端,告诉你小子连错了,必须关闭了重连。
2.请求超时
客户端发起请求连接的时候,就设置了一个值,如果这个范围内没有给我回复,那我就不连了。 这个时候就是发送RST给服务器,告诉你我不想连了。
3.检测半关闭连接
对一个已经收到FIN包的socket调用read方法, 如果接收缓冲已空, 则返回0, 这就是常说的表示连接关闭. 但第一次对其调用write方法时, 如果发送缓冲没问题, 会返回正确写入(发送). 但发送的报文会导致对端发送RST报文, 因为对端的socket已经调用了close, 完全关闭, 既不发送, 也不接收数据. 所以, 第二次调用write方法(假设在收到RST之后), 会生成SIGPIPE信号, 导致进程退出.
**** 另外确认一点哈,这个RST报文是对方发送过来,我接收到了然后进行处理的。
解决办法:
目的pc的端口没有在监听,请确定服务是否打开,或者client的连服务器的端口是否正确
客户端请求非法,导致服务器出现异常,服务器主动断开。
服务器重启了,重新监听端口。而客户端还是用旧的tcp链接发送报文,服务器端也会发送rst链接复位报文,因为原有的链接已经没了。
0 0
- SYN和RST 学习
- SYN和RST 学习
- Syn ack rst
- NETSTAT里的SYN,ACK,RST和FIN都是什么的缩写
- NETSTAT里的SYN,ACK,RST和FIN都是什么的缩写?
- NETSTAT里的SYN,ACK,RST和FIN都是什么的缩写?
- TCP: SYN ACK FIN RST PSH URG
- SYN, FIN, ACK, PSH, RST, URG.
- SYN Flood和SYN cookie
- TCP: SYN ACK FIN RST PSH URG 详解
- TCP: SYN ACK FIN RST PSH URG 详解
- TCP: SYN ACK FIN RST PSH URG 详解
- TCP: SYN ACK FIN RST PSH URG 详解【转】
- TCP连接:SYN ACK RST UTG PSH FIN
- TCP—— SYN、ACK 、FIN、RST、PSH、URG 详解
- TCP协议: SYN ACK FIN RST PSH URG 详解
- TCP控制字段标志:URG、ACK、PSH、RST、SYN、FIN
- TCP连接:SYN ACK RST UTG PSH FIN
- python 时间戳处理
- 临时文档8--好恶心的代码
- 《数据结构与算法JavaScript描述》
- Finding the longest Increasing subsequence
- css滑动鼠标到img后,切换图片
- SYN和RST 学习
- java泛型学习
- js中的异常处理try...catch使用介绍
- nginx安装
- opencv 高斯滤波,通用形态学
- Java-Jdbc,JDBC连接Oracle11g实例:
- Cookie/Session机制详解
- Gabor变换
- 使用 Spring 2.5 基于注解驱动的 Spring MVC