GNU/Linux >> Linux の 問題 >  >> Linux

カーネルがパケットをドロップするのはなぜですか?

tcpdumpを中断しました Ctrlを使用 + C そして、この全体の要約を取得しました:

579204 packets captured
579346 packets received by filter
142 packets dropped by kernel

「カーネルによってドロップされたパケット」とは何ですか?なぜそれが起こるのですか?

承認された回答:

tcpdumpのマニュアルから:

「カーネルによってドロップされた」パケット(これは、OSがその情報をアプリケーションに報告する場合、tcpdumpが実行されているOSのパケットキャプチャメカニズムによって、バッファスペースの不足のためにドロップされたパケットの数です。そうでない場合。 、0として報告されます。

ちょっとした説明:

tcpdump ネットワークインターフェイスを通過する生のパケットをキャプチャします。
パケットは、コマンドラインで指定したルールに従って解析およびフィルタリングする必要があります。これには時間がかかるため、着信パケットは処理のためにバッファリング(キューイング)する必要があります。 。
パケットが多すぎる場合、それらはバッファに保存されますが、処理されるよりも速く保存されるため、最終的にバッファのスペースが不足するため、カーネルは、空きスペースができるまで、それ以降のすべてのパケットをドロップします。バッファ。

-Bを使用してバッファサイズを増やすことができます (--buffer-size )このようなオプション:

tcpdump -B 4096 ....

サイズはキロバイトで指定されているため、上の行でバッファサイズが4MBに設定されていることに注意してください。


Linux
  1. Linuxカーネルをftraceで分析する

  2. サーバーが私のIPをブロックしたのはなぜですか?

  3. Linux –システムにRootfsファイルシステムが存在しないのはなぜですか?

  1. Aptがカーネルを更新しなくなったのはなぜですか?

  2. Linux カーネルの `struct file_operations` で close 関数が release と呼ばれるのはなぜですか?

  3. カーネルがプロセスと同じアドレス空間にマップされるのはなぜですか?

  1. root ユーザーから Linux カーネルを保護するのはなぜですか?

  2. Linux NFS サーバーがユーザー空間ではなくカーネルに実装されているのはなぜですか?

  3. UserMode Linux (UML) を実行したい理由