我正在尝试使用原始套接字将数据包注入网络,但不知何故似乎无法让接收器捕获此数据包。我如何检查linux网络堆栈是否丢弃了数据包?有人可以指出一些工具吗?
答案 0 :(得分:1)
我不知道直接访问网络堆栈(不是说这是不可能的,只是我不知道如何做就可以了),但你可能会使用Wireshark或类似的东西看看是否有NIC在接收端接收数据包。您也可以在发送端使用它来检查数据包是否正确发送(或者实际上是在第一时间发送,如果这是问题),因为它允许您检查字段/等。个别数据包。真的很有用的工具。
请注意,该网站没有针对Linux版本的直接下载,但会列出各种Linux发行版的第三方软件包。
答案 1 :(得分:1)
选项包括wireshark和tcpdump,或者tcpdumping到pcap文件中,然后使用wireshark进行分析。一种选择可能也是使用strace或类似工具来跟踪执行发送的系统调用。
答案 2 :(得分:0)
另一个选择是使用BPF在内核中检测TCP堆栈。您可以看一下TCP的一些已经存在的脚本,例如tcplife: