我编写了一些程序,假装建立连接,然后发送数据包;通过在 linux 和 C 语言中使用原始套接字。
幸运的是,由于连接已建立,我已经很好地实现了该程序。我现在的问题是,我不能花太多时间,通过从服务器接收 ACK 来猜测如何填充 psh-ack(数据包),并且还可以在 netcat 的输出缓冲区上看到数据...
那么,请问有人可以帮忙格式化数据包吗?我花了很多时间,给你一个完整的流量日志会很容易。
提前致谢。希望尽早提出建议...;)。
P.S:如果不清楚,我假装实现自己的用户空间 TCP 堆栈只是为了加快 TCP 网络的进程,只是为了将网络进程嵌入到非阻塞程序执行中,以及快速的网络结果集流程。
正如你们中的一些人可能知道的,Linux 盒子会自动向发送 SYN_ACK 的服务器发送应答,但 RST 连接,并且不可能通过实现 TCP 堆栈来建立连接。所以,我应该说,我正在使用名为“TCP/UDP 黑洞 DoS 预防”的 grsec 保护,它可以防止 Linux 内核向“不连贯”的网络流量发送不希望的响应。
仅此而已。
最佳答案
ip.len = tcp_data_sz + tcphdr_sz + iphdr_sz
tcp.id = id + 1
tcp.seq = same as ACK of three way handshake
tcp.ack_seq = same as ACK of three way handshake
pseudo_hdr.len = tcp_data_sz + tcphdr_sz
tcp.check = (size: psehdr + tcphdr + tcpdata) (pad with 00's until size % 2 = 0).
此链接很有用:http://www.arcesio.net/checksum/checksumTCP.html (大部分西类牙语和英语编辑)。
感谢所有 4 位观看者。
Linuxios:感谢您的精彩评论,现在我以自己的方式找到了解决方案。 (我的方法比常见的linux界面更快:)。
关于c - 在Linux中使用原始套接字发送原始数据(PSH-ACK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15637695/