Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

Wireshark 开发愿望清单

本页整理 Wireshark Wiki 中面向内部代码、架构和开发基础设施的愿望清单。它不是面向普通用户功能请求的 WishList,而是历史上开发者记录“可能值得做”的工程改进。

项目说明
用途汇总内部代码功能、架构变更、性能、构建、抓包、GUI、打印等开发愿望。
适用场景了解 Wireshark 历史技术债、寻找架构讨论线索、判断某个想法当时归入哪个开发领域。
易混点列表导入自 2020 年,部分事项已经完成、过时或被后来架构替代。不要把这里的“愿望”直接当作当前路线图或待办单。

分类导航

分类关注点原文状态
通用 / 未分类API 文档、libwireshark 会话化、多文件处理、性能和并行处理。多为架构愿望和讨论。
Dissector 基础设施字符串、时间、TLV、BCD、隧道连接等解析基础能力。多为 dissector 框架改进。
Dissector 生成从 NetPDL、ONC RPC IDL 等规范生成 dissector。设想类条目。
Taps通用表格、树形表和图形展示机制。原文提到部分已由 stats tree 机制完成。
抓包文件读取gzipped 文件随机访问、文件 reader/writer 信息结构重构。部分条目原文已标注在 trunk 中完成一部分。
抓包抓包逻辑库化、抓包子进程优先级。原文提到大多数抓包相关内容后来在 dumpcap 中。
GUI在线帮助、替代用户界面、桌面集成 API。多为历史 UI 架构讨论。
打印原生 Windows 文本打印、图形打印。打印子系统改进。
构建过程make-version.pl、静态链接、Win32 构建、插件布局、Heimdal 检测。构建系统愿望。
已完成历史上已完成或已有解决方案的事项。用于保留历史边界。

通用 / 未分类

愿望原文要点边界
强化 API 文档为与 dissector 开发者相关的 API 文件添加 doxygen 标记并生成文档。原文作者署名 Ulf Lamping。
libwireshark 会话化引入类似 epan_session 的结构,跟踪仅属于特定文件的 dissector 内存,减少全局状态。原文将其与多文件处理、外部应用使用 libwireshark、Mac OS X 原生应用模型联系起来。
PDML 导出兼容性修复 PDML 导出,使其兼容 analyzer.polito.it 的 PDML 规范。原文给出外部规范链接。
完成 Developer's Guide继续完善 Wireshark Developer's Guide。原文作者署名 Ulf Lamping。
减少重复解剖解剖后保留更多信息,避免显示过滤器或统计窗口变化时大量重新处理。性能优化方向。
多处理器 / 多线程大型抓包排序和解剖希望利用多核;讨论指出 Wireshark 当时是单线程,且解剖存在跨包依赖。原文特别说明部分协议存在跨会话依赖,例如 SIP、H.323、MGCP 决定 RTP/RTCP 流。
按需加载 dissector不要求所有 dissector 常驻内存,只加载依赖信息,必要时再加载实际 dissector。原文提出“协议注册的运行时配置”可能作为依赖信息来源。

Dissector 基础设施

愿望原文要点说明
任意字符集字符串处理字符串值应保存原始字节、编码指示,以及按需转换后的 UTF-8 文本。只有显示或过滤比较时才需要转换。
字符集数据库与 iconv讨论是否使用私有 iconv、GLib 包装器或 IANA character sets 标识字符集。原文涉及不同 OS、Windows code page、MacRoman、EBCDIC 等兼容性。
Unicode 显示策略不可显示内容可转为 Unicode FFFD “REPLACEMENT CHARACTER”,哑终端可显示为 ?。保留原文观点。
FT_RELATIVE_TIME 显示使用 time_secs_to_str() 等显示相对时间,并提供显示分辨率设置。避免把秒级字段显示成纳秒精度。
隐藏字段改为子树原文认为隐藏字段对可用性不友好。是否属于主愿望清单在原文中有讨论。
通用 TLV 处理例程为常见 TLV 段提供共享解析机制,统一处理 length 合法性、避免畸形数据导致死循环。可覆盖 IP/TCP options、PPP 控制协议 options 等类似结构。
新字段类型 FT_BCD / FT_PACKED_BCD支持 BCD、PACKED_BCD 以及 Telephony BCD 的编码解释。原文列出大小端解释示例。
按 IP 地址注册 dissector例如按 multicast IP 注册 dissector。注册机制愿望。
更好处理隧道连接改善一个 frame 包含多层端点连接时的状态、重组和显示过滤能力。原文举例:按封装内某一特定层过滤,如内层 TCP 目的端口。

Dissector 生成

愿望原文要点风险边界
NetPDL dissector 生成器读取协议 NetPDL 规范并生成 dissector,可能减少手写 bug。原文引用的 NetPDL 页面提示其为早期草案,不能视为最终规范。
运行时解释 NetPDL读取并解释 NetPDL 的机制可能对最终用户有用。与生成器思路相邻。
ONC RPC IDL 生成器采用 Sun rpcgen IDL,生成基于 ONC RPC 协议的 dissector。设想类条目。

