Unix-sockets-what-is-socket

提供:Dev Guides
移動先:案内検索

ソケットとは何ですか?

ソケットは、同じマシンまたは異なるマシン上の2つの異なるプロセス間の通信を可能にします。 より正確には、標準のUnixファイル記述子を使用して他のコンピューターと通信する方法です。 Unixでは、すべてのI/Oアクションはファイル記述子の書き込みまたは読み取りによって行われます。 ファイル記述子は、開いているファイルに関連付けられた単なる整数であり、ネットワーク接続、テキストファイル、端末、またはその他のものです。

プログラマーにとって、ソケットは低レベルのファイル記述子のように見え、動作します。 これは、read()やwrite()などのコマンドが、ファイルやパイプの場合と同じようにソケットで機能するためです。

ソケットは最初に2.1BSDで導入され、その後4.2BSDで現在の形式に改良されました。 ソケット機能は、現在のほとんどのUNIXシステムリリースで使用できるようになりました。

ソケットはどこで使用されますか?

Unix-Socketは、クライアント/サーバーアプリケーションフレームワークで使用されます。 サーバーは、クライアントからの要求に応じていくつかの機能を実行するプロセスです。 FTP、SMTP、POP3などのアプリケーションレベルのプロトコルのほとんどは、ソケットを使用してクライアントとサーバー間の接続を確立し、データを交換します。

ソケットの種類

ユーザーが使用できるソケットには4つのタイプがあります。 最初の2つは最も一般的に使用され、最後の2つはほとんど使用されません。

プロセスは同じタイプのソケット間でのみ通信すると想定されていますが、異なるタイプのソケット間の通信を妨げる制限はありません。

  • ストリームソケット-ネットワーク環境での配信が保証されています。 ストリームソケットを介して3つの項目「A、B、C」を送信すると、それらは同じ順序で到着します-「A、B、C」。 これらのソケットは、データ送信にTCP(Transmission Control Protocol)を使用します。 配信が不可能な場合、送信者はエラーインジケータを受け取ります。 データレコードには境界がありません。
  • データグラムソケット-ネットワーク環境での配信は保証されていません。 Stream Socketsのように接続を開く必要がないため、コネクションレスです。宛先情報を使用してパケットを作成し、送信します。 UDP(ユーザーデータグラムプロトコル)を使用します。
  • Raw Sockets -これらは、ソケット抽象化をサポートする基礎となる通信プロトコルへのアクセスをユーザーに提供します。 これらのソケットは通常、データグラム指向ですが、その正確な特性はプロトコルによって提供されるインターフェースに依存します。 生のソケットは一般ユーザー向けではありません。それらは主に、新しい通信プロトコルの開発に関心のある人、または既存のプロトコルのより不可解な機能へのアクセスを得るために提供されています。
  • シーケンスパケットソケット-レコード境界が保持されることを除いて、ストリームソケットに似ています。 このインターフェイスは、ネットワークシステム(NS)ソケット抽象化の一部としてのみ提供されており、最も深刻なNSアプリケーションでは非常に重要です。 シーケンスパケットソケットを使用すると、ユーザーは、送信するデータとともにプロトタイプヘッダーを記述するか、またはすべての発信データで使用されるデフォルトヘッダーを指定し、ユーザーが着信パケットでヘッダーを受信できるようにします。

次は何ですか?

次のいくつかの章は、_socket_を使用してサーバーおよびクライアントプログラムを作成する前に、基本を強化し、基盤を準備することを目的としています。 直接ジャンプしてクライアントおよびサーバープログラムの作成方法を確認する場合は、作成できますが、お勧めしません。 プログラミングを行う前に、一歩一歩進んでこれらの最初のいくつかの章を完了してベースを作ることを強くお勧めします。