13

Unix ドメインソケットについて研究しています。特にそれがどのように機能するかについて。たくさんのキーワードで何度もググってみましたが、結果はAPI、システムコール、使い方、例ばかり…。UnixドメインソケットはパイプとFIFOと同じと言われているため、パイプとFIFOについても読みましたが、それでもUnixドメインソケットの概念/原則についてもっと知りたいです。それはどのように機能しますか?(おそらくカーネル レベルで、Wiki は次のように述べています。

Unix ドメインの Socket ドキュメンタリーが Pipe や FIFO よりも少ないのはなぜだろうか? 何年も前に生まれたからでしょうか。

誰かアイデアや読むべき本/リンクを教えてもらえますか?

前もって感謝します!

4

1 に答える 1

28

Unix ソケットは、他のソケット タイプと同様に使用されます。これは、ソケット システム コールがそれらに使用されることを意味します。FIFO と Unix ソケットの違いは、FIFO はファイル sys 呼び出しを使用するのに対し、Unix ソケットはソケット呼び出しを使用することです。

Unix ソケットはファイルとしてアドレス指定されます。アクセス制御にファイル許可を使用することができます。

Unix ソケットは、socket sys コールによって作成されます (FIFO は mkfifo によって作成されます)。クライアント ソケットが必要な場合は、connect を呼び出し、サーバー ソケット アドレスを渡します。サーバーソケットが必要な場合は、バインドしてそのアドレスを割り当てることができます。一方、FIFO オープン呼び出しには使用されます。IO 操作は読み書きで行います。

Unix ソケットはクライアントを識別できますが、FIFO は識別できません。ピアに関する情報は、accept 呼び出しによって提供され、ピアのアドレスを返します。

Unix ソケットは双方向です。これは、すべての側で読み取りと書き込みの両方の操作を実行できることを意味します。一方、FIFO は単方向です。書き込みピアと読み取りピアがあります。

Unix ソケットは、localhost IP ソケットよりもオーバーヘッドが少なく、通信が高速です。パケットは、localhost ソケットのようにネットワーク スタックを通過する必要はありません。また、ローカルにのみ存在するため、ルーティングはありません。

Unix ソケットがカーネル レベルでどのように機能するかについての詳細が必要な場合は、Linux カーネル ソースの net/unix/af_unix.c ファイルを参照してください。

于 2013-02-17T09:04:42.710 に答える