ソケットは、1981 年以降の SunOS リリースの必須部分になっています。ソケットは、名前をバインドできる通信の終端です。ソケットにはタイプがあり、関連プロセスが 1 つ存在します。ソケットは、次のようなプロセス間通信のためのクライアントサーバーモデルを実装するために設計されました。
ネットワークプロトコルのインタフェースが、TCP/IP、Xerox インターネットプロトコル (XNS)、UNIX ファミリのような複数の通信プロトコルを提供する必要がある
ネットワークプロトコルのインタフェースが、コネクションを待機するサーバーコードとコネクションを開始するクライアントコードを提供する必要がある
通信がコネクション型であるかコネクションレス型であるかによって操作を変える必要がある
アプリケーションプログラムが、open(2) 呼び出しを使用してアドレスをバインドするのではなく、配信しようとしているデータグラムの着信先アドレスを指定する必要がある
ソケットは、UNIX ファイルのように動作し、ネットワークプロトコルが使用できるようにします。アプリケーションは、必要に応じてソケットを作成します。ソケットは、close(2)、read(2)、write(2)、ioctl(2)、および fcntl(2) インタフェースとともに動作します。オペレーティングシステムは、ファイルのファイル記述子とソケットのファイル記述子を区別します。
ソケットインタフェースルーチンは、アプリケーションとリンクが必要なライブラリ内に存在します。ライブラリ libsocket.so が、その他のシステムサービスライブラリとともに /usr/lib に含まれています。libsocket.so は動的リンクに使用されます。
ソケットタイプには、ユーザーが認識できる通信プロパティーを定義します。インターネットファミリソケットは、TCP/IP トランスポートプロトコルへのアクセスを提供します。インターネットファミリは、IPv6 と IPv4 の両方で通信可能なソケットの場合に、値 AF_INET6 によって識別されます。以前のアプリケーションとのソース互換性および IPv4 への raw アクセスのために、値 AF_INET もサポートされています。
次に、SunOS 環境がサポートする 4 つのタイプのソケットを示します。
「ストリームソケット」は、TCP を使用したプロセスの通信を可能にします。ストリームソケットは、信頼性の高い、順序付けされた、重複のない双方向データフローをレコード境界なしで提供します。コネクションが確立されたあと、これらのソケットからのデータの読み取り、およびこれらのソケットに対するデータの書き込みがバイトストリームとして行えます。ソケットタイプは SOCK_STREAM
です。
「データグラムソケット」は、UDP を使用したプロセスの通信を可能にします。データグラムソケットは、メッセージの双方向フローをサポートします。データグラムソケット側のプロセスは、送信シーケンスとは異なる順序でメッセージを受信することがあります。また、データグラムソケット側のプロセスは、重複したメッセージを受信することがあります。データグラムソケットで送信されるメッセージは、失われる場合があります。データ内のレコード境界は保持されます。ソケットタイプは SOCK_DGRAM
です。
「raw ソケット」は、ICMP へのアクセスを提供します。raw ソケットは、ネットワーキングスタックによって直接サポートされない IP ベースのほかのプロトコルへのアクセスも提供します。このタイプのソケットは、通常、データグラム型ですが、実際の特性はプロトコルが提供するインタフェースに依存します。raw ソケットは、ほとんどのアプリケーションには使用されません。raw ソケットは、新しい通信プロトコルの開発をサポートしたり、既存プロトコルの難解な機能にアクセスしたりするために提供されています。raw ソケットを使用できるのは、スーパーユーザープロセスだけです。ソケットタイプは SOCK_RAW
です。
「SEQ ソケット」は、1 対 N のストリーム制御伝送プロトコル (Stream Control Transmission Protocol、SCTP) コネクションをサポートします。SCTP の詳細は、「Stream Control Transmission Protocol (SCTP)」で説明しています。
詳細については、「特定のプロトコルの選択」を参照してください。
SunOS 5.10 プラットフォームは 2 つのソケットインタフェースセットを提供します。BSD ソケットインタフェース、および XNS 5 (Unix03) ( SunOS バージョン 5.7 以降) ソケットインタフェースです。XNS 5 インタフェースは、BSD インタフェースとわずかに異なります。
XNS 5 ソケットインタフェースについては、次のマニュアルページを参照してください。
従来の BSD ソケットの動作については、対応する 3N のマニュアルページを参照してください。さらに、マニュアルページのセクション 3N には、次のような新しいインタフェースが追加されました。
XNS 5 (Unix03) ソケットインタフェースを使用するアプリケーションを構築する方法については、standards(5) のマニュアルページを参照してください。