#协议 #互联网 #数据包 #网络 #IPv4

nightly network-internet-protocol

4 和 6 版本互联网协议的主机地址、掩码、网络地址、数据包及相关类型的域模型

9 个版本

使用旧版 Rust 2015

0.1.10 2018 年 8 月 9 日
0.1.9 2018 年 8 月 9 日
0.1.5 2018 年 7 月 31 日

#55 in #ipv4


3 crates 中使用

AGPL-3.0

610KB
11K SLoC

网络

network 是一系列 Rust crates,旨在简化网络操作。

许可

本项目的许可协议为 AGPL3。


lib.rs:

network-internet-protocol

4 和 6 版本互联网协议的主机地址、掩码、网络地址、数据包及相关类型的域模型。

此 crate 具有可选功能 dpdk-sys,它添加了对将 DPDK 表示转换为 Into 和 From 的支持。

此 crate 还具有以下默认功能:-

  • drop-packets-with-ipv4-options:丢弃具有 IP 选项的互联网协议(IP)版本 4 数据包。违反 RFC 791,但 IP 选项很少使用,少数使用过的有潜在的被用作攻击向量,且对图书馆没有任何意义。
  • drop-packets-with-ipv4-options-lacking-zero-padding:丢弃 IP 选项列表末尾没有零填充的具有 IP 选项的互联网协议(IP)版本 4 数据包。这是一个严格的检查,对性能的影响非常小。
  • drop-ipv4-packets-with-do-not-fragment-and-non-zero-identification:丢弃设置 Do Not Fragment(DF)标志且标识不为零的互联网协议(IP)版本 4 数据包。违反 RFC 6864 第 4.1 节第 5 段,但没有很好的理由发送设置 DF 且标识不为零的 IP 数据包。特别是,在这种情况下,标识字段可以用作隐蔽通道,并推断 NAT 代理后面的设备数量。
  • drop-ipv6-packets-with-non-zero-flow-label:丢弃流标签不为零的互联网协议(IP)版本 6 数据包。没有很好的理由接收此类数据包用于 ICMP、TCP 和 UDP 流。
  • drop-ipv6-fragments-when-first-reserved-field-is-not-zero:丢弃首保留字段不为零的互联网协议(IP)版本 6 数据包的片段扩展报头。违反 RFC 8200 第 4.5 节,但没有很好的理由接收此类数据包。
  • drop-ipv6-fragments-when-second-reserved-field-is-not-zero:丢弃第二保留字段不为零的互联网协议(IP)版本 6 数据包的片段扩展报头。违反 RFC 8200 第 4.5 节,但没有很好的理由接收此类数据包。
  • drop-overly-small-ipv6-fragments-aggresively:我们始终丢弃小于所需大小(444字节MSS)的分片。此设置丢弃(除最后一个外)小于使用1280字节MSS可能使用的分片。违反了RFC 8200第4.5节,但没有很好的理由接收此类数据包。

依赖项

~1–8MB
~202K SLoC