トランスポート サービス プロバイダー
特定のトランスポート サービス プロバイダーは、1 つ以上のプロトコルをサポートします。 たとえば、TCP/IP プロバイダーは最小として TCP プロトコルと UDP プロトコルを提供し、IPX/SPX プロバイダーは IPX、SPX、および SPX II を提供します。 特定のプロバイダーによってサポートされる各プロトコルは、WSAPROTOCOL_INFO 構造体によって記述され、このような構造体の合計セットは、インストールされているプロトコルのカタログと考えることができます。 アプリケーションは、このカタログの内容を取得できます (詳細については、WSAEnumProtocols、WSCEnumProtocols、および WSCEnumProtocols32を参照してください)、使用可能な WSAPROTOCOL_INFO 構造を調べることで、各プロトコルに関連付けられている通信属性を検出します。
SPI の階層化されたプロトコルとプロトコル チェーン
Windows ソケット 2 は、階層化プロトコルの概念に対応しています。 階層型プロトコルは、リモート エンドポイントとのデータの実際の交換に基づくトランスポート スタックに依存しながら、上位レベルの通信機能のみを実装するプロトコルです。 このような階層化されたプロトコルの例としては、認証を実行し、相互に合意された暗号化スキームを確立するために、接続確立プロセスにプロトコルを追加するセキュリティ層があります。 このようなセキュリティ プロトコルでは、一般に、TCP や SPX などの基になる信頼性の高いトランスポート プロトコルのサービスが必要になります。 ベース プロトコルという用語は、リモート エンドポイントとのデータ通信を完全に実行できる TCP や SPX などのプロトコルを指し、階層化プロトコルという用語は、単独で立つことができないプロトコルを記述するために使用されます。 その後、プロトコル チェーンは、1 つ以上の階層化されたプロトコルとして定義され、ベース プロトコルによってまとめて固定されます。
階層化プロトコルとベース プロトコルのチェーンへのこの文字列化は、上位と下端の両方で Winsock SPI をサポートするように階層化プロトコルを配置することで実現できます。 プロトコル チェーン全体を参照し、階層化されたプロトコルが結合される明示的な順序を記述する特殊な WSAPROTOCOL_INFO 構造が作成されます。 これを次の図に示します。