无论协议如何,他们都是走一个物理层,都是占用共享的带宽
icmp 和 tcp 都是载具(协议),都运载着人(数据)在同一条高速公路(物理带
宽)上跑。icmp 数据包够多同样会挤兑其他协议的带宽。
好多人觉得不会死是没看到题目写的全国吗ˊ_>ˋ只要目标失去响应/协议时间内
无回应就算打死了。
部分人在我的回答以及其他回答下的反驳我不认同。再详细展开说一些。
别管 ICMP 报文怎么样,归根结底他们都是和 TCP 一个通道,都占用带宽。
就是一个单纯的数据量变导致质变的问题。归根结底可以转化为,给定一个 IP
让全国人同时 ping,我不相信有哪个机房敢站出来说他能扛住(直接黑洞路由的
不算,那样等同于关机,其他服务也访问不了)。单纯就是没有网络能够承载 14
亿 ops 的负载。
继续细化,如果每个人 ping 的是同城最近的百度 CDN 节点,而不是全国人 ping
一个相同的 IP。那么这其中就涉及了一个均衡负载,均衡负载从最早的 DNS 随
机返回多个服务器地址来平均访问量,到 NGINX 等方案反向代理提供的均衡负
载,他们都有一个共同点:总是有一个节点在最前端用来分配流量。不管如何实
现,链接中任何一环的带宽/处理速度被占满,你就无法正常访问百度,也就算
打死了。
还有人说百度禁 Ping 就行了的,什么是 DDOS 哇?“分布式拒绝服务攻击”,就算
百度接到 ICMP 报头就直接丢弃链接,这个过程也是需要资源去处理的,并不是
无损耗。拒绝服务攻击,就是一句无关的内容去消耗你的资源,达到你没有剩余
资源处理正常业务的目的。
如果如某反驳说“ICMP”会被运营商丢弃,这一点与事实不太相同。现在的网络丢
弃 ICMP 包是没有意义的,他才有 64k 的最大报文,GFW 都不封它。(曾经有不
少人试图用 ICMP 来穿墙,因为 GFW 对 ICMP 管的不严,但他门最后都因为报文
大小太小而放弃了)。按照他的说法只有一种可能:除非在早期路由(比如一栋
楼,一个小区)上就由路由节点伪装成百度返回数据包给你/直接丢弃/reset,那
么吞吐量还可以接受。但是现实实践告诉我们并不是这样的,我到目前没有遇到
过封 ICMP 的运营商,更没遇到过封 ICMP 的机房。下面这几个大佬的回答理论
很正确: