多播数据包在服务器之间丢失,多播工作在不可靠的 UDP 上,因此预计会丢失数据包
问题:是否有方法或实用程序可以在操作系统内核级别捕获 udp 数据包?
答案1
这个问题目前还不太清楚,但如果您在 Linux 上寻找 UDP 数据包捕获工具,您可以使用tcpdump
它,它应该默认安装在您的发行版中或安装在您的发行版的存储库中。
捕获主机具有可见性的所有 UDP 数据包的示例(以 root 身份或使用 sudo 查看所有数据包,甚至包括那些不是发往主机而是“经过”的数据包):
tcpdump -i <net_interface> -vv udp
<net_interface>
用 eth0、p1p1、ens32 等替换您当前的网络接口。
您可以使用-w <file>
交换机将数据包存储在文件中,以便稍后使用 tcpdump 或 wireshark(GUI 工具)读取。
答案2
关于在 Linux 服务器上捕获 UDP,您可以使用以下内容。
tcpdump -nqi eth0 -s0 -w /tmp/$HOSTNAME-udp-trace.pcap
在两个服务器上循环运行 netstat 命令:
while true; do date >> /tmp/netstat_-s-$HOSTNAME.out.txt; netstat -s >> /tmp/netstat_-s-$HOSTNAME.out.txt; sleep 1; done