Appearance
Appearance
本页整理 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。 | 原文提出“协议注册的运行时配置”可能作为依赖信息来源。 |
| 愿望 | 原文要点 | 说明 |
|---|---|---|
| 任意字符集字符串处理 | 字符串值应保存原始字节、编码指示,以及按需转换后的 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 目的端口。 |
| 愿望 | 原文要点 | 风险边界 |
|---|---|---|
| NetPDL dissector 生成器 | 读取协议 NetPDL 规范并生成 dissector,可能减少手写 bug。 | 原文引用的 NetPDL 页面提示其为早期草案,不能视为最终规范。 |
| 运行时解释 NetPDL | 读取并解释 NetPDL 的机制可能对最终用户有用。 | 与生成器思路相邻。 |
| ONC RPC IDL 生成器 | 采用 Sun rpcgen IDL,生成基于 ONC RPC 协议的 dissector。 | 设想类条目。 |
| 愿望 | 原文要点 | 进展提示 |
|---|---|---|
| 通用表格机制 | 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 上没有实际经验。 |
| 愿望 | 原文要点 | 说明 |
|---|---|---|
| 在线帮助 | 如果存在原生桌面帮助查看器则使用,否则使用 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