✔ 最佳答案
下?可以話你o岩既,但係你知唔知一個ping既packet size有幾大?真係好細好細咋喎,如果你要靠ping黎ping死部server…哈哈哈,或者有d妙想天開,講真一句唔係唔得既,不過機會真係好微,如果十年前都或者有d實際機會,你要睇下果部server既receive buffer同banwidth有幾大,做得webserver既機,receive buffer通常都唔會細得去邊
試諗下,一個ping packet只係得64bytes (by default),但係一個正常既receive buffer size係由8kB到8MB不等,我當個buffer size係最細:8kB,8000除以64係125,咁姐係話(唔計勁多其他因數咁講)你要用超過125個ping packet同時去到個server到咁先可以crash部server喎 (如果係8MB,咁你要有十幾萬個packets同時receive先得,自己哪來十幾萬部電腦加十幾萬個獨立internet connection ?_?)
但係,唔好以為真係咁簡單,如果果部server所用既bandwidth唔係好大,咁樣d data響個channel到就已經好似用漏斗咁壓下bandwidth了
仲有就係做server果部腦通常都唔會太慢,假設好似我頭先咁講,用125個packets send到去個server到,可能個buffer未滿之前,已經大部份既packets都被處理掉,咁樣個buffer就永遠都唔會被塞爆
有d server有自動block receive port既功能,當receive buffer滿左既時候,佢會block左個port,直到buffer入面既packets被處理掉,有位再收時先會再開返個port,咁樣就永遠都塞唔爆佢個buffer
加上,如果你真係有百幾部機一齊ping,就算你響同一千份之一秒send,d packets到最後都唔會同時間到部server,因為server同你d電腦之間隔左咁多野咁多interconnection nodes,一定會有好大偏差
塞爆receive buffer只係其中一個方法,但係呢個係最有可能性的了(雖然機會都係微到基乎0咁濟)
當然啦,你可以自己寫軟件(唔難寫)黎試試用單一電腦send勁多個巨型既packets,你部機一定要好快,上網速度要好高先得,因為你想連環係咁send,而你想d packets響盡量同一時間到達
雖然我做過好多transport layer同network layer既研究,但係真係未諗過可以ping得死部機,除非部機係又慢又少記億體果種
如果要'防止俾人ping 死',或者唔想俾閒雜人騷擾,請用防火牆等此類系統,但係咁亦都會令好多正常使用者受影響,如果部server係一部普通家用機,其實用norton system works這類好普遍的防駭軟件就足以應付
再唔係既,你可以close左個 icmp socket,但係呢如果d人係有心要 'ping死你'既,佢地可以試其他socket
理論上黎講,你可以阻止人ping你,但係實際黎講,你唔可以完全阻止人地ping你
不過放心,一部正常setting既server會被ping死的機會實在微到乜咁