0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#0030(2024/02/01)ソケット通信とはなにか

Last updated at Posted at 2025-02-01

ソケット通信とは

概要

ソケット通信(Socket Communication)とは、ネットワークを介してプロセス間通信(IPC: Inter-Process Communication)を行うための技術の一つ。
特に、TCP/IP や UDP/IP を利用してデータの送受信を行う際に用いられる。

ソケットの基本概念

ソケット(Socket)は、ネットワーク通信を行う際の エンドポイント(端点) を指す。
通信を行うには、ソケットを作成し、適切なプロトコル(TCP/UDP)を用いて接続・データ送受信を行う 必要がある。

ソケットの主要な役割

  1. 通信の確立: クライアントとサーバー間での接続確立
  2. データ送受信: バイトストリームやパケットのやり取り
  3. 通信の終了: ソケットを閉じてリソースを解放

TCP ソケットと UDP ソケットの違い

項目 TCP ソケット UDP ソケット
プロトコル TCP(Transmission Control Protocol) UDP(User Datagram Protocol)
接続の確立 必要(3-way handshake) 不要
データ転送方式 ストリーム指向(順序保証あり) データグラム指向(順序保証なし)
信頼性 高い(パケットの確認応答、再送制御あり) 低い(パケットロスが発生しやすい)
速度 遅め(信頼性のための処理が多い) 速い(制御が少ないため)
用途 Web通信(HTTP/HTTPS)、ファイル転送(FTP)、メール(SMTP/IMAP)など 音声・動画ストリーミング(VoIP)、DNS、オンラインゲーム など

ソケット通信の基本的な流れ(TCP)

  1. サーバー側

    • socket() を使ってソケットを作成
    • bind() でIPアドレスとポートを指定
    • listen() で接続待機
    • accept() でクライアントからの接続を受け入れる
  2. クライアント側

    • socket() でソケットを作成
    • connect() でサーバーに接続要求を送る
  3. データ通信

    • send() / recv() を使ってデータの送受信
  4. 通信終了

    • close() でソケットを閉じる

ソケット通信の応用例

  • Webサーバーとブラウザの通信(HTTP, HTTPS)
  • オンラインゲームのリアルタイム通信
  • IoT デバイスのデータ送信
  • ストリーミング配信(動画・音声)
  • チャットアプリ(WebSocketを利用)

まとめ

ソケット通信は、ネットワークを介したデータ通信の基盤となる技術であり、
TCP・UDP などのプロトコルと組み合わせて 用途に応じた効率的な通信 を実現する。

特に、TCPは信頼性重視、UDPは速度重視 の特性を持つため、
目的に応じて適切なプロトコルを選択することが重要。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?