我的代码尝试手动建立TCP握手,然后通过HTTP GET发送请求资源的数据段。
我使用原始套接字来制作报头并发送数据包,并使用libpcap来检查接收到的数据包报头。
SYN被成功地发送给接收者,然后接收者用SYNACK回复我。到目前为止,它工作正常,但是当我收到SYNACK时,我尝试ACK它,然后发送HTTP GET,这看起来不起作用。我可以在wireshark中看到标题是正常的。
所以我的问题是:我是否可以通过原始套接字ACK SYNACK,就像我使用发送SYN时使用的相同套接字接收它一样?为了实现这一点,有没有任何必要的OPTIONS与头部一起使用?
我ACKing那个SYNACK,然后我发送了一个设置了ACK和PSH标志的数据段,以便通过HTTP请求资源。我可以在wireshark上看到它们,但我没有从服务器得到响应。
发布于 2010-12-20 22:35:14
你没有理由不能使用原始套接字进行ACK,但是你的操作系统的内核堆栈也会看到它不期望的SYNACK,并发送一个RST。你有没有采取什么措施来防止这种情况发生?否则,您可能没有发送正确的SEQ/ACK号码。
https://stackoverflow.com/questions/4489537
复制相似问题