【发布时间】:2020-10-13 05:20:29
【问题描述】:
网络协议结构简单(如ipv4、tcp、udp、...)通过限制用任何语言描述。但是还有更难的结构,可选字段/块和动态块/字段大小(TVL、LT 等) - 例如ipv6、sctp、PROFINET-IO(去中心化外围)、...
我的问题是 - 如何正确描述协议数据结构并将其存储以供将来使用?例如。为不同语言生成结构,或获取所有树(例如在 ipv6 Wireshark ipv6.opt.pdm.delta_last_recv 中),或获取特定块/扩展/选项的所有字段协议。
我希望描述清楚。谢谢。
【问题讨论】:
-
其实IPv4头是可变大小的(20到60),但IPv6头总是固定大小40,比IPv4头大大简化。
-
哇。我错过了。非常感谢这个笔记。但据我所知,IPv6 有扩展,扩展了 IPv6 层。这样一来,IPv6 解析器需要对扩展进行解析循环。然而,关于描述方式的问题被打开了。也许你知道描述网络协议的方式(用抽象语言)。
-
"IPv6 有扩展,扩展了 IPv6 层。" 不完全是。 IPv6 扩展头被视为有效负载,而不是 IPv6 数据包头的一部分。所有扩展头都必须被中间设备忽略,例如路由器,除了逐跳选项,而这些在现实世界中很大程度上被忽略了。扩展标头有自己的协议号,就像 TCP 和 UDP 一样,IPv6 标头指向它们,就像它对传输协议所做的一样。它们更类似于 ICMP,被视为传输协议,但它是 IP 的组成部分。
标签: networking network-programming protocol-buffers wireshark ddl