Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

IP_Reassembly

IP Reassembly

IP Reassembly 是 Wireshark 和 TShark 中的一项功能,用于在调用更高层 dissector 之前,自动将所有分片的 IP Datagrams 重组为完整的 IP packet。

该功能需要 Wireshark 消耗大量额外内存来存储重组缓冲区,因此默认禁用。

要启用 IP Reassembly,请进入 preferences 并勾选 reassembly 对应的复选框

启用 IP Reassembly 后,TShark 和 Wireshark 中会发生几项变化。首先,Wireshark 将不再在包含 IP packet header 的 frame 中解析 UDP 或 TCP header(或这些协议之上的任何协议)。相反,对 UDP 或 TCP protocol dissectors 的调用会被延迟,直到所有 IP fragments 都已接收,并且完整的 IP datagram 已经完全重组。

这种差异表现为:未启用 IP Reassembly 时,上层协议,即 UDP 或 TCP 以及其上的任何内容,只要在初始 fragment(fragment offset 为 0)对应的该 frame 中存在,就会针对该特定 frame 被解析并显示。该 frame 通常还会在 packet summary line 中显示类似“[Short Frame]”的信息文本。该 IP datagram 的所有其他 IP Fragments 只会被解析到 IP layer(含 IP layer)为止。

启用此功能后,IP datagram 的解析会被延迟,直到捕获中完整 IP datagram 被完全重组的那个 packet。

这意味着某些使用 reassembly 的 packets,例如 NFSoverUDP,在启用 IP Reassembly 后会以不同方式解析,甚至会在不同的 frames 中解析。

IP Reassembly 是一个全有或全无的功能。如果在捕获中找不到完成重组所需的每一个 IP Fragment,那么就完全不会进行任何解析。甚至 TCP 或 UDP layer 也不会解析。

IP Reassembly 无法重组 packets 的常见原因:

  • 短 packets。你捕获 packet 时使用的 SnapLen 小于链路的 MTU,因此部分 packet 内容缺失,那么 Wireshark 甚至不会尝试执行 reassembly。

  • IP Header Checksum 无效。如果 IP Header Checksum 无效,那么 IP Reassembly 功能会忽略该 packet。

  • 某些 IP Fragments 只是没有出现在捕获中。这是现实情况,你永远无法保证经过线路的每一个 packet 都确实被捕获并写入 Capture File。抱歉,这就是现实 😦

注意

如果 trace 中存在 IP Fragments,此功能在运行时将消耗大量额外内存。对于巨大的 NFSoverUDP traces,启用此功能是非常非常糟糕的主意,因为它会像没有明天一样吞噬内存。

显示

要启用 IP Reassembly,请勾选此首选项设置

首选项字符串

Reassemble fragmented IP datagrams.

Imported from https://wiki.wireshark.org/IP_Reassembly on 2020-08-11 23:15:19 UTC

原始页面图片

ipreassembly.jpg
ipreassembly.jpg

相关 Wireshark Wiki 页面

网络分析技术档案