以太网数据不是总是包含 IP 数据包吗?



我对以下用Python编写的代码有疑问:

def parse_ethernet(timestamp, packet)
ethernet = dpkt.ethernet.Ethernet(packet)
if isinstance(ethernet.data,dpkt.ip.IP):
parse_ip(ethernet.data)

代码的想法是使用 python 中的 dpkt 库解析以太网数据包。 我的问题是关于以下行:

if isinstance(ethernet.data,dpkt.ip.IP):

为什么我们需要证明 ethernet.data 是否是 IP 数据包的实例?以太网数据不是总是包含 IP 数据包吗?

为什么我们需要证明 ethernet.data 是否是 IP 数据包的实例?以太网数据不是总是包含 IP 数据包吗?

不,它没有。例如,对于 ARP 请求,以太网帧包含 ARP 数据包,而不是 IP 数据包。

顾名思义,在以太网 ATA 中,以太网帧包含封装的 ATA 数据包,而不是 IP。

然后是AES51,AVB,SoundGrid,EtherSound,CobraNet,LLDP,FCoE,PTP(Layer 2(,MACsec,EtherCAT,HyperSCSI,PROFINET,PPPoE,MPLS,IPX,AppleTalk,DECnet等等。维基百科列出了50多个协议,这些协议不是存在EtherType分配的IP。

是的,以太网帧始终在 osi 模型的第 2 层具有 Mac 地址。 数据包在第 3 层使用 IP 地址进行

最新更新