1.

TCP/IP アプリケーション層完全ガイド (HTTP/DNS/SMTP)

編集
この記事の要点
  • TCP/IP 4 層モデルの最上位 (第 4 層) = アプリケーション層。OSI の 5/6/7 層を統合した位置づけ
  • 主要プロトコル: HTTP/HTTPS, SMTP/POP3/IMAP, FTP/SFTP, SSH, DNS, DHCP, SNMP, NTP, LDAP
  • 各プロトコルには代表ポート番号 (80=HTTP, 443=HTTPS, 22=SSH, 25=SMTP, 53=DNS)
  • TLS は L6 (プレゼンテーション) と L7 の中間。HTTPS / SMTPS 等は TLS でラップ
  • OSI の細分 (セッション/プレゼンテーション/アプリケーション) を TCP/IP はアプリ実装に任せる方針で 1 層に統合

TCP/IP 4 層モデルにおけるアプリケーション層

TCP/IP モデル (DoD モデル) は実装重視で、ネットワーク通信を 4 層に整理しています。アプリケーション層 (第 4 層) はユーザーアプリケーションが直接利用するプロトコル群を含み、OSI 参照モデルの第 5 (セッション) / 第 6 (プレゼンテーション) / 第 7 (アプリケーション) を統合した位置づけです。

TCP/IP 4 層 (上→下)           OSI 7 層 (上→下)            プロトコル例
────────────────────         ────────────────────       ────────────────
第4層 アプリケーション層 ┐    第7層 アプリケーション      HTTP, FTP, DNS
                        │    第6層 プレゼンテーション   TLS, MIME
                        ┘    第5層 セッション           NetBIOS
第3層 トランスポート層        第4層 トランスポート       TCP, UDP
第2層 インターネット層        第3層 ネットワーク         IP, ICMP
第1層 ネットワーク I/F 層 ┐   第2層 データリンク         Ethernet
                        ┘   第1層 物理                 ケーブル, 電波

代表的アプリケーション層プロトコル一覧

プロトコルポート (TCP/UDP)用途
HTTP80 / TCPWeb アクセス
HTTPS443 / TCP暗号化 Web アクセス (TLS over HTTP)
FTP21 (制御) / 20 (データ) TCPファイル転送
SFTP22 / TCPSSH 上のファイル転送
FTPS990 / TCPFTP over TLS
SSH22 / TCP暗号化リモートシェル
Telnet23 / TCP(旧) 平文リモートシェル ★非推奨
SMTP25 (送信) / 587 (Submission) TCPメール送信
SMTPS465 / TCPSMTP over TLS
POP3110 / 995 (POP3S) TCPメール受信 (ダウンロード型)
IMAP143 / 993 (IMAPS) TCPメール受信 (サーバ管理型)
DNS53 / UDP (TCP も使用)名前解決
DHCP67 (server) / 68 (client) UDPIP アドレス自動配布
SNMP161 / UDP, 162 (Trap)ネットワーク機器監視
NTP123 / UDP時刻同期
LDAP389 / 636 (LDAPS) TCPディレクトリサービス
NFS2049 / TCP, UDPUnix ネットワークファイル共有
SMB / CIFS445 / TCPWindows ファイル共有
RDP3389 / TCPWindows リモートデスクトップ
RADIUS1812 (認証) / 1813 (アカウンティング) UDP認証・課金

HTTP / HTTPS

Web の基盤プロトコル。リクエスト/レスポンスのテキストプロトコル (HTTP/2 以降はバイナリ)。

[HTTP リクエスト例]
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html

[HTTP レスポンス例]
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 1234

<!DOCTYPE html>
<html> ... </html>

HTTP メソッド: GET / POST / PUT / DELETE / PATCH / HEAD / OPTIONS
ステータス: 1xx 情報 / 2xx 成功 / 3xx リダイレクト / 4xx クライアントエラー / 5xx サーバエラー

HTTPS = HTTP + TLS。443/TCP。
HTTP/2 (RFC 7540) : バイナリ多重化、HPACK ヘッダ圧縮
HTTP/3 (RFC 9114) : QUIC ベース、UDP 443

DNS

ドメイン名 ↔ IP アドレスの相互変換。階層的に世界中で分散運用されています。

# 名前解決の流れ
# 1. localhost が DNS リゾルバへ問合せ
# 2. リゾルバがルート DNS → TLD (com) → 権威 DNS (example.com) と再帰問合せ
# 3. 結果をキャッシュ (TTL の期間)

# 確認コマンド
dig example.com           # 詳細 (Linux)
dig +trace example.com    # 階層追跡
nslookup example.com      # Windows / Linux 両対応
host example.com          # 簡易

# レコードタイプ
# A     : ホスト名 → IPv4
# AAAA  : ホスト名 → IPv6
# CNAME : ホスト名 → 別ホスト名 (エイリアス)
# MX    : メールサーバ
# NS    : ネームサーバ
# TXT   : SPF, DKIM, DMARC, ドメイン認証
# SOA   : ゾーン管理情報
# PTR   : IP → ホスト名 (逆引き)

SMTP / POP3 / IMAP

