10

sendmsg()を使用すると、補助データを別のソケットに送信できます。これがどのように機能するのか疑問に思っています。

1)補助データは通常のメッセージと一緒にパックされていますか?

2)もしそうなら、リモート受信ソケットはこれを解析する方法をどのように知るのでしょうか?

3)リモート受信クライアントはこの補助データをどのように取得しますか?

ありがとう。

4

2 に答える 2

4

補助データは、いくつかの選択された方法でのみ使用できます。

  • これを使用して、受信インターフェイス (IPv4) を取得できます。
  • これを使用して、ホップ制限を指定できます (IPv6 の場合)
  • これを使用して、トラフィック クラスを指定できます (ここでも、IPv6)。
  • ....
  • これを使用して、ファイル記述子またはユーザー資格情報を送受信できます (Unix ドメイン)

3 つのケースは、 を介してカーネルランドから制御情報を受け取る人為的な API メソッドにすぎませんrecvmsg(2)。最後の 1 つが最も興味深いものです。補助データが実際に送信される唯一のケースは、Unix ドメイン ソケットを使用する場合です。この場合、すべてがカーネル内で行われるため、実際には何も送信されません。

于 2013-01-02T20:04:12.583 に答える