ICMP 分片

网络工程 icmp 碎片化
2022-03-03 11:07:43

对大小为 65500 字节、端到端路径 MTU 为 1500 字节且未设置 DF 标志的可访问 IP 地址的 ping(回显请求)是否会通过让对等方响应 ICMP 来工作?

21:05:31.325718 IP (tos 0x0, ttl 128, id 18761, offset 0, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: ICMP echo request, id 1, seq 28, length 1480
21:05:31.325726 IP (tos 0x0, ttl 128, id 18761, offset 1480, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325729 IP (tos 0x0, ttl 128, id 18761, offset 2960, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325732 IP (tos 0x0, ttl 128, id 18761, offset 4440, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325734 IP (tos 0x0, ttl 128, id 18761, offset 5920, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325736 IP (tos 0x0, ttl 128, id 18761, offset 7400, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325739 IP (tos 0x0, ttl 128, id 18761, offset 8880, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325742 IP (tos 0x0, ttl 128, id 18761, offset 10360, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325743 IP (tos 0x0, ttl 128, id 18761, offset 11840, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325746 IP (tos 0x0, ttl 128, id 18761, offset 13320, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325747 IP (tos 0x0, ttl 128, id 18761, offset 14800, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325750 IP (tos 0x0, ttl 128, id 18761, offset 16280, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325752 IP (tos 0x0, ttl 128, id 18761, offset 17760, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325754 IP (tos 0x0, ttl 128, id 18761, offset 19240, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325756 IP (tos 0x0, ttl 128, id 18761, offset 20720, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325758 IP (tos 0x0, ttl 128, id 18761, offset 22200, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325760 IP (tos 0x0, ttl 128, id 18761, offset 23680, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325762 IP (tos 0x0, ttl 128, id 18761, offset 25160, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325764 IP (tos 0x0, ttl 128, id 18761, offset 26640, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325767 IP (tos 0x0, ttl 128, id 18761, offset 28120, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325769 IP (tos 0x0, ttl 128, id 18761, offset 29600, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325771 IP (tos 0x0, ttl 128, id 18761, offset 31080, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325774 IP (tos 0x0, ttl 128, id 18761, offset 32560, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325776 IP (tos 0x0, ttl 128, id 18761, offset 34040, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325778 IP (tos 0x0, ttl 128, id 18761, offset 35520, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325781 IP (tos 0x0, ttl 128, id 18761, offset 37000, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325786 IP (tos 0x0, ttl 128, id 18761, offset 38480, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325788 IP (tos 0x0, ttl 128, id 18761, offset 39960, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325789 IP (tos 0x0, ttl 128, id 18761, offset 41440, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325791 IP (tos 0x0, ttl 128, id 18761, offset 42920, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325793 IP (tos 0x0, ttl 128, id 18761, offset 44400, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325794 IP (tos 0x0, ttl 128, id 18761, offset 45880, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325796 IP (tos 0x0, ttl 128, id 18761, offset 47360, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325798 IP (tos 0x0, ttl 128, id 18761, offset 48840, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325800 IP (tos 0x0, ttl 128, id 18761, offset 50320, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325801 IP (tos 0x0, ttl 128, id 18761, offset 51800, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325803 IP (tos 0x0, ttl 128, id 18761, offset 53280, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325805 IP (tos 0x0, ttl 128, id 18761, offset 54760, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325807 IP (tos 0x0, ttl 128, id 18761, offset 56240, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325808 IP (tos 0x0, ttl 128, id 18761, offset 57720, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325810 IP (tos 0x0, ttl 128, id 18761, offset 59200, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325812 IP (tos 0x0, ttl 128, id 18761, offset 60680, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325814 IP (tos 0x0, ttl 128, id 18761, offset 62160, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325816 IP (tos 0x0, ttl 128, id 18761, offset 63640, flags [+], proto ICMP (1), length 1500)
    1.1.1.2 > 1.1.1.1: icmp
21:05:31.325818 IP (tos 0x0, ttl 128, id 18761, offset 65120, flags [none], proto ICMP (1), length 408)
    1.1.1.2 > 1.1.1.1: icmp
2个回答

包大小远大于 MTU 的 ping 会成功,但前提是允许分片,并且所有分片都到达目标并可以重新组合成原始 ICMP 包。

任何大于路径中设置了 DF 位的最小 MTU 的数据包(ICMP 或其他)都将无法到达另一端。

我们的一个防火墙施加了 65468 的限制以防止 ping 死亡:en.wikipedia.org/wiki/Ping_of_death 大多数终端主机应该没有问题处理这个问题,但较旧的主机/未打补丁的主机可能最终有IP 堆栈溢出并使盒子崩溃。这不是由于 ICMP 协议本身;这是由于重新组装的数据包超过了最大 IP 大小 65535