Networking Wireshark物理包

Networking Wireshark物理包,networking,network-protocols,Networking,Network Protocols,wireshark如何解释物理数据包? 据我所知,所有数据包看起来都是一样的,那么它如何解码它们以传递到下一个更高的协议?当它用于捕获实时流量时,它知道接口的类型,因此知道数据包的L2封装,当它读取pcap文件时,文件头中有一个字段指示网络类型。可能有许多不同的机制。您可以下载剖析器并研究源代码以了解各种方法 我为网络嗅探器编写了一个剖析器,并将其移植到Ethereal和Wireshark(或者其他人移植了它;我不记得了)。但基本逻辑是将解析器添加到可能的解析器列表中。Wireshark调用剖析

wireshark如何解释物理数据包?
据我所知,所有数据包看起来都是一样的,那么它如何解码它们以传递到下一个更高的协议?

当它用于捕获实时流量时,它知道接口的类型,因此知道数据包的L2封装,当它读取pcap文件时,文件头中有一个字段指示网络类型。

可能有许多不同的机制。您可以下载剖析器并研究源代码以了解各种方法

我为网络嗅探器编写了一个剖析器,并将其移植到Ethereal和Wireshark(或者其他人移植了它;我不记得了)。但基本逻辑是将解析器添加到可能的解析器列表中。Wireshark调用剖析器,如果可以的话,它会对数据包进行解码。如果没有,则调用链中的下一个


在我编写的代码中,我只是分析了数据包(在我的情况下是UDP),使用校验和和数据包中的已知数据确定它是否符合所需数据包的配置文件。如果它决定它是我感兴趣的数据包,我就从数据包中提取出各种有趣的数据。函数
tvb\u get\u ptr
返回指向数据开头的指针。

再查询一次。。。解剖器_表用于存储特定解剖器的子解剖器。那么这个解析器表是每个解析器的本地表还是有什么类型的映射?我是一个新手,再告诉我一件事。。。我正在阅读有关此协议树的信息。。。我认为这只不过是wireshark在调用disectors和sub-dissector之后直到最后形成的树。所以每个解析器有一个独立的树。我是对的吗?@user420878,我相信这是对的,但我对它的记忆非常模糊。我只是检查了一下修订版,发现我是在7年前把它移植到Ethereal的,所以我不记得很多细节了。