构建类似 wireshark 的东西需要什么级别的网络知识?我应该采取什么途径来实现这一点?我对网络了解不多,我认识的每个人都告诉我一些关于 CCNA 或 CISCO 的事情,参加这些课程是否能让我构建像 wireshark 这样的工具?如果不能,应该采取什么途径自学到这个水平?
答案1
您至少可以将其分为以下几个主要主题:
如何从操作系统收集数据包——了解操作系统的网络堆栈(以及偶尔的驱动程序模型)提供的功能。
例如,Wireshark 依赖 libpcap 来完成繁重的工作,而 libpcap 本身需要了解 Linux、BSD 上的捕获方法,并自带适用于 Windows 的内核驱动程序(即 WinPcap/Npcap)。
如何解释数据包的内容——了解在哪里可以找到有关各种网络协议的信息。
这主要涉及解码二进制数据,因为 Wireshark 实际上并不参加在任何协议中;它将最终解释权留给用户。
如何以易于理解的方式呈现数据(和程序的其他功能)——用户界面设计是一个与编程或网络完全不同的主题,但却相当重要。
(这可能会导致第二点出现异常——例如,Wireshark做理解 TCP 连接以提供各种便捷功能(如“跟随流”)。
如何实现您设计的用户界面 - 通用编程;了解操作系统使用的 GUI 工具包(例如,Wireshark 最近从 GTK 迁移到 Qt)。