インターネットで実際に使われている通信のしくみがTCP/IPです。ネットワークの勉強では、OSI参照モデルの7つの層と並んで、TCP/IPモデルの4つの層もよく出てきます。
この記事では、TCP/IPモデルの4つの層と主なプロトコル、データが層を通って届くまでの流れ、OSI参照モデルとの対応、層ごとにトラブルを切り分ける安全な確かめ方を、初心者向けにまとめます。
TCP/IPモデルとは?
TCP/IPは、IP(Internet Protocol)やTCP(Transmission Control Protocol)を中心とした、インターネットで使われるプロトコルの集まり(インターネット・プロトコル・スイート)です。TCP/IPモデルは、このプロトコルの集まりを層に分けて整理したものです。
インターネットにつながるホスト(パソコンやサーバーなど)が満たすべき要件をまとめたRFC 1122では、「インターネットのシステムで通信するには、ホストは層に分かれたプロトコルの集まりを実装しなければならず、ふつうは各層から少なくとも1つのプロトコルを実装する」と説明し、次の4つの層を挙げています。

| 層(RFC 1122) | 役割 | 主なプロトコル・例 | データの呼び方(一般的な呼び方) |
|---|---|---|---|
| アプリケーション層 | アプリが何をやりとりするかを決める | HTTP、DNS、SMTP、SSH | データ、メッセージ |
| トランスポート層 | アプリどうしをつなぎ、確実に(または速く)届ける | TCP、UDP | セグメント(TCP)、データグラム(UDP) |
| インターネット層 | IPアドレスで、ネットワークをまたいで届け先まで運ぶ | IP、ICMP | パケット(IPデータグラム) |
| リンク層 | 直接つながったネットワークの中で届ける | イーサネット、Wi-Fi、ARP | フレーム |
本や資料によっては、リンク層を「物理層」と「データリンク層」に分けて、5層で説明しているものもあります。これはOSI参照モデルの下の2層に合わせた説明で、どちらかがまちがいというわけではありません。この記事では、RFC 1122の4層で説明します。
4つの層をくわしく
アプリケーション層
アプリケーション層は、TCP/IPの一番上の層です。RFC 1122によると、TCP/IPではアプリケーション層をさらに細かく分けておらず、OSI参照モデルの上の2つの層(プレゼンテーション層とアプリケーション層)の機能をまとめたものになっています。Webを見るHTTP、名前からIPアドレスを調べるDNS、メールを送るSMTPなどがこの層です。
RFC 1122は、アプリケーション層のプロトコルを、利用者に直接サービスを提供する「ユーザープロトコル」(Telnet、FTP、SMTPなど)と、名前の解決や管理など共通の機能を提供する「サポートプロトコル」(DNS、SNMPなど)に分けています。ブラウザの通信を中継するプロキシサーバーも、この層のやりとりを扱うしくみです(プロキシサーバーとは?)。
トランスポート層
トランスポート層は、アプリどうしのエンドツーエンドの通信を提供する層です。RFC 1122は主なプロトコルとしてTCPとUDPを挙げ、TCPを「信頼性のあるコネクション型のサービス(届いたことの確認、順番の整理、流れの制御)」、UDPを「コネクションレス型(データグラム)のサービス」と説明しています。
どのアプリあての通信かはポート番号で区別します。HTTPSなら443番、SSHなら22番のように、サービスごとに番号が決まっています。ポート番号と、それを使ったポートフォワードのしくみはポートフォワードとは?で解説しています。
インターネット層
インターネット層は、IPを使って、データを送信元のホストから宛先のホストまで運ぶ層です。RFC 1122によると、インターネットのトランスポート層のプロトコルはすべてIPを使ってデータを運びます。IPはコネクションレスで、届くことを保証しないため、データがこわれたり、重複したり、順番が入れかわったり、届かなかったりすることがあります。確実さが必要なときは、上の層(TCP)が受け持ちます。
エラーの知らせや、pingに使われるICMPも、RFC 1122ではIPに欠かせない一部として、この層で扱われています。IPアドレスやポート番号を見て通信を通すか止めるかを決めるファイアウォールについては、ファイアウォールの重要性と仕組みを徹底解説で紹介しています。
リンク層
リンク層は、ホストが直接つながっているネットワークと通信するための層です。RFC 1122は、ネットワークの種類に応じて、リンク層のプロトコルにはいろいろなものがあるとしています。家庭や会社のLANで使われるイーサネットやWi-Fiが代表で、IPアドレスからMACアドレスを調べるARPも、RFC 1122のリンク層の章で扱われています。
データが届くまでの流れ

