コンテンツにスキップ

HTTP

HTTPとは

HTTP(HyperText Transfer Protocol)は、Web上でデータをやり取りするための通信プロトコルである。

主に

  • Webサイトの表示
  • API通信
  • ブラウザとサーバーのやり取り

に使われる。


HTTPの基本構造

HTTPは

クライアント ↔ サーバー

の形で通信する。


ブラウザ
 ↓ HTTPリクエスト
Webサーバー
 ↓ HTTPレスポンス
ブラウザ

クライアントとサーバー

クライアント

リクエストを送る側。

  • ブラウザ(Chromeなど)
  • スマホアプリ
  • マイコン(ESP32など)

サーバー

リクエストに対してデータを返す側。

  • Webサーバー
  • APIサーバー

HTTPの仕組み

HTTPは基本的に

リクエスト → レスポンス

の1往復で完結する。


状態を保持しないため

ステートレス

なプロトコルである。


HTTPリクエスト

クライアントがサーバーに送る要求。


構成

メソッド
URL
ヘッダー
ボディ(必要な場合)

HTTPメソッド

代表的なメソッドは以下。

メソッド 役割
GET データ取得
POST データ送信
PUT 更新
DELETE 削除

GET

データを取得する

https://example.com/api/user

POST

データを送信する

ユーザー登録
ログイン

HTTPレスポンス

サーバーからの返答。


構成

ステータスコード
ヘッダー
ボディ(データ)

ステータスコード

HTTPでは結果を数値で表す。

コード 意味
200 成功
301 リダイレクト
400 クライアントエラー
401 認証エラー
403 禁止
404 見つからない
500 サーバーエラー

HTTPSとの違い

HTTPは平文通信。

HTTP → 暗号化なし

HTTPSは

HTTP + TLS/SSL

で暗号化されている。


特徴

項目 HTTP HTTPS
暗号化 なし あり
安全性 低い 高い
ポート 80 443

現在のWebでは

HTTPSが標準

である。


HTTPヘッダー

追加情報を送る部分。

Content-Type: application/json
Authorization: Bearer token

用途

  • データ形式指定
  • 認証情報
  • キャッシュ制御

HTTPボディ

実際のデータ部分。

例(JSON)

{
  "name": "Taro",
  "age": 20
}

主にPOSTやPUTで使われる。


JSONとの関係

HTTPではJSONがよく使われる。

理由

  • 軽量
  • 読みやすい
  • 多言語対応

HTTP + JSON = APIの基本構成

REST APIとの関係

HTTPを使った設計の一種がREST APIである。

GET /users
POST /users
DELETE /users/1

ブラウザの動き

ブラウザはHTTPを使ってページを取得する。

URL入力
 ↓
DNS
 ↓
HTTPリクエスト
 ↓
HTML取得
 ↓
レンダリング

HTTPの通信の流れ

例:Webページ表示

1. URL入力
2. DNSでIP取得
3. TCP接続
4. HTTPリクエスト送信
5. HTML受信
6. CSS/JS取得
7. 描画

API通信の例

GET /api/sensor

レスポンス

{
  "temp": 25.3
}

マイコンとHTTP

ESP32やRaspberry PiはHTTP通信が可能。

センサ
 ↓
ESP32
 ↓ HTTP
サーバー

STM32単体では難しいが、

  • Wi-Fiモジュール
  • Ethernet

を使えば可能。


よくあるトラブル

404エラー

URLが存在しない。


500エラー

サーバー側のバグ。


CORSエラー

ブラウザのセキュリティ制限。


タイムアウト

通信が遅い or 切断。


CORSとは

ブラウザの制限で

別ドメインへのアクセス制限

がある。


API開発ではよく遭遇する問題である。


HTTPの進化

  • HTTP/1.1
  • HTTP/2
  • HTTP/3(QUIC)

HTTP/2以降では

  • 高速化
  • 並列通信
  • 圧縮

が改善されている。


まとめ

HTTPはWeb通信の基本プロトコルである。

  • クライアントとサーバーで通信する
  • GET/POSTなどのメソッドを持つ
  • ステータスコードで結果を表す
  • HTTPSで暗号化される
  • JSONと組み合わせてAPIで多用される

Web開発から組み込み通信まで幅広く使われる重要な基礎技術である。

余談

HTTPでは中間攻撃者にとても弱いため暗号が技術(SSL/TLS)を使用した暗号化通信HTTPSが現在は普及している。