4

まず、UDP は信頼できるプロトコルではないことを認識しており、ネットワーク経由でパケットを受信できる保証はありません。

しかし、パケットが自分のマシンに到達した場合、アプリケーション レベルで受信することが保証されているのでしょうか?それとも、ネットワーク スタックが問題なく破棄できるのでしょうか?

私が尋ねる理由は、パケットがネットワーク上にあることを知っていても、パケットが時々失われているように見えるからです (単純な EtherCAT バスなので、パケットは常にループ バックします)。

4

1 に答える 1

6

いいえ、パケットがマシンに届いたとしても、パケットがアプリケーションに届くという保証はありません。

カーネルの UDP 受信キューは有限であり、アプリケーションが処理できるよりも速くパケットが到着すると、キューがいっぱいになり、一部のパケットが破棄されます。

受信バッファーのサイズを増やすことはできますが (この質問を参照)、無制限にすることはできません。

于 2012-06-08T08:57:36.977 に答える