如何构建类似wireshark的工具

mat*_*age 1 networking

构建像wireshark这样的东西需要什么水平的网络知识?我会采取什么途径来解决这个问题?我对网络不太了解,我认识的每个人都告诉我一些关于 CCNA 或 CISCO 的事情,参加这些课程是否可以让我构建诸如wireshark 之类的工具?如果不是,应该采取哪条路线自学到这个水平?

use*_*686 5

您至少可以将其分为以下几个主要主题:

  1. 如何从操作系统收集数据包 - 操作系统网络堆栈(有时还有驱动程序模型)提供的功能知识。

    例如,Wireshark 依靠 libpcap 来完成繁重的工作,它本身需要了解 Linux、BSD 上的捕获方法,并带有自己的 Windows 内核驱动程序(即 WinPcap/Npcap)。

  2. 如何解释数据包的内容——了解在哪里可以找到有关各种网络协议的信息。

    这主要涉及解码二进制数据,因为 Wireshark 实际上并不参与任何这些协议;最终解释权归用户所有。

  3. 如何以一种易于理解的方式呈现数据(以及程序的其他功能)——用户界面设计与编程或网络是一个完全不同的主题,但却是一个非常重要的主题。

    (这可能会导致第 2 点的异常——例如,Wireshark确实理解 TCP 连接以提供各种便利功能,例如“关注流”)。

  4. 如何实现你设计的用户界面——通用编程;了解操作系统使用的 GUI 工具包(例如,Wireshark 最近从 GTK 迁移到 Qt)。