Unixドメインソケット

Unixドメイン ソケット( UDS )、ローカル ソケット、またはプロセス間通信( IPC )ソケットは、同じUnixまたはUnix ライクなオペレーティング システム で実行されているプロセス間でデータを交換するための通信エンドポイントです。

Unixドメインソケットという名称は、ソケットシステムリソースを作成する関数に渡されるdomain引数値を指します。同じ通信ドメインは、によっても選択されます。[ 1 ]AF_UNIXAF_LOCAL

typeUDSの有効な引数値は次のとおりです: [ 1 ]

  • SOCK_STREAM( TCPと比較) – ストリーム指向ソケットの場合
  • SOCK_DGRAM( UDPと比較) - メッセージ境界を保持するデータグラム指向ソケット(ほとんどのUNIX実装と同様に、UNIXドメインデータグラムソケットは常に信頼性が高く、データグラムの順序を変更しません)
  • SOCK_SEQPACKET( SCTPと比較) - 接続指向で、メッセージの境界を維持し、メッセージが送信された順序で配信されるシーケンスパケットソケット用

UDS 機能は、POSIXオペレーティング システムの標準コンポーネントです。

UDSのAPIはインターネットソケットのAPIに似ていますが基盤となるネットワークプロトコルを使用するのではなく、すべての通信はオペレーティングシステムカーネル内で行われます。UDSはファイルシステムをアドレス名前空間として使用する場合があります。Linuxなどの一部のオペレーティングシステムでは、追加の名前空間が提供されています。プロセスはUDSをファイルシステムのinodeとして参照するため、2つのプロセスが同じソケットを開くことで通信できます。

プロセスは、データの送信に加えて、UDS接続を介してシステムコールとファイル記述子を送信することができます。これにより、送信プロセスは受信プロセスに対し、受信プロセスがアクセスできないファイル記述子へのアクセスを許可することができます。[ 2 ] [ 3 ]これは、基本的なケイパビリティベースセキュリティを実装するために使用できます。[ 4 ]sendmsg()recvmsg()

参照

参考文献