gpt4 book ai didi

Linux 应用程序在没有套接字的情况下发送 UDP

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:30 24 4
gpt4 key购买 nike

各位程序员。我正在使用 libnetfilter_queue 模块和 iptables 规则监控传出流量ipatbles -I OUTPUT 1 -p all -j NFQUEUE --queue-num 11220

某个名为 Jitsi(在 Java 上运行)的应用程序表现出前所未有的奇怪行为:我处理NFQUEUE数据包的监控程序清楚地显示正在发送UDP数据包,但是当我调查时:"/proc/net/udp"和 "/proc/net/udp6"它们是空的,而且 "/proc/net/protocols"有一列 UDP 的 "sockets",它是 0。但是 UDP 数据包不断发送。然后大约一分钟后,“/proc/net/udp”和“/proc/net/protocols”开始显示有关 UDP 数据包的正确信息。又过了一会儿,在发送 UDP 数据包时,其中没有任何信息。

我唯一的结论是,应用程序有可能在不创建套接字的情况下发送 UDP 数据包和/或有可能创建一个套接字,然后删除它(以便内核认为没有套接字)并且仍然使用一些模糊的向外发送数据包的方法。

请问有人对这种行为有想法吗?

最佳答案

两个想法:

尝试通过 strace 运行应用程序并查看输出。

您也可以尝试通过 systemtap 运行它带有用于套接字操作的过滤器。从该链接:

probe kernel.function("*@net/socket.c").call {
printf ("%s -> %s\n", thread_indent(1), probefunc())
}
probe kernel.function("*@net/socket.c").return {
printf ("%s <- %s\n", thread_indent(-1), probefunc())
}

关于Linux 应用程序在没有套接字的情况下发送 UDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7558456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com