1

我目前正在开发 TCP/IP 堆栈;我在 Linux 下运行,我使用 libnet(用于传输)和 libpcap(用于捕获以太网帧)来模拟链路层。

我已经开始研究 TCP,更具体地说是主动打开连接。基本上,我发送一个 SYN 数据包,远程主机以 SYN-ACK 响应,我必须通过 ACK 确认。问题是在我收到一个 SYN-ACK 后,一个 RST 数据包立即发送到服务器,可能是由内核,而不是我自己的程序。我认为 libpcap 捕获并由我的网络堆栈分析的数据包也被内核捕获,内核不明白为什么他从从未尝试连接的主机收到 SYN-ACK 数据包,因此发送 RST 取消联系。

所以基本上,连接在它甚至还没有建立的时候就被重置了,这让我很难尝试其他测试。

我该如何解决这个问题?提前致谢。

4

1 回答 1

0

您可以使用 iptables 设置防火墙规则,以防止内核响应您的连接。libpcap 在防火墙拒绝之前获取数据包,因此您仍然可以读取它们并自己响应它们。

于 2013-07-24T20:00:24.120 回答