ソケットとは何ですか?
ソケットを使用すると、同じマシンまたは異なるマシン上の2つの異なるプロセス間の通信が可能になります。より正確には、標準のUnixファイル記述子を使用して他のコンピューターと通信する方法です。Unixでは、すべてのI / Oアクションはファイル記述子の書き込みまたは読み取りによって実行されます。ファイル記述子は、開いているファイルに関連付けられた単なる整数であり、ネットワーク接続、テキストファイル、端末、またはその他のものにすることができます。
プログラマーにとって、ソケットは低レベルのファイル記述子のように見え、動作します。これは、read()やwrite()などのコマンドが、ファイルやパイプの場合と同じようにソケットで機能するためです。
ソケットは2.1BSDで最初に導入され、その後4.2BSDで現在の形式に改良されました。ソケット機能は、現在のほとんどのUNIXシステムリリースで使用できるようになりました。
ソケットはどこで使用されますか?
Unixソケットは、クライアントサーバーアプリケーションフレームワークで使用されます。サーバーは、クライアントからの要求に応じていくつかの機能を実行するプロセスです。FTP、SMTP、POP3などのほとんどのアプリケーションレベルのプロトコルは、ソケットを使用してクライアントとサーバー間の接続を確立し、データを交換します。
ソケットタイプ
ユーザーが使用できるソケットには4つのタイプがあります。最初の2つは最も一般的に使用され、最後の2つはめったに使用されません。
プロセスは同じタイプのソケット間でのみ通信すると想定されますが、異なるタイプのソケット間の通信を妨げる制限はありません。
Stream Sockets−ネットワーク環境での配信が保証されます。ストリームソケットを介して3つのアイテム「A、B、C」を送信すると、それらは同じ順序で到着します-「A、B、C」。これらのソケットは、データ転送にTCP(Transmission Control Protocol)を使用します。配信が不可能な場合、送信者はエラーインジケータを受け取ります。データレコードには境界がありません。
Datagram Sockets−ネットワーク環境での配信は保証されません。Stream Socketsのように接続を開く必要がないため、コネクションレス型です。宛先情報を使用してパケットを作成し、送信します。それらはUDP(ユーザーデータグラムプロトコル)を使用します。
Raw Sockets−これらは、ソケットの抽象化をサポートする基盤となる通信プロトコルへのアクセスをユーザーに提供します。これらのソケットは通常、データグラム指向ですが、正確な特性はプロトコルによって提供されるインターフェイスによって異なります。rawソケットは一般ユーザー向けではありません。これらは主に、新しい通信プロトコルの開発に関心のある人、または既存のプロトコルのより不可解な機能のいくつかにアクセスするために提供されています。
Sequenced Packet Sockets−レコードの境界が保持されることを除いて、ストリームソケットに似ています。このインターフェイスは、ネットワークシステム(NS)ソケットの抽象化の一部としてのみ提供され、最も深刻なNSアプリケーションで非常に重要です。シーケンスパケットソケットを使用すると、ユーザーは、送信するデータと一緒にプロトタイプヘッダーを書き込むか、パケットまたはパケットグループのシーケンスパケットプロトコル(SPP)またはインターネットデータグラムプロトコル(IDP)ヘッダーを操作できます。すべての発信データで使用されるデフォルトのヘッダーを指定し、ユーザーが着信パケットでヘッダーを受信できるようにします。
次は何ですか?
次のいくつかの章は、ソケットを使用してサーバーおよびクライアントプログラムを作成する前に、基本を強化し、基盤を準備することを目的としています。クライアントおよびサーバープログラムの作成方法を直接確認したい場合は、そうすることができますが、お勧めしません。プログラミングに進む前に、ステップバイステップでこれらの最初の数章を完了してベースを作成することを強くお勧めします。