非同期ソケット通信、簡易チャットプログラム -002-
前へ TOPへ 次へ

Windows Sockets (ウィンドウズ・ソケット)

ここではまず,一般のソケット(UNIX版)の考え方と,これと互換性を持つWindowsソケットの関連について説明します。

<ソケット通信とWindows版ソケット>

現在インターネットの標準プロトコルとしてTCP/IPが急速に普及しています。 TCP/IPは1980年代初め、BSD(Berkeley Software Distribution)版UNIXにおいてローカルのプロセス間通信を行うメカニズムとしてソケットが実装され、その後ネットワーク通信インタフェースとして発達したものです。

このソケットインタフェースは以後様々なUNIXに移植され、UNIXにおける標準のネットワーク通信インタフェースとなっています。 Windowsにおいては、TCP/IPプロトコルの通信インタフェースを実現するため、1992年にTCP/IPネットワークコミュニティに属する20社以上のベンダが協力して、API仕様が策定されました。 これがWindows Socketsです。 Windows Socketsの仕様は基本的にUNIXと同じであるため、UNIXで動作していたソケットアプリケーションの移植は比較的簡単で、UNIX~Windows間のネットワーク通信も容易に実現することができます。 ソケットにはストリームソケットと、データグラムソケットの2種類があり、どちらのソケットも、全二重の同時双方向通信を行うことができます。

ストリームソケットは連続的なデータを境界のない形式で送ることのできる方式(データフロー方式)で、実際のデータ送受信に先立ってコネクションを確立する必要がありますが(コネクション型通信方式)、このため信頼性のあるデータ送受信が保証されています。 確実なデータの送受信やサイズの大きいデータ転送に適しています。 トランスポート層プロトコルとしてTCP (Transmission Control Protocol)を使用します。 ストリームソケットで”下請け”にIPプロトコルを用いる場合、TCP/IP通信と呼びます。 信頼性がある通信方式である反面、速度を犠牲にしています。

一方、データグラムソケットは、ある大きさのレコードを単位としたコネクションレス型通信方式です。 データの通信における送信データの順序は保証されず、データ損失や重複が起こる可能性もあるため、このままではデータの信頼性が確保できません。 そこで信頼性を確保するためにはアプリケーション側で何らかの機能を付け加える必要があります。 トランスポート層プロトコルはUDP(User Datagram Protocol)を使用して通信を行うため、LANのように下位層での信頼性がある程度確保できるネットワーク環境下ではTCPよりも高速な通信が可能となります。 この場合も”下請け”にIPプロトコルを用いるのでUDP/IP通信と呼びます。

TELNETやFTP、HTTP、SMTP、POP3といったプロトコルには信頼性の高いストリームソケット、一方マルチキャストやブロードキャストを使った画像配信など、実時間性の高いアプリケーションにはデータグラムソケットが適しています。 すなわち信頼性の確保にはTCP/IP通信、実時間性、高速性の確保にはUDP/IPが使われることを覚えておいてください。 今回のWindowsSocketの解説では、より実用性が高いと思われるストリームソケット(TCP/IP)について重点的に解説していきます。

データの流れ

前へ TOPへ 次へ