Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tcp 我是否可以使用BSD原始套接字向成功接收的SYNACK发送ACK响应?_Tcp_Raw Sockets - Fatal编程技术网

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

Tcp 我是否可以使用BSD原始套接字向成功接收的SYNACK发送ACK响应?,tcp,raw-sockets,Tcp,Raw Sockets,我的代码尝试手动建立一个TCP握手,然后通过httpget发送一个请求资源的数据段 我使用原始套接字创建报头并发送数据包,使用libpcap检查接收到的数据包报头 SYN成功发送给接收者,然后接收者回复我一个SYNACK。到目前为止,它可以工作,但是当我收到SYNACK时,我尝试ACK它,然后发送httpgetnext,这看起来不起作用。我可以在wireshark中看到标题是正常的 因此,我的问题是:我可以通过原始套接字ACK接收SYNACK,就像我使用发送SYN的相同套接字接收它一样吗?是否有

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

我使用原始套接字创建报头并发送数据包,使用libpcap检查接收到的数据包报头

SYN
成功发送给接收者,然后接收者回复我一个
SYNACK
。到目前为止,它可以工作,但是当我收到
SYNACK
时,我尝试
ACK
它,然后发送
httpget
next,这看起来不起作用。我可以在wireshark中看到标题是正常的

因此,我的问题是:我可以通过原始套接字
ACK
接收
SYNACK
,就像我使用发送
SYN
的相同套接字接收它一样吗?是否有任何必需的
选项
与标题一起使用以实现此目的


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

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

是的,我通过在iptables上设置规则来阻止内核执行此操作。请使用Wireshark中显示的
SYN
SYNACK
ACK
TCP头的内容更新您的问题。可能会出现很多问题。我建议比较客户端和服务器端的数据包捕获。可能出错的事项列表包括tcp段的错误ack编号(应为syn ack seq number+1)校验和、ip数据包的校验和,并且nic卡上可能存在校验和卸载,这可能会更改校验和。