ブラウザで https://www.example.com/ を開くときを例に、データが層を通る流れを見てみましょう。
- アプリケーション層:まずDNSで
www.example.comのIPアドレスを調べる。次に、ブラウザが「このページをください」というHTTPのリクエストを作る(HTTPSならTLSで暗号化される) - トランスポート層:TCPで相手の443番ポートと接続を作り、送信元・宛先のポート番号などのヘッダーを付ける
- インターネット層:送信元・宛先のIPアドレスなどのIPヘッダーを付けて、パケットにする
- リンク層:イーサネットやWi-Fiのヘッダー(MACアドレスなど)を付けて、家のルーターに送る
- 途中のルーター:IPアドレスを見て次のルーターへ転送する。区間ごとに、リンク層のヘッダーは付けかえられる
- 受け取る側:リンク層 → インターネット層 → トランスポート層の順にヘッダーを外し、ポート番号を見てWebサーバーのソフトにデータを渡す
このように、送る側では上の層から順にヘッダーが付き(カプセル化)、受け取る側では下の層から順に外れていきます。途中のルーターは、主にインターネット層までを見て転送しています。
OSI参照モデルとの対応
OSI参照モデルは、通信の機能を7つの層に分けて整理した国際標準(ISO/IEC 7498-1、ITU-T X.200)です。TCP/IPモデルとの対応は、一般に次のように説明されます。TCP/IPはOSIに合わせて作られたものではないので、対応はあくまで目安です。
| OSI参照モデル(7層) | TCP/IPモデル(RFC 1122の4層) | 主な例 |
|---|---|---|
| 第7層 アプリケーション層 | アプリケーション層 | HTTP、DNS、SMTP |
| 第6層 プレゼンテーション層 | アプリケーション層 | 文字コード、圧縮 |
| 第5層 セッション層 | アプリケーション層 | ログイン状態の維持など |
| 第4層 トランスポート層 | トランスポート層 | TCP、UDP、ポート番号 |
| 第3層 ネットワーク層 | インターネット層 | IP、ICMP、ルーター |
| 第2層 データリンク層 | リンク層 | イーサネット、Wi-Fi、MACアドレス |
| 第1層 物理層 | リンク層 | LANケーブル、光ファイバー、電波 |
RFC 1122は、TCP/IPのアプリケーション層がOSIのプレゼンテーション層とアプリケーション層の機能をまとめたものだと説明しています。セッション層についてはRFC 1122ではっきり対応づけられていませんが、TCP/IPに独立した層はないため、一般にアプリケーション層の中で扱われると説明されます。HTTPSで使われるTLSは、役割としてはOSIの第5〜6層に近いと説明されることが多いものの、資料によって扱いが異なります。
OSI参照モデルの全体像や7つの層それぞれのくわしい解説は、OSI参照モデルとは?7つの階層とTCP/IPとの違いを図解から読めます。
層ごとのトラブルの切り分け
「サイトが開けない」ときは、下の層から順に確かめると、どこで止まっているかを見つけやすくなります。次のコマンドは、どれも自分のパソコンの状態を表示したり、相手にふつうの確認用の通信を少しだけ送ったりするものです。宛先には、自分が管理する機器や、ふだん使っている公開サービスを指定してください。
| 層 | 確かめること | Linux | macOS | Windows |
|---|---|---|---|---|
| リンク層 | LANやWi-Fiにつながっているか、近くの機器が見えるか | ip link show、ip neigh | ifconfig、arp -a | ipconfig /all、arp -a |
| インターネット層 | IPアドレスがあるか | ip a | ifconfig | ipconfig |
| インターネット層 | 出口(デフォルトゲートウェイ)があるか | ip route | netstat -rn | route print |
| インターネット層 | 相手まで届くか | ping -c 4 宛先 | ping -c 4 宛先 | ping -n 4 宛先 |
| インターネット層 | どこまで届いているか | traceroute 宛先 | traceroute 宛先 | tracert 宛先 |
| トランスポート層 | 相手のポートにつながるか | curl -v https://example.com/ | curl -v https://example.com/ | curl.exe -v https://example.com/ |
| アプリケーション層 | 名前が引けるか、Webサーバーが正しく答えるか | dig example.com、curl -I https://example.com/ | dig example.com、curl -I https://example.com/ | nslookup example.com、curl.exe -I https://example.com/ |
Windowsの curl.exe は、Windows 10(バージョン1803)以降で標準で使えます。Windows PowerShell 5.1では curl が別のコマンド(Invoke-WebRequest)の別名になっているため、curl.exe と入力してください。
切り分けの例
- ルーターへのpingが返らない:リンク層(ケーブル、Wi-Fi)か、IPアドレスの設定を疑う
- ルーターには届くが、外のIPアドレスに届かない:デフォルトゲートウェイや、回線・プロバイダー側を疑う
- IPアドレスあてには届くが、URLでは開けない:DNS(アプリケーション層)を疑う
- 接続はできるが、エラーのページが出る:
curl -Iのステータスコードを見て、Webサーバー側の問題かを確かめる
なお、pingの応答(ICMP)や、tracerouteに使われる通信に応答しない設定のサーバーやルーターも多くあります。pingやtracerouteで応答がないだけで「つながっていない」とは言い切れないので、ほかの方法と組み合わせて判断しましょう。
よくある質問
TCP/IPはTCPとIPの2つだけのこと?
いいえ。代表的な2つのプロトコルの名前をとっていますが、UDP、ICMP、HTTP、DNSなど、インターネットで使われるたくさんのプロトコルの集まり全体を指します。
TCP/IPモデルは4層?5層?
RFC 1122では4層(リンク・インターネット・トランスポート・アプリケーション)です。リンク層を物理層とデータリンク層に分けて5層とする説明もあり、本によって異なります。どちらで学ぶ場合も、「どの層が何を受け持つか」を押さえておけば大丈夫です。
OSI参照モデルとTCP/IPモデル、どちらを覚えればいい?
両方を知っておくと便利です。実際の通信のしくみを理解するにはTCP/IPモデルが、機器の説明(L2スイッチ、L7ロードバランサーなど)やトラブル対応の会話にはOSI参照モデルの層の番号がよく使われます。
IPv6でもTCP/IPモデルは同じ?
はい。IPv6(RFC 8200)は、インターネット層のIPの新しいバージョンです。アドレスの長さは32ビットから128ビットに増えていますが、4つの層の考え方は同じです。
まとめ
- TCP/IPは、インターネットで使われるプロトコルの集まり。RFC 1122では、アプリケーション層・トランスポート層・インターネット層・リンク層の4層に分けている(5層で説明する本もある)
- 主なプロトコルは、HTTP・DNS(アプリケーション層)、TCP・UDP(トランスポート層)、IP・ICMP(インターネット層)、イーサネット・Wi-Fi(リンク層)
- 送る側では上の層から順にヘッダーが付き、受け取る側では下の層から順に外れる
- OSI参照モデルの第5〜7層はアプリケーション層、第1〜2層はリンク層にまとめて対応する(目安)
- トラブルのときは、ping・traceroute・curl・digなどで下の層から順に確かめる
参考資料
- ISO/IEC 7498-1:1994 Information technology — Open Systems Interconnection — Basic Reference Model: The Basic Model
- ITU-T Recommendation X.200 (07/94) Basic Reference Model: The basic model
- RFC 1122: Requirements for Internet Hosts – Communication Layers
- RFC 791: Internet Protocol
- RFC 8200: Internet Protocol, Version 6 (IPv6) Specification
- RFC 9293: Transmission Control Protocol (TCP)
- RFC 768: User Datagram Protocol
- RFC 792: Internet Control Message Protocol
- RFC 9110: HTTP Semantics
- RFC 1034: Domain names – concepts and facilities

コメント