net*_*gog 0 python ip networking ethernet packet
我对以下用 Python 编写的代码有疑问:
def parse_ethernet(timestamp, packet)
ethernet = dpkt.ethernet.Ethernet(packet)
if isinstance(ethernet.data,dpkt.ip.IP):
parse_ip(ethernet.data)
Run Code Online (Sandbox Code Playgroud)
代码的想法是使用python中的dpkt库解析以太网数据包。我的问题是关于以下行:
if isinstance(ethernet.data,dpkt.ip.IP):
Run Code Online (Sandbox Code Playgroud)
为什么需要证明 ethernet.data 是否是 IP 数据包的实例?以太网数据不是总是包含 IP 数据包吗?
为什么需要证明 ethernet.data 是否是 IP 数据包的实例?以太网数据不是总是包含 IP 数据包吗?
不,它没有。例如,对于 ARP 请求,以太网帧包含 ARP 数据包,而不是 IP 数据包。
在 ATA-over-Ethernet 中,顾名思义,以太网帧包含封装的 ATA 数据包,而不是 IP。
然后是 AES51、AVB、SoundGrid、EtherSound、CobraNet、LLDP、FCoE、PTP(第 2 层)、MACsec、EtherCAT、HyperSCSI、PROFINET、PPPoE、MPLS、IPX、AppleTalk、DECnet 等等。维基百科列出了 50 多个协议,这些协议不是 IP 的,存在 EtherType 分配。
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |