論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
通信プロトコル
Network Protocol
データエンジニアリング

🔖 キーワード索引

TCP/IPHTTPHTTPSFTPSMTPWebSocketgRPCRESTOSI参照モデルポート

別名・略称:(なし)

💡 30秒で分かる結論

通信プロトコル(Network Protocol):HTTP、 TCP/IP 等の通信規約

📍 あなたが今見ているもの

API を呼ぶ、 データを送る、 メールを送る、 全て 通信プロトコル が裏で動いています。 「APIが返さない」「タイムアウトする」 といったトラブルの多くは、 プロトコルレベルの理解で解決します。 また、 HTTPS と HTTP の違い はセキュリティ・コンプライアンスの基本知識です。

🎨 直感で掴む

主要プロトコル一覧

プロトコルポート用途
HTTP80Web(平文)
HTTPS443Web(暗号化)
FTP21ファイル転送
SSH22リモート操作
SMTP25/587メール送信
DNS53名前解決

📐 定義 / 数式

プロトコルは数式ではなく 状態機械やメッセージフォーマット で記述します。

【HTTP リクエストの構造】
GET /api/v1/data HTTP/1.1
Host: api.example.com
Authorization: Bearer xyz
Accept: application/json
【3-way handshake (TCP)】
$$\text{Client} \xrightarrow{\text{SYN}} \text{Server} \xrightarrow{\text{SYN-ACK}} \text{Client} \xrightarrow{\text{ACK}} \text{Server}$$

🔬 記号・式を言葉で読み解く

OSI 7 層
物理層から順に7層に分けて責務を分離。 各層は独立して進化できる。
TCP
信頼性のあるストリーム通信。 順序保証・再送・フロー制御。
UDP
信頼性なしの軽量通信。 ゲーム・動画ストリーミング向け。
ポート番号
0〜65535。 各サーバプログラムが利用する番号。
ステータスコード
HTTP 応答に付く 3 桁の数字。 200 成功、 404 not found、 500 サーバエラー。

🧮 実データで計算してみる

API データ取得時の通信フロー:

  1. クライアント → DNS:api.example.com の IP を問い合わせ
  2. DNS → クライアント:203.0.113.10 を返す
  3. クライアント → サーバ:TCP 3-way handshake
  4. クライアント → サーバ:TLS handshake(HTTPSの場合)
  5. クライアント → サーバ:HTTP GET /data
  6. サーバ → クライアント:HTTP 200 OK + JSONレスポンス

🐍 Python 実装

SSDSE-B-2026(47 都道府県・2023 年データ)を題材にした最小コード:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# HTTPS で REST API を叩く(最も典型的)
import requests

r = requests.get(
    'https://api.example.com/data',
    headers={'Authorization': 'Bearer xyz'},
    timeout=10
)
print(r.status_code)  # 200, 404, 500 など
print(r.json())

⚠️ よくある落とし穴

⚠️ HTTP(暗号化なし)の使用
API キーを送るのに HTTP を使うと盗聴される。 必ず HTTPS。
⚠️ タイムアウト未設定
API が応答しないとプログラムが永遠に固まる。 必ず timeout を設定。
⚠️ ステータスコードを確認しない
200 以外も json() を呼ぶとエラーに。 r.raise_for_status()
⚠️ ポートが開いていない
ファイアウォールで該当ポートが閉じていると繋がらない。
⚠️ レート制限を無視
短時間に大量リクエストで 429 Too Many Requests。 リトライバックオフを実装。

🌐 関連手法・この用語を使う論文

📄 API データを使う論文
API 経由のデータ取得はプロトコル知識が前提です。