我的代码试图手动建立一个TCP
握手,然后它通过HTTP GET
发送一个请求资源的数据段。我可以使用BSD原始套接字向成功接收的SYNACK发送ACK响应吗?
我使用原始套接字来制作标题并发送数据包,并使用libpcap检查收到的数据包标题。
SYN
已成功发送给接收方,然后接收方以SYNACK
回复我。到目前为止它工作正常,但是当我收到SYNACK
时,我试着ACK
它,然后发送HTTP GET
接下来,这看起来不行。我可以在wireshark中看到头文件可以正常使用。
所以我的问题是:我可以通过原始套接字ACK
SYNACK
就像我收到它使用相同的套接字我用来发送SYN
?是否有任何要求OPTIONS
与标题一起去完成?
我确认序号是SYNACK
,只是在那之后我发送一个段,以便通过HTTP
请求资源设置ACK
和PSH
标志。我可以在wireshark上看到他们,但我没有收到服务器的回应。
如Wireshark所示,用'SYN','SYNACK'和'ACK' TCP标头的内容更新你的问题。 – caf 2010-12-21 01:13:50
有很多事情可能会出错。我会建议比较客户端和服务器端的数据包捕获。可能出错的事情列表包括错误的确认号(它应该是syn-ack seq number +1)tcp段的校验和,ip包的校验和,也可能会在您的nic卡上进行校验和卸载,这可能会改变校验和。 – 2013-11-16 16:52:35