3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Socket(ソケット)通信について

3
Posted at

はじめに

ネットワークの学習を始めると、

  • Socket(ソケット)
  • TCP
  • HTTP
  • WebSocket

など、似たような用語がたくさん出てきます。

この記事では、初学者向けに「ソケット通信とは何か」を
できるだけ分かりやすくまとめました。

対象者

  • Socketって何か分からない方
  • HTTPとの違いが分からない方
  • API通信の裏側を知りたい方
  • ネットワーク初学者

ソケット通信とは?

一言でいうと、以下の通りになります。

コンピュータ同士がデータを送受信するための仕組み

もっと簡単にいうと、通信するための窓口になります。

電話で例えると分かりやすい

電話をかけるときは

電話をかける

↓

相手と話す

↓

電話を切る

という流れになります。

ソケット通信も同じです。

接続する

↓

データを送る

↓

データを受け取る

↓

切断する

この流れで通信します。

ソケットとは?

ソケットとは通信するための窓口です。

イメージすると

あなたのプログラム
      │
   Socket
      │
インターネット
      │
   Socket
      │
 相手のプログラム

ソケット同士が通信することでデータを送受信できます。


API通信でもソケットは使われている

例えば

fetch("/api/users")

を書いたとします。

私たちは「APIを呼び出している」と思っていますが、

実際の裏側では

① ソケットを作る

↓

② サーバーへ接続

↓

③ HTTPリクエスト送信

↓

④ レスポンス受信

↓

⑤ 接続終了

という流れになっています。

つまり、API通信もソケット通信の上で動いています。

APIとSocketの違い

ここは最初に混乱しやすいポイントです。

API Socket
何をお願いするか どうやって通信するか

例えば

API = 店員への注文

Socket = 店員と話すための電話

というイメージです。

電話がなければ注文できないように、ソケットがなければAPI通信もできません。

TCPとの関係

ソケットは通信の窓口ですが、
実際にデータを届ける方法としてTCPUDPを利用します。

アプリケーション

↓

Socket

↓

TCP / UDP

↓

IP

↓

インターネット

TCPとは?

TCPはデータを確実に届ける通信方式です。

例えば100文字送ったとして

途中で

こんにちは

だけ届いてしまったら困ります。

TCPでは

届いていません

↓

もう一度送ります

という仕組みがあります。

そのため

  • Webサイト
  • API
  • メール
  • LINE

などで利用されています。

ソケット通信 = TCP?

実は違います。ソケット通信は

通信する仕組み全体です。

TCPはその通信方法の一つになります。

Socket

├── TCP

└── UDP

HTTPとWebSocketの違い

ここも混乱しやすいポイントです。

HTTP

通信するたびに以下を繰り返します。

接続

↓

リクエスト

↓

レスポンス

↓

切断

例えば

  • ログイン
  • 商品一覧取得
  • API取得
  • ユーザー情報取得

などです。

WebSocket

一度接続したら接続を維持したまま通信します。

接続

↓

送信

↓

受信

↓

送信

↓

受信

↓

最後に切断

そのため

  • LINE
  • Discord
  • Slack
  • オンラインゲーム
  • 株価表示

などで利用されています。

天気アプリで考えてみる

例えば以下ならHTTPです。

「今の天気を取得する」

理由は1回取得すれば終わるからです。


一方、以下ならWebSocketです。

「天気が変わったらすぐ通知してほしい」

理由はサーバーからリアルタイムに通知してもらえるからです。


通信方式はどう選ぶ?

以下のように考えれば良いと思います。

HTTP

必要な時だけデータを取得する

  • ログイン
  • 商品検索
  • API
  • マイページ

WebSocket

常に最新情報を受け取りたい

  • チャット
  • ゲーム
  • 株価
  • ライブ配信
  • 通知

全体像

あなたのプログラム
        │
        ▼
API(HTTP / WebSocket)
        │
        ▼
Socket
        │
        ▼
TCP / UDP
        │
        ▼
IP
        │
        ▼
インターネット

まとめ

  • Socketは通信するための窓口
  • API通信も裏側ではSocket通信を利用している
  • SocketはTCPやUDPを利用して通信する
  • HTTPは「1回通信して終了」
  • WebSocketは「接続し続ける」
  • 通信方式は「1回取得したいのか」「リアルタイム性が必要なのか」で選ぶ

おわりに

ネットワークの用語は似たものが多く、最初は混乱しやすいと感じました。

一つの考え方として「Socket」「TCP」「HTTP」「API」

それぞれの役割で整理すると理解しやすくなるかもしれません。

この記事が、ネットワーク学習で悩んでいる方の参考になれば嬉しいです。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?