wireshark演进之路——从GTK到Qt

Wireshark 自 1998 年诞生至今,已有超过26年的历史了。它最早由 Gerald Combs 创建,最初名为 Ethereal。2006 年,Ethereal 更名为 Wireshark,并继续发展成了全球领先且人尽皆知的网络协议分析工具,其GUI演变就是其中非常重要的一环。

一、始于GTK+

1998 年首次发布时,它的前身 Ethereal 就是基于 GTK+ 框架构建的。

GTK+ 是一个跨平台的开源 GUI 库,特别适合在 Linux 环境中开发图形界面,因此在 Wireshark 项目早期成为了首选,GTK+ 帮助 Wireshark 实现了较为出色的跨平台支持和用户界面。然而,随着 Wireshark 功能需求的增加以及跨平台兼容性的提升要求,GTK+ 在一定程度上遇到了瓶颈。

2013年10月wireshark官方博客公布"We're switching to Qt."并解释这将是一个复杂的工作需重写数千行代码......

https://blog.wireshark.org/2013/10/switching-to-qt/

简单说:性能和跨平台都遇到瓶颈

二、到qt的华丽转身

wireshark从13年宣布使用qt,2年后到2015年版本2.0版本Qt 正式成为 Wireshark 的默认图形框架。切换ui框架对成熟的wireshark来说时间非常复杂的工作,整个切换过程耗时约数年,分阶段进行,包括初期的评估、重构、移植以及后续的测试和优化。

为减少对用户影响,gtk+和qt在2.0版本并行发布,也就是两条腿走路,一直到2019年发布3.0版本结束了gtk+支持,整个过程前后6年。

三、Wireshark 选择 Qt 的原因

  1. 跨平台支持增强:虽然 GTK+ 也支持跨平台,但在 Windows 和 macOS 上体验较为欠缺。Qt 的跨平台兼容性更强,能够在不同平台上提供一致且美观的界面效果。这对于希望无缝体验 Wireshark 的用户来说尤为重要。

  2. 现代化的用户界面:Qt 提供了更加丰富和灵活的控件支持,可以帮助 Wireshark 提升用户界面的现代化水平。通过 Qt,Wireshark 不仅能实现更精美的视觉效果,还能带来更流畅的用户体验。

  3. 性能与资源效率:Qt 的控件在性能上进行了高度优化,可以帮助减少资源占用,提升软件的整体流畅度。相比之下,GTK+ 在处理复杂界面和多线程操作时有时会显得力不从心。

  4. 开发者支持与社区:Qt 具有庞大的开发者社区和丰富的文档资源,为 Wireshark 开发团队提供了更强大的支持。在遇到问题时,开发者可以更轻松地从社区中获得帮助,缩短开发周期。

  5. 长期可维护性:随着 Wireshark 的用户量和功能需求不断增长,GTK+ 的一些旧有特性开始显得滞后,维护成本逐步上升。Qt 的模块化设计使得未来的代码维护和功能扩展更为便捷。

四、Wireshark 转向 Qt 带来的影响

  1. 用户体验提升:从 GTK 转向 Qt 后,Wireshark 的界面更加直观、流畅,功能布局也更加合理,用户的学习曲线得以缩短。Windows 和 macOS 用户尤其能感受到界面响应速度的提升。

  2. 功能增强:Qt 允许开发团队更轻松地引入新功能,Wireshark 中的一些界面元素(如过滤器、选项卡和日志窗口)变得更灵活,能够提供更符合用户需求的使用体验。

  3. 开发效率提升:Qt 提供了强大的集成开发环境(如 Qt Creator),帮助 Wireshark 团队大幅提升开发效率。Wireshark 的开发者可以更便捷地使用现代化的 C++ 功能和 Qt 的高性能库来优化代码,确保新版本的稳定性。

  4. 长期稳定性:Qt 的更新频率和长期支持使得 Wireshark 的维护变得更为可控,开发团队可以更加专注于优化软件性能、增强功能,而不必担心技术栈带来的负担。

五、总结

Wireshark 从 GTK+ 转向 Qt 是一个顺应技术发展趋势、优化用户体验的重要决策。通过这一转变,Wireshark 能够更好地满足不同平台用户的需求,并提供更现代化、流畅的网络分析体验。对于广大 Wireshark 用户和开发者而言,这次转型是一个值得期待的更新,将帮助 Wireshark 在未来继续引领网络分析工具的前沿。

相关推荐
liulilittle3 小时前
LIBTCPIP 技术探秘(tun2sys-socket)
开发语言·网络·c++·信息与通信·通信·tun
zbtlink3 小时前
2.5G路由器是啥?和家用的有哪些差异?
网络·智能路由器
以太浮标3 小时前
华为eNSP模拟器综合实验之- HRP(华为冗余协议)双机热备
运维·网络·华为·信息与通信
食咗未3 小时前
Linux tcpdump工具的使用
linux·服务器·网络·驱动开发·tcp/ip·测试工具·tcpdump
YJlio3 小时前
WinObj 学习笔记(15.7):看懂内核对象管理器与命名空间的“地图”
linux·服务器·网络·windows·笔记·学习·微信
MOON404☾3 小时前
003.端口扫描
网络·安全·web安全·网络安全·系统安全
F133168929573 小时前
WD5030K,耐高压输出电流10A,WD5030A输出电流12A
网络·单片机·嵌入式硬件·物联网·汽车
我的golang之路果然有问题3 小时前
linux 个人笔记导出之网络,防火墙,定时,权限,后台
linux·运维·服务器·网络·笔记·个人笔记
dyxal3 小时前
Excel情感标注工具性能优化实战:从卡顿到流畅的蜕变
网络·性能优化·excel
北京耐用通信4 小时前
耐达讯自动化CANopen转Profibus 网关:实现光伏逆变器无缝接入工业以太网的技术解析
网络·人工智能·物联网·网络协议·自动化·信息与通信