ソケット通信とは
概要
ソケット通信(Socket Communication)とは、ネットワークを介してプロセス間通信(IPC: Inter-Process Communication)を行うための技術の一つ。
特に、TCP/IP や UDP/IP を利用してデータの送受信を行う際に用いられる。
ソケットの基本概念
ソケット(Socket)は、ネットワーク通信を行う際の エンドポイント(端点) を指す。
通信を行うには、ソケットを作成し、適切なプロトコル(TCP/UDP)を用いて接続・データ送受信を行う 必要がある。
ソケットの主要な役割
- 通信の確立: クライアントとサーバー間での接続確立
- データ送受信: バイトストリームやパケットのやり取り
- 通信の終了: ソケットを閉じてリソースを解放
TCP ソケットと UDP ソケットの違い
項目 | TCP ソケット | UDP ソケット |
---|---|---|
プロトコル | TCP(Transmission Control Protocol) | UDP(User Datagram Protocol) |
接続の確立 | 必要(3-way handshake) | 不要 |
データ転送方式 | ストリーム指向(順序保証あり) | データグラム指向(順序保証なし) |
信頼性 | 高い(パケットの確認応答、再送制御あり) | 低い(パケットロスが発生しやすい) |
速度 | 遅め(信頼性のための処理が多い) | 速い(制御が少ないため) |
用途 | Web通信(HTTP/HTTPS)、ファイル転送(FTP)、メール(SMTP/IMAP)など | 音声・動画ストリーミング(VoIP)、DNS、オンラインゲーム など |
ソケット通信の基本的な流れ(TCP)
-
サーバー側
-
socket()
を使ってソケットを作成 -
bind()
でIPアドレスとポートを指定 -
listen()
で接続待機 -
accept()
でクライアントからの接続を受け入れる
-
-
クライアント側
-
socket()
でソケットを作成 -
connect()
でサーバーに接続要求を送る
-
-
データ通信
-
send()
/recv()
を使ってデータの送受信
-
-
通信終了
-
close()
でソケットを閉じる
-
ソケット通信の応用例
- Webサーバーとブラウザの通信(HTTP, HTTPS)
- オンラインゲームのリアルタイム通信
- IoT デバイスのデータ送信
- ストリーミング配信(動画・音声)
- チャットアプリ(WebSocketを利用)
まとめ
ソケット通信は、ネットワークを介したデータ通信の基盤となる技術であり、
TCP・UDP などのプロトコルと組み合わせて 用途に応じた効率的な通信 を実現する。
特に、TCPは信頼性重視、UDPは速度重視 の特性を持つため、
目的に応じて適切なプロトコルを選択することが重要。