首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当wireshark还在UDP端口中使用Radius端口时,它如何识别DNS流量?我怎么知道呢?

当wireshark还在UDP端口中使用Radius端口时,它如何识别DNS流量?我怎么知道呢?
EN

Stack Overflow用户
提问于 2015-10-31 11:41:38
回答 2查看 369关注 0票数 0

我的程序正在进行数据包分析。我现在有一个关于DNS/Radius的问题。DNS使用UDP端口53 Radius使用UDP端口1645/1646/1812/1813

逻辑是,如果我看到53,那么它就是DNS数据包;如果我看到1812,那么它就是DNS数据包。它是一个Radius数据包。然后问题来了,一些DNS数据包也使用Radius端口,例如UDP端口src 53/dst 1812,反之亦然。那么我的程序就不能处理这个了。

但wireshark不会感到困惑,我想知道它是如何知道真正的协议的。它是否尝试对有效载荷进行解码?然后告诉你呢?或者下划线的libpcap之类的东西能够告诉我们真正的协议类型。那么,如果我使用libpcap中的代码,libpcap是否提供了告知传输协议的功能?

有人能帮帮忙吗?我用谷歌搜索了一段时间,但还没有得到任何结果。

谢谢,康

EN

回答 2

Stack Overflow用户

发布于 2015-10-31 15:40:29

Wireshark使用各种技术来识别协议。对于DNS和RADIUS,它基于端口号执行此操作。执行此操作的代码首先查找数字较低的端口号,如果找不到该端口号的分析器,则查找数字较高的端口号,因此在端口53和1812之间传输的数据包将被标识为DNS而不是RADIUS,因为DNS的端口53在数字上低于RADIUS的端口1812。

如果端口1812和53之间碰巧有RADIUS流量,Wireshark将会混淆。

解决这个问题的唯一方法是让DNS解析器尝试查看数据包数据并猜测它是否是DNS,或者让RADIUS解析器尝试查看数据包并猜测它是否是RADIUS,如果它不是该解析器的数据包,则返回"this isn not for me“指示,以便可以尝试其他解析器。

没有神奇的解决方案可以保证正确识别运行在TCP或UDP上的所有协议。只有基于端口号和数据包内容的启发式方法;它们可能会在99.44/100%的情况下得到正确的答案,但仍然会有56%/100%的时间不起作用,您必须手动干预(例如,使用"Decode As...“Wireshark中的机制,或TShark中的-d命令行等效项)。

而且,正如Steffen Ullrich所指出的,libpcap不会为您做这些事情;使用libpcap的不同应用程序(tcpdump、Wireshark等)可能会有不同的做法。

票数 2
EN

Stack Overflow用户

发布于 2015-10-31 12:20:56

libpcap不提供这样的功能。一件事是,wireshark将检查数据包并检测其结构,但会限制它在使用的端口/协议中查找的内容。另一件事是,您通常找不到从端口53发往radius服务器的数据包,也找不到从端口1812发往DNS服务器的数据包,因为客户端通常隐含地使用高得多的ephemeral port

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33447807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档