我可以使用BSD原始套接字向成功接收的SYNACK发送ACK响应吗?

时间:2010-12-20 12:18:31

标签: tcp raw-sockets

我的代码尝试手动建立TCP握手,然后通过HTTP GET发送请求资源的数据段。

我正在使用原始套接字来制作标头并发送数据包,并使用libpcap来检查收到的数据包标头。

SYN已成功发送给接收方,然后接收方以SYNACK回复我。到目前为止,它可以正常工作,但是当我收到SYNACK时,我会尝试ACK,然后再发送HTTP GET,这看起来不起作用。我可以看到wireshark中的标题是好的。

所以我的问题是:我可以ACK通过原始套接字SYNACK,就像我使用我用来发送SYN的套接字一样接收它吗?为了实现这一点,是否需要OPTIONS与标题一起使用?

我正在确认SYNACK,之后我发送了一个设置了ACKPSH标记的段,以便通过HTTP请求资源。我可以在wireshark上看到它们,但我没有得到服务器的响应。

1 个答案:

答案 0 :(得分:0)

没有理由你不能ACK使用原始套接字,但是你的操作系统的内核堆栈也会看到它不期望的收到的SYNACK并发送RST。你在做什么来防止这种情况发生吗?否则,您可能没有发送正确的SEQ / ACK号码。