プロトコル役割ポート
SMTP (Simple Mail Transfer Protocol)メール送信 (サーバ間/クライアント→サーバ)25 / 587 / 465 (SMTPS)
POP3 (Post Office Protocol v3)メール受信 (サーバから DL し削除型)110 / 995 (POP3S)
IMAP (Internet Message Access Protocol)メール受信 (サーバ管理、フォルダ同期)143 / 993 (IMAPS)
[SMTP 通信例 (Telnet で見る)]
S: 220 mail.example.com ESMTP
C: EHLO client.example.com
S: 250-mail.example.com
S: 250 STARTTLS
C: STARTTLS
S: 220 Ready to start TLS
... TLS ハンドシェイク ...
C: AUTH LOGIN
C: MAIL FROM:<alice@example.com>
S: 250 OK
C: RCPT TO:<bob@example.org>
S: 250 OK
C: DATA
C: Subject: Hello
C: ...
C: .
S: 250 Message accepted
C: QUIT

SSH / SFTP / Telnet

# SSH (Secure Shell): 暗号化リモートシェル
ssh user@host
ssh -p 2222 user@host          # ポート変更
ssh -i ~/.ssh/key.pem user@host  # 公開鍵認証

# SFTP: SSH 上のファイル転送
sftp user@host
> put localfile remotefile
> get remotefile localfile

# SCP: SSH 上のコピー
scp localfile user@host:/path/

# Telnet: 平文リモートシェル ★ 非推奨 (盗聴可能)
# 現代では HTTP/SMTP デバッグの簡易クライアントとしてのみ使用
telnet example.com 80
> GET / HTTP/1.1
> Host: example.com
> (空行)

FTP / SFTP / FTPS

プロトコル暗号化ポート備考
FTPなし21 (制御) + 20 (Active) / Passive はランダム★ 平文認証、現代は非推奨
FTPSTLS990 + データ用 ephemeralFTP の TLS 化
SFTPSSH22 (単一ポート)★ 推奨、ファイアウォール越しに容易

DHCP

[DHCP の 4 ステップ DORA]
1. Discover : クライアントがブロードキャスト「IP くれ」
2. Offer    : DHCP サーバが候補 IP を提示
3. Request  : クライアントが「その IP もらいます」
4. Ack      : サーバが確定通知

リース情報:
 - IP アドレス + サブネットマスク
 - デフォルトゲートウェイ
 - DNS サーバ
 - リース期間 (TTL)

Linux 確認:
  dhclient -v eth0
  cat /var/lib/dhcp/dhclient.leases

Windows:
  ipconfig /all       # 現在の DHCP リース
  ipconfig /release   # リース解放
  ipconfig /renew     # 再取得

SNMP / NTP / LDAP

  • SNMP (Simple Network Management Protocol): ルーター・サーバの CPU/メモリ/IF 統計を取得。Zabbix / PRTG が監視で利用。v3 で暗号化対応。
  • NTP (Network Time Protocol): タイムサーバから時刻取得。ストラタム階層 (Stratum 0/1/2...)。Linux は chrony / ntpd、Windows は w32time。
  • LDAP (Lightweight Directory Access Protocol): ユーザー・組織情報のディレクトリサービス。Active Directory / OpenLDAP。SSO 基盤。

NFS / SMB / RDP

プロトコルOS用途
NFS (Network File System)Unix / Linuxリモートディレクトリをローカルマウント
SMB / CIFSWindows (Linux も Samba)ファイル共有 (\\server\share)
RDP (Remote Desktop Protocol)WindowsGUI でリモート操作
VNCOS 問わずGUI リモート操作 (オープン)

TLS は L6 か L7 か

厳密にはOSI 第 6 層 (プレゼンテーション) の暗号化機能に相当しますが、実装上は TCP の上で動き、アプリケーション層プロトコル (HTTP, SMTP 等) を包む形で機能します。そのためTCP/IP 4 層モデルではアプリケーション層に含めるのが一般的です。HTTPS = HTTP over TLS、SMTPS = SMTP over TLS など。

OSI と TCP/IP の対応 (詳細)

OSI 層主な責務TCP/IP での扱い
L7 アプリケーションアプリ固有プロトコルアプリケーション層に統合
L6 プレゼンテーション文字コード/暗号化/圧縮
L5 セッションセッション管理

TCP/IP は「実装するアプリ側で必要なら持てばよい」という発想で、3 層を 1 層に統合しました。例えば HTTPS は HTTP (L7) + TLS (L6) を組み合わせて 1 つのプロトコルとして実装されます。

FAQ

Q: ポート番号はどう決まる?
A: IANA (Internet Assigned Numbers Authority) が管理。0-1023 は Well-Known Ports (HTTP=80 等)、1024-49151 が Registered Ports、49152-65535 が Dynamic/Private Ports。

Q: HTTP と HTTPS、TLS なしでも見える?
A: HTTP は平文 → 経路途中で盗聴・改ざん可能。現代の Web はHTTPS 必須。Let's Encrypt で無料 SSL 取得可。

Q: 同じプロトコルで TCP と UDP どちらも使うものは?
A: DNS が代表例。通常の問合せは UDP/53、大きな応答 (DNSSEC、ゾーン転送) は TCP/53 を使う。

編集
Post Share
子ページ
  1. HTTP
  2. HTTPS
  3. DNS
  4. FTP
  5. TFTP
  6. DHCP
  7. SMTP
  8. SNMP
  9. POP3
  10. Telnet
  11. NTP
  12. SSH
同階層のページ
  1. アプリケーション層(第4層)
  2. トランスポート層
  3. インターネット層(第2層)
  4. ネットワークインターフェース層(リンク層)(第1層)

最近更新/作成されたページ