gpt4 book ai didi

c - 如何识别接入点中 UDP 数据包的来源?

转载 作者:太空宇宙 更新时间:2023-11-03 23:24:50 25 4
gpt4 key购买 nike

我正在创建一种接入点。

我从我的机器上捕获所有类型的所有数据包,以便在转发它们之前根据默认的服务质量 (QoS) 等级对它们进行优先级排序。

通过使用 ETH_P_ALL 参数调用 socket ,我可以获得任何协议(protocol)类型的所有传入数据包:

    if ((sockfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) == ERROR)  {
perror("socket");
exit(1);
}

通过使用 ethhdriphdrtcphdrudphdr 结构,我无法检索有关哪个应用程序的信息发送每个数据包。

但是Voip和SNMP都是用UDP的,我不知道是哪两个给我发的UDP包。

我想知道哪些应用程序正在发送 UDP 数据包,因此我可能会遵循 QoS 类并在其他数据包(例如电子邮件)之前转发一些数据包(例如 session 语音)。

为了识别协议(protocol),我应该使用 TCP 和 UDP 端口号列表吗?

最佳答案

您无法确定哪个应用程序发送了数据包 - 只有发送者自己知道这一点。如果我理解正确的话,你想要的是检测正在使用的协议(protocol)。那么你有 2 种可能性:

  1. 假设一个应用程序基于在 TCP/UDP 数据包上设置的目标端口 - list of TCP/UDP port numbers或者您的 /etc/services(如果您使用的是 Linux/Unix/OSX/etc)可能会有帮助;

  2. 分析数据包内容并将其与已知协议(protocol)签名进行匹配(就像 IDS 所做的那样 - 参见 Snort rules 例如)。请注意,您可能需要某种形式的 conntrack 才能使这项工作可靠;

关于c - 如何识别接入点中 UDP 数据包的来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29801881/

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