为了理解TCP是如何工作的,我尝试伪造自己的TCP SYN/SYN-ACK/ACK(基于教程:http://www.thice.nl/creating-ack-get-packets-with-scapy/ http://www.thice.nl/creating-ack-get-packets-with-scapy/ ).
问题是,每当我的计算机从服务器收到 SYN-ACK 时,它就会生成一个 RST 数据包来停止连接过程。
我在 OS X Lion 和 Ubuntu 10.10 Maverick Meerkat 上尝试过,都重置了连接。我找到了这个:http://lkml.indiana.edu/hypermail/linux/net/0404.2/0021.html http://lkml.indiana.edu/hypermail/linux/net/0404.2/0021.html,不知道是不是这个原因。
有谁能告诉我这可能是什么原因?以及如何避免这个问题呢?
谢谢。
你引用的文章已经很清楚地说明了这一点......
由于您没有完成完整的 TCP 握手,您的操作系统可能会尝试控制并开始发送 RST(重置)数据包,为了避免这种情况,我们可以使用 iptables:
iptables -A OUTPUT -p tcp --tcp-flags RST RST -s 192.168.1.20 -j DROP
本质上,问题在于scapy
运行在用户空间,linux内核会先收到SYN-ACK。内核将发送 RST,因为在您有机会执行任何操作之前,它不会在相关端口号上打开套接字scapy
.
解决方案(正如博客中提到的)是在内核上设置防火墙,防止其发送 RST 数据包。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)