web-dev-qa-db-ja.com

DoS攻撃は、食事する哲学者の良い例えですか?

哲学者ではなく、サーバーへのTCP/IP接続があり、代わりにサーバーのTCP/IPで使用可能なポートがあるフォークがあるとします。このシナリオでは、ポートをめぐって競合する接続は多くありません。処理に時間がかかる悪意のある接続がいくつかあるため、それらは使用可能なポートを取得し、長時間後に解放します。 (数分から数時間)。このシナリオでは、実際の非攻撃接続は「飢餓状態」になります。

この場合、例えは次のようになります。

  • 利用可能なポート:フォーク
  • 非攻撃的なつながり:食べるよりも考えることに多くの時間を費やす哲学者
  • 攻撃的または悪意のある接続:考えるよりも食べることに多くの時間を費やす哲学者。

すべての哲学者が1つのフォークを取る(お互いにデッドロックする)場合を無視すると、利用可能な共有リソースがない場合、スレッドはリソースが解放されるまで(おそらく永久に)待機するため、食事する哲学者はリソース不足の例と見なします別のスレッドによって。

1
Broken_Window

このアナロジーについて考えれば考えるほど、意味がなくなります。

  • ここでは、ポートはリソースとして機能しません。サーバーで開いているポートはほんの一握りで、おそらく1つだけです(たとえば、HTTPの場合はポート80)。これに接続できるクライアントはいくつでもあり、それらの接続は、クライアントごとに独立しているclientポートID(およびクライアントIP)によって区別されます。ポート番号は、DoS攻撃、ネットワーク帯域幅、CPU時間などによって攻撃される、限られたリソースではありません。
  • ネットワーク帯域幅とCPU時間は、最終的には整数値(適切な単位)ですが、これらの単位をフォークで識別することは意味がありません。クロックサイクルまたは帯域幅は交換可能ですが、フォークにはアイデンティティがあり、各哲学者が500万フォークを必要とする場合、類推はばかげています。さらに、今では哲学者は、たとえば1クロックサイクルを取り、それを1分間保持することができます。これは、少なくともより抽象的であり、哲学者の時間を無意味にします。
  • 哲学者は空間的に配置されており、周囲のフォークから選択します。対照的に、アナロジーでのリソースの合理的な概念は、次のように制約されません。クライアントは、クライアントの選択ではなく、おそらくサーバーの裁量で、任意のリソースを取得できます。
  • お気づきのように、デッドロックの可能性はありません。食事する哲学者は、飢餓よりもデッドロック(およびライブロック)に関するものですが、公平性についての議論もあると確信しています。通常、リソースの不足については他の例で説明します。
4
user7043