Wireshark物理包
答
当它用于捕获实时流量时,它知道接口的类型并因此知道数据包的L2封装,并且当它读取pcap文件时,该文件在标题中有一个指示网络类型的字段。
答
可能有许多不同的机制。您可以下载解剖器并研究源代码以找出各种方法。我写了一个网络嗅探器的解剖器,并将它移植到Ethereal然后Wireshark(或者可能是别人移植它;我不记得)。但基本逻辑是解剖器被添加到可能的解剖器列表中。 Wireshark称为解剖器,如果可能的话,解码数据包。如果不是,它会调用链中的下一个。
在我写的代码中,我简单地分析了数据包(在我的情况下是UDP),以确定它是否符合使用数据包中的校验和和已知数据的所需数据包的配置文件。如果它决定它是我感兴趣的数据包,我只是从数据包中提取了各种有趣的数据。函数tvb_get_ptr
返回一个指向数据开始的指针。
ohk谢谢你的信息... – user420878 2011-01-26 19:12:40
多一个查询... Dissector_tables用于存储特定解剖器的子解剖器。那么这个Dissector表对每个Dissector都是本地的,还是那里有什么样的映射? M beginer – user420878 2011-01-26 19:13:44