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

SO_SNDBUF の効果

SO_SNDBUF を設定した場合の効果 オプションは TCP と UDP で異なります。

  • UDP の場合、データグラムのサイズの制限を設定します 、つまり、それより大きいものは破棄されます。
  • TCP の場合、これは特定のソケットのカーネル内バッファのサイズを設定するだけです (ページ境界への丸めと上限付き)。

TCP について話しているように見えるので、観察している効果は、ソケットがブロッキング モードになっていることで説明されます。 、だから send(2) カーネルがすべてのデータを受け入れることができるまで、および/またはネットワーク スタックが非同期的にデータをデキューしてネットワーク カードにプッシュするまでブロックします。

また、TCP はストリーム プロトコルです。 、「メッセージ」構造を保持しません。 1 send(2) 複数の recv(2) に対応可能 反対側にあり、その逆です。バイトストリームとして扱います。


SO_SNDBUF ソケット実装が内部的に使用するバッファを構成します。ソケットが非ブロッキングの場合、構成されたサイズまでしか送信できません。ソケットがブロッキングの場合、呼び出しに制限はありません。


Linux
  1. Linux 名前付きソケットのハウツー

  2. 確立された TCP 接続の数を取得する

  3. systemd ソケットのアクティベーションと xinetd

  1. socatを使用したTCPプロキシ

  2. ファイアウォールの概要

  3. /dev/tcp を使用するために < または > が必要な理由

  1. MAC アドレスの取得

  2. .NET C# での高性能 TCP ソケット プログラミング

  3. UNIX ドメイン ソケットのスニッフィング