HTTP-ネットワーク基礎-【ネスペ】

ネスペ(NW)

インターネットでWebサイトを閲覧するとき、ブラウザとWebサーバの間では「HTTP」というプロトコルが利用されています。

ネットワークスペシャリストやCCNAなどの資格試験でも頻出の重要技術です。

本記事ではHTTPの基本からHTTP/3、QUIC、セキュリティ対策まで体系的に解説します。


HTTPとは?

HTTP(HyperText Transfer Protocol)は、WebブラウザとWebサーバ間でデータをやり取りするためのアプリケーション層プロトコルです。

例えばブラウザでURLを入力すると、

  1. ブラウザがHTTPリクエストを送信
  2. WebサーバがHTTPレスポンスを返却
  3. ブラウザがHTMLを表示

という流れで通信が行われます。

HTTPはTCP/IPのアプリケーション層で動作し、通常は以下のポート番号を利用します。

プロトコルポート番号
HTTP80
HTTPS443

HTTPの概要

HTTPメソッド

HTTPメソッドはサーバに対する操作内容を表します。

メソッド内容
GETデータ取得
POSTデータ登録
PUTデータ更新
DELETEデータ削除
PATCH一部更新
HEADヘッダー取得
OPTIONS利用可能メソッド確認

GET /index.html HTTP/1.1
Host: example.com

HTTPステータスコード

サーバの処理結果を表します。

1xx:情報

コード内容
100Continue

2xx:成功

コード内容
200OK
201Created

3xx:リダイレクト

コード内容
301Moved Permanently
302Found

4xx:クライアントエラー

コード内容
400Bad Request
401Unauthorized
403Forbidden
404Not Found

5xx:サーバエラー

コード内容
500Internal Server Error
503Service Unavailable

REST API

REST(Representational State Transfer)はHTTPを利用したAPI設計思想です。

操作HTTPメソッド
取得GET
登録POST
更新PUT/PATCH
削除DELETE

例:

GET /users/1

→ ユーザー情報取得

DELETE /users/1

→ ユーザー削除


HTTPヘッダー

HTTP通信に付加情報を与える領域です。

リクエストヘッダー

Host: example.com
User-Agent: Chrome
Accept: text/html

レスポンスヘッダー

Content-Type: text/html
Content-Length: 1024

Cookie

Cookieはサーバがブラウザへ保存させる小さなデータです。

利用例

  • ログイン状態維持
  • ショッピングカート
  • アクセス解析

Cookie属性

属性内容
Expires有効期限
Domain適用ドメイン
Path適用パス
SecureHTTPSのみ送信
HttpOnlyJavaScript参照禁止
SameSiteCSRF対策

Set-Cookie: sessionid=12345;
Secure;
HttpOnly;
SameSite=Strict

HTTPの通信シーケンス

ユーザーがWebサイトへアクセスする流れです。

ブラウザ                Webサーバ

|----HTTP Request---->|
| |
|<---HTTP Response----|
| |

実際にはDNSやTCP接続も含まれます。

DNS名前解決

TCP接続確立

HTTPリクエスト

HTTPレスポンス

TCP切断

HTTPSの場合はTCP接続後にTLSハンドシェイクが実施されます。


HTTPバージョンの違い

項目HTTP/1.1HTTP/2HTTP/3
プロトコルTCPTCPQUIC(UDP)
多重化×
ヘッダー圧縮×
HoLブロッキング発生一部発生解消
通信効率非常に高

HTTP/1.1

HTTP/1.1では1つのTCP接続上で複数リクエストを送信できます。

HTTPパイプライン

GET A
GET B
GET C

を連続送信可能です。

しかし応答は順番に返されます。

Response A
Response B
Response C

HoLブロッキング

HoL(Head of Line)ブロッキングとは、

先頭の処理が遅延すると後続処理も待たされる現象です。

重い画像

軽いCSS

軽いJS

画像の取得待ちでCSSやJSも遅延します。


HTTP/2

HTTP/2はHTTP/1.1の性能問題を大幅に改善しました。


ヘッダー圧縮

HTTPでは同じヘッダーが大量に送信されます。

User-Agent
Cookie
Host

HTTP/2では圧縮して送信します。


HPACK

HPACKはHTTP/2専用のヘッダー圧縮方式です。

同じヘッダーを辞書化して再利用します。

Host: example.com

Index 1

通信量を削減できます。


ストリームの多重化

HTTP/1.1

Request

Response

Request

Response

HTTP/2

Stream1
Stream2
Stream3

複数通信を同時処理できます。


フロー制御

受信側が処理可能な量だけ送信させる仕組みです。

送信可能量 = Window Size

受信バッファあふれを防止します。


HTTP/3

HTTP/3ではTCPを廃止しQUICを採用しました。


QUICとは

QUICはUDP上で動作する新しい通信プロトコルです。

特徴

  • TLS統合
  • 高速接続
  • 再送遅延削減
  • HoLブロッキング解消

HTTP/2との違い

HTTP/2

TCP
└─ Stream1
└─ Stream2

パケットロス発生

TCP全体が再送待ち

全ストリーム停止


HTTP/3

QUIC
└─ Stream1
└─ Stream2

パケットロス発生

対象ストリームのみ再送

他ストリームは継続


HTTPのセキュリティ

プロキシサーバ

クライアントとサーバの中継装置です。

フォワードプロキシ

PC

Proxy

Internet

用途

  • キャッシュ
  • フィルタリング
  • アクセス制御

リバースプロキシ

Internet

Proxy

Web Server

用途

  • 負荷分散
  • SSL終端
  • サーバ隠蔽

WAF

WAF(Web Application Firewall)はWebアプリケーション専用のファイアウォールです。

防御対象

  • SQLインジェクション
  • XSS
  • CSRF
  • ディレクトリトラバーサル

通常のFWよりもHTTPの中身を詳細に解析できます。


まとめ

  • HTTPはWeb通信のためのアプリケーション層プロトコル
  • HTTP通信はリクエストとレスポンスで構成
  • REST APIはHTTPメソッドを活用する設計思想
  • Cookieはログイン状態維持などに利用
  • HTTP/1.1はHoLブロッキングが課題
  • HTTP/2はヘッダー圧縮と多重化で高速化
  • HTTP/3はQUICによりHoLブロッキングを解消
  • プロキシやWAFによってWeb通信を保護できる

確認問題

1. HTTPはOSI参照モデルの何層で動作しますか?
解答 アプリケーション層(第7層)
Q2. データ取得に使用するHTTPメソッドは何ですか?
解答 GET
Q3. Webページが正常に表示された場合の代表的なステータスコードは何ですか?
解答 200 OK
Q4. HTTP/1.1で発生するHoLブロッキングとは何ですか?
解答 先頭の処理が遅延すると後続の処理も待たされる現象
Q5. HTTP/2で導入されたヘッダー圧縮方式を何と呼びますか?
解答 HPACK
Q6. HTTP/2の性能向上を支える主要機能を2つ答えてください。
解答 ストリームの多重化、ヘッダー圧縮
Q7. HTTP/3で利用されるプロトコルは何ですか?
解答 QUIC
Q8. QUICはTCPとUDPのどちらを利用しますか?
解答 UDP
Q9. Webアプリケーションへの攻撃を防御する専用装置は何ですか?
解答 WAF
Q10. CookieのHttpOnly属性の目的は何ですか?
解答 JavaScriptからCookieを参照できないようにし、XSSによるCookie窃取を防ぐため

コメント

タイトルとURLをコピーしました