回答:
UNIXソケットは、同じマシン上で実行しているプロセス間での双方向のデータ交換を可能にするプロセス間通信機構です。
IPソケット(特にTCP / IPソケット)は、ネットワークを介したプロセス間の通信を可能にするメカニズムです。場合によっては、TCP / IPソケットを使用して、同じコンピューターで実行されているプロセスと通信できます(ループバックインターフェイスを使用)。
UNIXドメインソケットは、同じシステムで実行されていることを知っているため、チェックや操作(ルーティングなど)を回避できます。IPソケットよりも高速かつ軽量になります。したがって、同じホスト上のプロセスと通信する予定がある場合、これはIPソケットよりも優れたオプションです。
編集:Nils Toedtmannのコメントによると:UNIXドメインソケットはファイルシステムのアクセス許可の対象となりますが、TCPソケットはパケットフィルターレベルでのみ制御できます。
次のコマンドを使用して、独自のマシンのローカルUNIXソケットをリストできます。
netstat -a -p --unix
楽しんで!
netstat
ただし、Windowsでは機能します。
UnixソケットとTCP / IPソケットの違いは何ですか?
TCP / IPソケットは、TCP / IPネットワークを介した通信に使用されます。接続されたTCPソケットは、ローカルIP、ローカルポート、リモートIP、およびリモートポートの組み合わせによって識別されます。リスニングTCPソケットは、ローカルポートとローカルIPによって識別されます。少なくともLinux TCP / IPソケット上のAIUIは、クライアントとサーバーが同じマシン上にある場合でも、常にTCP / IPパケットの生成とデコードを行います。
一方、unixドメインソケット(unixソケットに短縮されることもあります)は、単一のマシンで動作します。リスニングソケットはファイルシステム階層に存在し、それらへのアクセスはファイルシステムのアクセス許可によって制御できます。
さらに、Unixソケットで接続を受け入れるプロセスは、接続するプロセスのユーザーIDを判別できます。これにより、認証手順が不要になります。データベースサーバーのパスワードを生成し、そのコピーをwebappのコードに含めるのではなく、webappを実行しているユーザーがデータベース内の対応するユーザーアカウントにアクセスできることをデータベースサーバーに伝えることができます。
TCPソケットもUnixで処理されますか?
もちろん
TCPソケットはTCPプロトコル仕様の一部です
インターネットプロトコル仕様は、ワイヤ上で何が起こるかを懸念する傾向があるだけです。TCP仕様にはSocketの定義が含まれていますが、その定義は「ソケットAPI」による用語の使用方法とは異なります。
私たちが知っている「ソケットAPI」はBSDによって導入されましたが、後でコピーされ、posix標準の一部として含まれています。TCPソケットとUDPソケットの基本的なものは異なるプラットフォーム間でほぼ同じである傾向がありますが、より高度なものやOSの他の部分とやり取りするものは異なります。たとえば、Unixのようなシステムでは、ソケットはファイルハンドルによって識別され、ファイルAPIによって読み取り/書き込みが行われますが、これはWindowsには当てはまりません。
ソケットAPIの拡張機能の一部はrfcsで文書化されていますが、それらのRFCは「情報」にすぎません。
または、任意のプロトコルでIPソケットを使用できますか?
アプリケーションが「socket」関数を使用してソケットを明示的に作成する場合(ソケットはaccept関数によっても作成されます)、「domain」、「type」、「protocol」の3つのパラメーターを渡します。これらの3つのパラメーターを使用して、さまざまなタイプのソケットを選択できます。