分片包端口

网络工程 ip
2022-02-24 21:22:10

假设我们有一个封装在 IP 数据包中的 TCP 或 UDP 消息。假设 UDP/TCP 消息的长度对于 IP 来说太大了。

如果我理解得很好,最初的 IP 有效负载应该分成几个较小的数据包。因此,第一个 IP 数据包具有 TCP/UDP 标头,并且可能是 UDP/TCP 有效负载的开头。第二个具有 UDP/TCP 有效负载的下一部分,依此类推,直到发送整个 UDP/TCP 消息。端口信息包含在 UDP/TCP 标头中。

因此我的问题是:这是否意味着我们无法知道碎片消息的端口(目标和源)?

我认为是的,我们不知道港口。但这是正常的,因为我们只在 UDP/TCP 层需要它,一旦我们从几个 IP 数据包重建它就完成了。但是我想通过端口检查通过网络上某个点的数据包数量。这样做是为了捕获第一个数据包、识别端口和 IP ID 字段并检查每个分段数据包的每个 IP ID 字段的唯一方法吗?

1个回答

那是对的。IP 片段将仅包含IP字段。TCP/UDP 标头将仅在第一个片段中。因此,您必须收集整个帧(来自所有片段)以对其应用任何 L4 规则,或者跟踪整个会话以将相同的规则应用于所有片段。Cisco 将此称为虚拟片段重组一些/许多防火墙根本不打扰,而是阻止所有碎片。(“这是唯一确定的方法”:-))

(FWIW,我所有的路由器/防火墙都明确配置为丢弃碎片。如果你不能正确地做 PMTUd,我不想和你说话。)