首页 > 编程知识 正文

怎么解决服务器rst,rst胎位

时间:2023-05-06 10:49:12 阅读:58981 作者:776

复位信息块RST: flags [R.]

1、什么是RST? 接收到RST后,会进行哪些操作?

RST表示复位,用于异常关闭连接,对TCP的设计至关重要。 如上所述,发送RST数据包并关闭连接时,不需要等待缓冲器中的所有数据包都被发送,而是直接丢弃缓冲器中的数据包并发送RST数据包。 接收端接收到RST分组后,也不需要为了确认而发送ACK分组。

2、RST分节发生在三种情况下:连接建立、中途发送数据、连接关闭。

(1)访问/连接不存在的端口

服务器端口未打开,客户端将连接

)2)向处于TIME_WAIT状态的端口发出连接请求时

当客户端开始连接到服务器端口且服务器端口处于TIME_WAIT状态时,客户端将监听RST段

)3)异常终止连接

当初,a和b已经建立了连接

)1)但是,a使用套接字选项SO_LINGER向b发送RST段,在这种情况下,a缓冲区中排队的所有数据都将被丢弃。 (详情请参阅插座选项的详细SO_LINGER。 ) ) ) ) ) ) ) ) ) )。

)2) b在接收到a发送来的RST段后,异常切断a和b之间的连接

(4)半开连接的处理

当初,a和b已经建立了连接

)1) a关闭连接或异常终止,但b未收到FIN段)例如,网络出现故障)。 此时,AB双方维持原始连接,但是即使a重新启动,也没有任何该连接的信息的状态称为半开状态。 半开状态的连接称为半开连接。

)2) b向a写入数据后,a将RST段回复给b

总之,向半开状态的连接写入数据后,对方会对RST段做出响应。

3、RST攻击

在a和服务器b之间建立了TCP连接,此时c伪造TCP分组发送到b,b异常切断与a的TCP连接就是RST攻击。 事实上,上述RST标志位的功能表明了这种攻击是如何发挥作用的。

那么,伪造什么样的TCP数据包才能达到目的呢? 我们从上到下看。

)1)假设c伪装成从a发送来的数据包,如果该数据包是RST数据包,那么b无疑会废弃与a的缓冲区上的所有数据,强制切断连接。

)2)假设c伪装成a发来的分组,如果该分组是SYN分组,则b表示a疯了) )在AB正常连接时,a又请求建立新的连接)==B自己向a发送RST分组,其

这两种方式都可以取得复位攻击的效果。 好像很可怕,但关键是,怎么能伪造成a到b的包呢? 这里有两个重要的因素。 源端口和序列号。

)1)序列号问题对应于滑动窗口,如果伪造的TCP分组需要序列号,并且序列号值在a之前发送到b时不在b滑动窗口内,则b自行丢弃。 所以我们必须找到落入当时AB之间滑动窗口的序列号。 这可以用暴力解决。 一个序列长度为32位,值范围为0-4294967296,因此如果窗口大小在上图中类似于我捕获的windows下的65535,只需将其除以即可,最多65537(4294967296/65535=65537 )可见,RST分组很小,IP报头TCP报头也是40字节,计算我们的带宽,可以看到这真的只需要几秒钟。

)所有一个TCP连接都是4组,并且源IP、源端口、目标IP和目标端口唯一确定一个连接。 因此,如果c伪造从a到b的分组,请在上述IP和TCP头部中填写所有源IP、源端口、目标IP和目标端口。 在这里,b作为服务器公开了IP和端口,a是我们想插手的目标。 IP当然知道,但a的源端口不清楚。 这是因为a有可能是随机生成的。 当然,如果能在windows和linux等一般操作系统中找到生成source port的法则,就能想办法了。

那么,序列号不是问题。 a的端口会变得麻烦。 如果每个操作系统无法完全随机生成源端口,或者黑客们可以通过其他方式获取source端口,则RST攻击会产生简单而严重的后果。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。