この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:guest
更新日時:2026-06-11 07:10:02

タイトル: プレゼンテーション層(第6層)
SEOタイトル: OSI 第 6 層 プレゼンテーション層完全ガイド

この記事の要点
  • プレゼンテーション層 (Presentation Layer / 第 6 層)データ形式の変換暗号化 / 圧縮を担当
  • 具体的な機能: 文字コード変換 (ASCII ↔ EBCDIC / UTF-8 / Shift_JIS)、データ圧縮 (gzip / Brotli)、暗号化 (TLS の AES / ChaCha20)、シリアライゼーション (JSON / XML / Protocol Buffers)
  • MIME (Content-Type: application/json / multipart/form-data) は典型的なプレゼンテーション層情報
  • TCP/IP モデルでは独立した層を持たず、アプリケーション層に統合される
  • HTTP/2 の HPACK や HTTP/3 の QPACK はヘッダ圧縮アルゴリズム = 現代のプレゼンテーション層相当機能

プレゼンテーション層とは

OSI 7 階層のうち、上から 2 番目(第 6 層)。アプリケーション層 (L7) とセッション層 (L5) の間に位置し、「アプリが扱うデータをネットワークに流せる形に整える」のが役割です。

機能カテゴリ具体例
データ形式変換ASCII ↔ EBCDIC、エンディアン変換
文字コード変換UTF-8 / UTF-16 / Shift_JIS / EUC-JP
データ表現JSON / XML / YAML / Protocol Buffers / MessagePack / ASN.1
データ圧縮gzip / deflate / Brotli / zstd
暗号化・復号TLS の AES-GCM / ChaCha20-Poly1305
シリアライゼーションJava のシリアライズ / .NET BinaryFormatter
メディア形式JPEG / PNG / MP4 / MP3 / WebP

具体的な機能

1. 文字コード変換

送信側が UTF-8、受信側が Shift_JIS でも同じ文字列を扱えるよう、文字エンコーディングをネットワーク上で揃えるのがプレゼンテーション層の仕事。

POST /api HTTP/1.1
Host: example.com
Content-Type: application/json; charset=utf-8     ← プレゼンテーション層情報

{"name":"佐藤太郎"}

2. データ圧縮

ペイロードのサイズを小さくして転送効率を上げる。HTTP の Content-Encoding / Accept-Encoding ヘッダで交渉。

# リクエスト
GET /large.json HTTP/1.1
Accept-Encoding: gzip, br, zstd, deflate

# レスポンス
HTTP/1.1 200 OK
Content-Type: application/json
Content-Encoding: br                ← Brotli で圧縮
Content-Length: 1024                ← 圧縮後

[Brotli 圧縮されたバイナリ]

3. 暗号化

TLS の暗号スイートはプレゼンテーション層機能として扱われます(ただし OSI 厳密対応ではなく、議論あり)。

暗号スイート用途
AES-128-GCM / AES-256-GCM★ 標準。ハードウェア支援 (AES-NI)
ChaCha20-Poly1305モバイル端末。AES-NI 無し CPU で高速
3DES / RC4非推奨 (TLS 1.3 で削除)

4. シリアライゼーション

オブジェクトをバイト列に変換し、ネットワーク経由で送ったあと、受信側でオブジェクトに戻す。

# JSON  (テキスト、可読、サイズ大)
{"id":1,"name":"Alice","age":30}                       → 35 byte

# XML   (テキスト、冗長)
<user><id>1</id><name>Alice</name><age>30</age></user> → 50 byte

# Protocol Buffers (バイナリ、コンパクト)
0a 05 41 6c 69 63 65 10 1e ...                         → 9 byte

# MessagePack (バイナリ、JSON 互換)
83 a2 69 64 01 a4 6e 61 6d 65 ...                      → 14 byte

MIME (Multipurpose Internet Mail Extensions)

本来はメール用に作られましたが、HTTP / IMAP 等でも広く使われるプレゼンテーション層の標準です。

Content-Type用途
text/html; charset=utf-8HTML
application/jsonJSON API
application/xmlXML API / SOAP
application/x-www-form-urlencodedHTML フォーム
multipart/form-dataファイルアップロード
image/jpeg / image/png / image/webp画像
application/pdfPDF
application/octet-stream不明バイナリ

TCP/IP モデルでの扱い

実装ベースの TCP/IP モデル (RFC 1122) では独立した「プレゼンテーション層」は存在せず、これらの機能はアプリケーション層に統合されています。

OSITCP/IP実装例
L7 ApplicationApplicationHTTP メソッド・SMTP コマンド
L6 PresentationJSON 直列化、TLS 暗号化、gzip
L5 SessionTLS セッション、HTTP/2 ストリーム

現代の例: HTTP/2 HPACK / HTTP/3 QPACK

HTTP/1.1 は毎回大量のテキストヘッダ(Cookie 等)を送るため非効率。HTTP/2 ではプレゼンテーション層相当のヘッダ圧縮アルゴリズム HPACK (RFC 7541) が導入され、HTTP/3 では QUIC の特性に合わせた QPACK (RFC 9204) に進化しました。

# HTTP/1.1 ヘッダ (毎回フルテキスト)
Cookie: session=abc123; lang=ja; theme=dark; uid=1234
User-Agent: Mozilla/5.0 (Macintosh; Intel ...)
Accept: text/html,application/xhtml+xml,...
→ 数百〜数 KB

# HTTP/2 HPACK 後 (静的・動的辞書 + Huffman 符号化)
Index 1: :method = GET
Index 14: cookie = session=abc123
...
→ 数十 byte

歴史的なプロトコル

  • ASN.1 (Abstract Syntax Notation One): ITU-T が定めた抽象構文。SNMP / LDAP / X.509 証明書で現役
  • XDR (External Data Representation, RFC 4506): NFS / RPC で使用
  • NDR: DCE/RPC のデータ表現
  • BER / DER / PER: ASN.1 のエンコーディング規則 (DER が証明書で利用)

FAQ

Q: TLS はプレゼンテーション層、それともセッション層?
A: OSI に厳密に当てはまらず議論あり。一般的には「L4 (Transport) と L7 (Application) の間で暗号化 = L6、セッション管理 = L5」と説明されます。実装上は単一ライブラリ (OpenSSL 等) でまとめて提供されます。

Q: JSON / Protocol Buffers は L6 か L7 か?
A: 表現形式そのものは L6 (Presentation)。それを使うアプリ仕様 (どの URL に POST するか等) は L7 です。

Q: 圧縮はトランスポート層でやってはダメ?
A: 必ずしも 6 層で行う必要はありません。TLS にも圧縮機能はありましたが、CRIME 攻撃のため TLS 圧縮は廃止され、現代では HTTP 層 (L6/L7) でのみ圧縮するのが安全とされています。