networking - Wireshark如何计算短帧数
问题描述
Statistics->Protocol Hierarchy
显示各种统计信息,包括短帧计数。如何wireshark
计算这个,它认为什么是短帧?是否与捕获期间故意截断的数据包相同?(在这种情况下caplen
,字段struct pcap_pkthdr
将小于len
,即 IP 有效负载大小)。
但是,当我实现简单的应用程序(使用libpcap
)来读取 pcap 并以这种方式计数(caplen 与 len)时,我的数字略高于wireshark
报告的数字。
Wireshark 版本 2.2.6,捕获包含 TLS,即通过 TCP。Wireshark ProtocolHierarchy 菜单报告 15240 个 SSL 数据包,以及这 15240 个中的 13640 个短帧。
解决方案
Wireshark 如何计算这一点,它认为什么是短帧?
当 Wireshark 捕获到BoundsError
异常ScsiBoundsError
时,它会将帧标记为短帧。
proto_short = proto_register_protocol("Short Frame", "Short frame", "_ws.short");
来自epan/show_exception.c:81-104
case BoundsError:
{
gboolean display_info = TRUE;
....................................
if (display_info)
col_append_str(pinfo->cinfo, COL_INFO, "[Packet size limited during capture]");
proto_tree_add_protocol_format(tree, proto_short, tvb, 0, 0,
"[Packet size limited during capture: %s truncated]", pinfo->current_proto);
/* Don't record BoundsError exceptions as expert events - they merely
* reflect a capture done with a snapshot length too short to capture
* all of the packet
* (any case where it's caused by something else is a bug). */
}
是否与捕获期间故意截断的数据包相同?
是的,应该是。但我想说的是,可能存在细微差别,因为 Wireshark 不会像您在应用程序中那样直接计算短帧,但计数取决于可能由于某些错误而不会引发的异常。
(在这种情况下,struct pcap_pkthdr 的 caplen 字段将小于 len,即 IP 有效负载大小)。
正确的。
然而,当我实现简单的应用程序(使用 libpcap)来读取 pcap 并以这种方式计数(caplen 与 len)时,我的数字略高于wireshark 报告的数字。
它要么是 Wireshark 中的错误,要么是您的代码中的错误。您可以使用_ws.short
过滤器查看 Wireshark 中的所有短帧,然后尝试查找您的应用检测为短但 Wireshark 没有的帧。
Wireshark 版本 2.2.6,捕获包含 TLS,即通过 TCP
你的版本有点过时了。最新版本3.2.1
因此考虑升级或至少测试两个版本。
推荐阅读
- python - 在数据框中添加一行并命名
- matplotlib - Matplotlib 热图真的很小
- git - 为什么我的来自 VM 的 Git 提交显示为来自完全不同的人?
- java - java类型擦除如何处理'?
- node.js - Regix:从 MediaWiki XML 文档中提取模板列表
- flutter - 如何将 Firestore DocumentSnapshot 转换为 dart 对象实例
- python - 在python中提取href
- haskell - Haskell 中的递归定点函数
- javascript - 'class' 语法在 javascript 中是如何工作的?
- python - Pygame中的随机