Taps

愿望原文要点进展提示
通用表格机制tap 注册标题和列,添加或更新行;表实际应是一棵可展开子行的树。目标是减少 GUI 代码,让 TShark 和 Wireshark 共用 tap 逻辑。
表格导出通用代码可将表保存为 CSV 等格式。与表格机制配套。
图形绘制为表格提供折线图、skyline graph、条形图、饼图等绘图代码。原文询问是否可使用 GNU libplot。
stats tree原文指出至少部分表格机制已通过 stats tree 完成。保留历史说明。

抓包文件读取

愿望原文要点备注
gzipped 文件随机访问自有 gzip 读取代码在读取时保留压缩目录快照,提升向前和向后 seek 效率。原文提到 zlib examples/zran.c。
插拔式解压 API支持插入 bzip2 等其他解压器,也可处理缺少 zlib 的系统。原文称 trunk 中已完成一部分,但仍缺少忽略某些 CRC 错误、插入其他解压器或压缩器的机制。
文件读取代码重构将多个 reader/writer 信息数组和结构合并为 file_type_subtype_info。原文还提到 heuristic_uses_extension() 调用成本、filetap 代码重复等问题。

抓包

愿望原文要点后续边界
抓包逻辑库化在 wiretap 中处理抓包,或建立 libpcap/WinPcap 包装层,减少 Wireshark 与 TShark 各自处理的重复。原文讨论认为 wiretap 更适合文件 I/O;抓包相关内容可剥离到新库。
dumpcap原文补充:大多数抓包相关内容现在都在 dumpcap 中。说明该愿望后来已有架构演进。
提高抓包子进程优先级将抓包子进程优先级提高到略高于 normal,以减少丢包可能。原文称 Windows 上有经验,Unix 上没有实际经验。

GUI

愿望原文要点说明
在线帮助如果存在原生桌面帮助查看器则使用,否则使用 Web 浏览器。原文讨论 OS X、Microsoft HTML Help、GNOME、KDE 等帮助系统。
面向任务的帮助在线帮助不一定只是手册在线版,也可为用户执行具体操作提供即时帮助。原文倾向将其加入手册,避免另一份文档。
替代用户界面支持 Qt/KDE、完整 GNOME、原生 Windows、原生 Aqua、文本模式 curses 等 UI。原文认为大量工作在基础设施,而不只是界面。
多 UI 共享代码从单个代码库为多个 UI 生成代码,并让插件 tap 能包含 GUI 或非 GUI 功能。目标是避免 UI 更新分散到多处。
Portland APIs如果成为官方稳定 API,在可用时用于打开 URL、确定按钮顺序等。原文提到 OS X、Windows 或无 Portland 平台可有自有实现。

打印

愿望原文要点
原生 Windows 文本打印为 print stream 对象添加新实现,使用 Win32 printing API,不再通过临时文件转印。
图形打印向 print stream 对象添加更多方法,以打印 tap 中支持的图表和图片。

构建过程

愿望原文要点备注
make-version.pl每次 make 只运行一次 make-version.pl。构建效率。
静态链接--enable-static 不再能在所有平台上构建,因此尝试“尽可能静态地”链接。原文举例 Suse 9.0。
原生 Win32 构建支持使用 auto-tools 和 gcc 的原生 win32 构建。构建平台支持。
插件移入 epan 树将插件移入 epan 树。原文讨论 GTK 依赖插件、ASN.1 插件、小型插件和多文件插件的边界。
链接布局将 libs/objects 移到适当位置以链接到 LDADD_xxx 中。构建系统整理。
Heimdal 检测让 heimdal 检测对所有人都有效。依赖检测。

已完成事项

已完成条目原文说明
About 框作者 GtkWidget作者列表很多,后来移到 AUTHORS 文件和 man page。
GTK 代码目录完成将 GTK 相关代码移入 gtk/ 子目录。
构建过程将 epan/configure.in 合并回顶层 configure.in。
tap 插件机制一旦可拥有无 UI 代码的 tap,就提供 tap 作为插件的机制。
远程协议抓取想法利用 SSH_CLIENT 变量和 tcpdump 进行远程抓取的想法。
TCP Graph将 TCP Graph 代码转换为使用 TCP tap,避免自行解剖链路层、IP 和 TCP header。
Win32 setup target解包 zip 前删除旧目录,避免遗留旧文件。
GtkCList 替代品支持动态列,允许不重启即可添加、删除或移动列;原文补充 Wireshark 1.4.x 后基于 GtkTreeView 的列表成为默认。
make-reg-dotc.py 缓存缓存构建 register.c 所需信息。
dissector 与支持文件移入 epan原文讨论后认为 dissector 需要的大部分内容已在 epan 中,g711.[ch] 内容已移到 codecs/。

来源边界

导入自 https://wiki.wireshark.org/Development/Wishlist,时间为 2020-08-11 23:13:27 UTC

相关 Wireshark Wiki 页面

网络分析技术档案