这是一种拒绝服务攻击,它利用了大多数现代tcp / ip堆栈实现所依赖的路径MTU发现技术。
MTU表示节点(或更正确的网络接口)可以处理的数据包的最大大小(以字节为单位)。为了成功进行连接,源主机和目标主机以及所有中间路由器都必须支持相同的长度。实际上,重要的是目标主机不会收到任何较大的数据包,这很容易通过协商进行安排。但是,不能保证所有中间路由器都具有相同(或更大)的MTU集。因此,有两种方法可以确保连接能够成功完成:数据包分段和路径MTU发现。
根据第一种方法,每个数据包都是根据连接的远程主机报告的MTU发送的,这意味着,如果中间的某个路由器使用较小的MTU作为接口,则前一个路由器将必须对该数据包进行分段,根据新的MTU将其切成小块,然后再转发。这意味着大量路由器需要额外的工作,这是不够的。
根据第二种方法PMTUD(在我们的情况下),每个数据包都根据远程端报告的MTU再次发送,但是现在在报头上设置了一个特殊标志,该标志告诉每个路由器而不是如果下一个链接的MTU较小,则对数据包进行分段,以拒绝该数据包,并使用下一个节点的MTU将ICMP消息返回给发送方。然后,发送者将收到此消息,并相应地为此连接修改MTU。显然,此过程可能会发生多次,每次MTU都会越来越小,直到确定所有路由器支持的最大值为止。
虽然PMTUD既出色又高效,并且在正常情况下的处理开销可以忽略不计,但只要稍加想象,我们就可以想到几种利用它的方法,该方法可以为一个主机创建额外的开销,从而完全拒绝服务。