本記事は、以下の書籍を元に OSI 参照モデルのレイヤ3 ネットワーク層について説明します。
最もおすすめの書籍
有名な書籍
前者2つよりも難易度が高め
OSI 参照モデルやその他のレイヤの解説については以下の記事をご確認ください。
- 【入門】OSI 参照モデル、TCP/IP とは
- 【OSI 参照モデル レイヤ1 物理層】イーサネットとは
- 【OSI 参照モデル レイヤ2 データリンク層】イーサネットとは
- 【OSI 参照モデル レイヤ3 ネットワーク層】IP とは ←イマココ
- 【OSI 参照モデル レイヤ4 トランスポート層】TCP/UDP とは
- 【OSI 参照モデル レイヤ5 セッション層】SSL/TLS とは
- 【OSI 参照モデル レイヤ6 プレゼンテーション層】MIME とは
- 【OSI 参照モデル レイヤ7 アプリケーション層】
ネットワーク層とは
ネットワーク層とは、ネットワーク間の通信ルールを決める層です。
ネットワーク層の機能を実現するプロトコル(ルール)のうち、最も良く利用されるものは IP と呼ばれます。
IP(Internet Protocol)とは
IP(Internet Protocol)は、ネットワーク間(イーサネット LAN <---> イーサネット LAN)の通信ルールのことです。

インターネットとは
インターネットとは、「ネットワーク」と「ネットワーク」を繋ぎ作成した「より大きなネットワーク」のことです。
もともとinterとは中間とか間、相互といった意味を持ちます。 internationalなら国際ですし、intercessionなら仲介です。 ですから、語源的にはネットワークとネットワークをつなぐものが、 すなわちインターネットです。
https://www.nic.ad.jp/ja/basics/beginners/internet.html

IP アドレスとは
IP アドレスは、接続点(LAN ポート)ごとに付けられた論理アドレスです。
IP アドレスは、所属するネットワークとホスト(コンピュータ)を識別するために利用します。
IP アドレスは 32 bit で表現されますが、2進数だと見にくいので1Byte(8bit)ごとに区切り、10進数で表現することが多いです。
2進数 | 11000000. | 10101000. | 00000000. | 00000001 |
---|---|---|---|---|
10進数 | 192. | 168. | 0. | 1 |
IP アドレスは接続されているすべてのネットワークで固有のアドレスとなります。

- ネットワーク1と2はルーターで接続されているため、同じ IP アドレスは使えません
- ネットワーク1と3はルーターで接続されていないため、同じ IP アドレスが使えます
なお、IP アドレス(論理アドレス)と、MAC アドレス(物理アドレス)の違いは後述します。
ネットワーク番号とホスト番号

IP アドレスは以下の2つから構成されます。
- ネットワーク番号:ホスト(機器)が所属するネットワークを識別する番号
- ホスト番号:ホスト(機器)を識別する番号
ネットワーク番号 | ホスト番号 | |||
2進数 | 11000000. | 10101000. | 00000000. | 00000001 |
---|---|---|---|---|
10進数 | 192. | 168. | 0. | 1 |
IP アドレスの上位何 bit 目までがネットワーク番号なのか決める方法として、次の2つの方式が存在します。
- クラスフルアドレッシング
- クラスレスアドレッシング(主流)
クラスフルアドレッシング
クラスフルアドレッシングは、クラスによって IP アドレスの上位何 bit 目までがネットワーク番号か決定する方法です。
クラスの判別は以下の表のとおり、上位 1~3bit の値で決定します。
クラスの条件 | 1~8bit | 9~16bit | 17~24bit | 25~32bit | アドレス数 | |
---|---|---|---|---|---|---|
クラスA | 先頭 bitが0 0.0.0.0~127.255.255.255 | ネットワーク番号 | ホスト番号 | 16,777,216 | ||
クラスB | 先頭 bitが10 128.0.0.0~191.255.255.255 | ネットワーク番号 | ホスト番号 | 65,536 | ||
クラスC | 先頭 bit が 110 192.0.0.0〜223.255.255.255 | ネットワーク番号 | ホスト番号 | 256 |
具体例を示すと以下のとおりになります。

なお、ホスト番号の bit がすべて0の IP アドレスをネットワークアドレスと呼び、ネットワーク自体を示します。
クラスフルアドレッシングの欠点
クラスフルアドレッシングはホスト bit が自由に決められないため、大量の無駄な IP アドレスが生まれます。
例えば、257 個のホストを利用する場合は、クラス C では IP アドレスが不足するため、クラス B のネットワークを利用する必要があります。
この時、クラス B ネットワークに割り当てた大半の IP アドレスを使用しないため、無駄に IP アドレスが消費されます。
この問題を解決するために生まれてきた方法が、クラスレスアドレッシングです。
クラスレスアドレッシング
クラスレスアドレッシングは、IP アドレスの「ホスト番号」を、「サブネット番号」と「ホスト番号」に分割することでネットワークの大きさを決定する方式です。

サブネット番号の範囲は自由に決められるため、無駄に割り当てるホスト番号が減少します。
なお、サブネットマスクと呼ばれるもので、どこまでが「サブネット番号」なのかを表します。
サブネットマスクは以下のルールに従います。
- 「ネットワーク番号」と「サブネット番号」を表す bit は1
- 「ホスト番号」を表す bit は0

なお、上記のサブネットマスクは1が22個続いているのですが、人間にはめちゃくちゃわかりにくい記載となっています。
そのため、IP アドレスの末尾に "/" とサブネットマスク1の数を記載して「192.168.0.1/22」のように表記する CIDR と呼ばれる表記方法が一般的です。
予約済みの IP アドレス
予約されている IP アドレスには以下のものがあります。
- ネットワークアドレス
- ブロードキャストアドレス
- プライベートアドレス
ネットワークアドレス
ネットワークアドレスはネットワーク自体を表す IP アドレスです。
ホスト番号が全て0という特徴を持ちます。
ネットワークに所属するホストは、ネットワークアドレスと同じネットワーク番号を持ちます。

ブロードキャストアドレス
ブロードキャストアドレスとは、同じネットワークの全てのホストを表す IP アドレスのことです。
ブロードキャストアドレスには次の2種類が存在します。
- ディレクテッドブロードキャストアドレス
- リミテッドブロードキャストアドレス
ディレクテッドブロードキャストアドレス | リミテッドブロードキャストアドレス | |
---|---|---|
IP アドレス | ホスト番号が全部1 (10.1.255.255/16 など) | 全部が1 (255.255.255.255) |
範囲 | ネットワーク番号で指定したネットワーク | 自分が所属するネットワーク |
ルーター | 超えられる | 超えられない |
以下にディレクテッドブロードキャストアドレスとリミテッドブロードキャストアドレスの範囲を可視化しました。

プライベート IP アドレス
プライベート IP アドレスとは、インターネットに接続できない IP アドレスのことです。
最初に述べたように、IP アドレスは接続されているすべてのネットワークで重複できません。
プライベート IP アドレスはインターネットに接続できないため、世界中のネットワークと重複が許される IP アドレスとなります。(プライベートネットワーク内では接続されているため、IP アドレスの重複は当然禁止)
次の IP アドレス空間が、プライベートIPアドレスとして予約されています。
クラス | 範囲 | アドレス数 |
---|---|---|
クラスA | 10.0.0.0 - 10.255.255.255 (10.0.0.0/8) | 16,777,216 = 16,777,216 ホスト番号 × 1 サブネット番号 |
クラスB | 172.16.0.0 - 172.31.255.255 (172.16.0.0/12) | 1,048,576 = 65,536 ホスト番号 × 16 サブネット番号 |
クラスC | 192.168.0.0 - 192.168.255.255 (192.168.0.0/16) | 65,536 = 256 ホスト番号 × 256 サブネット番号 |
IP パケットのフォーマット
IP パケットは IP ヘッダと IP ペイロードから構成され、フォーマットは以下のとおりです。

フィールドの名称 | ビット | 各フィールドの説明 |
バージョン | 4 bit | IP プロトコルのバージョン 4:Internet Protocol (IP) 6:Internet Protocol version 6 (IPv6) 7:TP/IX : The Next Internet (TP/IX) 8:The P Internet Protocol (PIP) 9:TUBA (TUBA) |
ヘッダ長 (IHL) | 4 bit | IPヘッダの長さ |
サービスタイプ (ToS) | 8 bit | IPパケットを運ぶ時の優先順位 |
全長 | 16 bit | IPパケットの長さ(IP ヘッダ + IP ペイロード) |
識別番号 (identification) | 16 bit | 個々のパケットを識別する番号。 IP フラグメントによって分割されたパケットは全て同じ値を持つ |
フラグ | 3 bit | 1bit目:未使用 2bit目:フラグメントの許可するかどうか 3bit目:フラグメントされたパケットが続くかどうか |
フラグメント オフセット | 13 bit | フラグメントされたパケットが元のパケットのどの位置であったかを示す |
生存時間 (TTL) | 8 bit | ルータ or L3スイッチを通貨できる回数。パケットがルーターを無限ループすることを阻止するため。 1台のルータを通過するごとに TTL 値は「 1 」つずつ減少し、TTL値が「 0 」になると、パケットは破棄される。 |
プロトコル | 8 bit | プロトコルの種類が記載される。 01 : ICMP 06 : TCP 11 : UDP |
ヘッダ チェックサム | 16 bit | 誤り検出用データ |
送信元IPアドレス | 32 bit | 送信元のIPアドレス |
送信先IPアドレス | 32 bit | 宛先の IP アドレス |
オプション | 可変長 | 通常は使用されない |
パディング | 可変長 | 通常使用されない 32ビットの整数倍にするために空データの 「 0 」 の値(パディング)を入れる |
IP アドレスと MAC アドレスの違い
IP アドレスを初め見た時、MAC アドレスで良くないか?(逆もしかり)と思いましたので、違いを説明しておきます。
IP アドレスが存在しない場合
IP アドレスが存在しない場合は、ホスト(コンピュータ)を見つけ出すのに時間がかかります。
- MAC アドレス:機器しか識別できない
- すべてのネットワークからホストを探すことになり、時間がかかる
- IP アドレス:所属するネットワークとホストを識別可能
- 特定のネットワークからホストを探せば良い
MAC アドレスが存在しない場合
MAC アドレスが存在しない場合は、次にパケットを送信するホストがわかりません。
- MAC アドレスは次の送信先となるホストを表します。
- IP アドレスはゴールの送信先となるホストを表します。

上記のように、ゴールの IP アドレスを使って、次の送信先の MAC アドレスを調べる方法を ARP と言います。
どうして MAC アドレスと IP アドレスを1つにまとめないの?
OSI 参照モデルは「各 Layer が他の Layer に干渉しない」という思想のため、MAC アドレスと IP アドレスという異なる Layer で利用するプロトコルは1つにまとめられません。
- MAC アドレスを利用するイーサーネットプロトコルが Layer2
- IP アドレスを利用する IP(Internet Protocol) が Layer3
例えば、IP アドレスをイーサーネットプロトコルの仕様に含めると、Layer3 が IP と決定した時点で、Layer2 でイーサネット以外のプロトコルが利用できなくなります。
IP パケットの送信に必要な情報
Layer3 で IP, Layer2 でイーサネットプロトコルを利用する場合、IP パケットの送信には以下の4つが必要となります。
- 送信元 IP アドレス(IP ヘッダで必要)
- 送信先 IP アドレス(IP ヘッダで必要)
- 送信元 MAC アドレス(イーサネットフレームヘッダで必要)
- 送信先 MAC アドレス(イーサネットフレームヘッダで必要)
上記のアドレスはそれぞれ以下の方法で取得します。
用意するアドレス | 取得プロトコル | プロトコルの説明 |
送信元 IP アドレス | DHCP | 送信元の IP アドレスを自動で割り当てる |
送信先 IP アドレス | DNS | ドメイン名を IP アドレスに変換 ドメイン名を含む URL 自体はユーザーの手入力 |
送信元 MAC アドレス | 無し | NIC メーカーが製造時に設定 ip link コマンドで確認可能 |
送信先 MAC アドレス | ARP | 送信先 IP アドレスを、送信先 MAC アドレスに変換 |
ルーターとは
ルーターとは、以下の2つの機能を持つ機器です。
・ブロードキャストドメイン単位でネットワークを分割する
・パケットを送信先に届けるために、経由するネットワークを選択する(ルーティング)
ブロードキャストドメインの分割
ルーターには「ブロードキャストドメイン単位でネットワークを分割する」機能があります。

つまり、ルーターは他のネットワークに対するブロードキャストを通しません。
この機能により、世界中70億人が一斉にブロードキャストを送信しても、他のネットワークにはパケットが流れないため、回線がパンクしません。
ルーティング
例えば以下の例では、左上のネットワークから右下のネットワークまでの最短経路は赤線で引いた経路となります。この経路選択がルーターの役割です。

ルーターはルーティングテーブルを利用して最短経路を選択します。
ルーティングテーブル
ここでは実際にルーティングテーブルを確認してみます。
ip route コマンド
ip route コマンドはルーティングテーブルを確認可能なコマンドです。
default via 172.31.32.1 dev eth0 169.254.169.254 dev eth0 172.31.32.0/20 dev eth0 proto kernel scope link src 172.31.32.246
表示される各項目の意味は以下のとおりです。
フィールド | 説明 |
172.31.32.0/20 | ネットワークの CIDR(default はデフォルトゲートウェイ) |
via 172.31.32.1 | ネクストホップのルーターの IP アドレス |
dev eth0 | パケットを送信するデバイス名 |
proto kernel | ルーティングプロトコルを示す(kernel はカーネルにより自動生成されたことを示す) |
scope link | ルートプレフィックスの対象となる送信先 global: ゲートウェイを経由(他のネットワーク)に対する unicast のルート link: 所属するネットワークに対する unicast、broadcast のルート host: local のルート(自分自身) |
src 172.31.32.246 | 送信元の ip アドレス |
デフォルトゲートウェイとは、送信先のネットワークがルーティングテーブルに見つからなかった時に利用する、パケットの送信先です。
上記の例では、169.254.169.254, 172.31.32.0/20 以外の宛先を指定した場合、172.31.32.1 のルーターにパケットを送信します。
補足:複数のルーティングテーブル
Linux Kernel では main, local, default というルーティングテーブルが用意されており、「ip route」コマンドは「ip route show table main」の省略形です。
local ルーティングテーブルを確認する場合は以下のとおりです。
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 broadcast 172.31.32.0 dev eth0 proto kernel scope link src 172.31.32.246 local 172.31.32.246 dev eth0 proto kernel scope host src 172.31.32.246 broadcast 172.31.47.255 dev eth0 proto kernel scope link src 172.31.32.246
ルーターでは、別々のプロトコル間で通信する場合も複数のルーティングを持ちます。
例えば、IP と IPX 間で通信する場合は「IP のルーティング」と「IPX のルーティング」の2つを持ちます。
ルーティングプロトコル
ルーティングプロトコルとは、ルーティングテーブルを自動で更新するためのルールです。
ルーティングプロトコルには以下の種類が存在します。
AS | アルゴリズムの種類 | プロトコル名 |
---|---|---|
IGP(AS 内部) | ディスタンスベクター型 (距離ベクトル型) | RIP |
IGRP | ||
リンクステート型 (リンク状態型) | OSPF | |
IS-IS | ||
拡張ディスタンスベクタ型 | EIGRP | |
EGP(AS外部) | パスベクター型 | BGP |
? | EGP |
なお、ルーティングプロトコルが最適経路と判断する基準は「メトリック」と呼ばれ、「ホップ数(経由するルーターの数)・回線のスピード・エラー発生率」等が用いられる。
AS(Autonomous System・自律システム)とは
AS とは、同じ管理団体によって管理された複数のネットワークを1つにまとめたものです。
以下の図の AS 200 のように、AS は複数のネットワークから成り立ちます。

なお、AS 内部と外部で利用するルーティングプロトコルが異なります。
- AS 内部で利用するルーティングプロトコルは IGP
- AS 外部で利用するルーティングプロトコルは EGP
ディスタンスベクター(距離ベクトル)型:RIP, IGRP
ディスタンスベクターは、通過するルーターの数(ホップ数)が少ないものを選択するアルゴリズムです。

RIP の詳細は以下のとおりです。
リンクステート(リンク状態)型:OSPF, IS-IS
リンクステートのアルゴリズムは、自身に接続されている回線(リンク)の状態を交換し、最短経路を交換するアルゴリズムです。
アルゴリズムの詳細は以下のとおりです。
拡張ディスタンスベクタ型
拡張ディスタンスベクタ型は、ディスタンスベクタ型とリンクステート型を組み合わせたアルゴリズムです。
アルゴリズムの詳細は以下のとおりです。
パスベクター(パスベクトル)型:BGP
パスベクターは、各ルータが保持している以下の情報からルートを選択するアルゴリズムです。
・到達可能なネットワーク
・各ネットワークまでの経路情報(ASの並び、ASパス)

ICMP
ICMP は、IP プロトコルの「エラー」や「状態」を通知するプロトコルです。
ICMP のフォーマット
ICMP のフォーマットは以下のとおりです。

各フィールドの意味は以下のとおりです。
各フィールド | ビット数 | 各フィールドの説明 |
タイプ | 8 bit | ICMPメッセージの機能タイプの値が入ります。詳細は後述します。 |
コード | 8 bit | ICMPメッセージの詳細な機能コードの値が入る。詳細は後述します。 |
チェックサム | 16 bit | エラーがないかどうかをチェックします |
データ | 可変長 | ICMPの「タイプ」により長さが異なります |
ICMP は「状態を通知する Queryメッセージ」と、「エラーを通知する Error メッセージ」が存在します。この2種類はそれぞれ複数の「タイプ」を持ち、これが ICMP フォーマットの「タイプ」フィールドで表現されます。
タイプ | コード | 内容 | 意味 | 種類 |
---|---|---|---|---|
0 Echo Reply | 0 | Echo Reply | エコー応答 | Query |
3 Destination Unreachable | 0 | Net Unrechable | 宛先ネットワークに到達できない | Error |
1 | Host Unreachable | 宛先ホストに到達できない | ||
2 | Protocol Unreachable | プロトコルに到達できない | ||
3 | Port Unreachable | ポートに到達できない | ||
4 | Fragment Needed and DF was Set | パケットの分割が必要であるが分割禁止フラグ(DF)が立っているので、パケットを破棄 | ||
5 | Source Route Failed | ソースルーティングが失敗 | ||
6 | Destination Network Unknown | 宛先ネットワークが不明 | ||
7 | Destination Host Unkown | 宛先ホストが不明 | ||
8 | Source Host Isolated | 送信元ホストが使用されていない | ||
9 | Communication with Destination Network is Administratively Prohibited | 宛先ネットワークとの通信が管理上禁止されている | ||
10 | Communication with Destinaltion Host is Administratively Prohibited | 宛先ホストとの通信が管理上 禁止されている | ||
11 | Destination Network Unreachable for ToS | 指定された優先制御値では、 宛先ネットワークに到達できない | ||
12 | Destination Host Unreachable for ToS | 指定された優先制御値では、 宛先ホストに到達できない | ||
13 | Communication Administratively Prohibited | 通信が管理上が禁止されている | ||
14 | Host Precedence Violation | ホストの優先度が違反している | ||
15 | Precedence cutoff in effect | 優先制御が事実上切断された | ||
5 Redirect | 0 | Redirect Datagram for the Network | ネットワークへの最適経路変更を通知 | Error |
1 | Redirect Datagram for the Host | ホストへの最適経路変更を通知 | ||
2 | Redirect Datagram for the ToS and Network | 優先制御でネットワークへの最適経路を通知 | ||
3 | Redirect Datagram for the ToS and Host | 優先制御時にホストへの最適経路を通知 | ||
8 Echo Request | 0 | Echo Request | エコー要求 | Query |
11 Time Exceeded | 0 | Time to Live exceeded in Transit | 転送中にTTLの値が超過した | Error |
1 | Fragment Reassembly Time Exceeded | 分割パケットを組み立て中に時間が超過した |
Destination Unreachable
Destination Unreachable はなぜパケットが届かなかないのか、理由が記載されています。
Redirect
Redirect は新しい経路情報をホストへ伝えます。
例えば、経路上にルーターが追加され、ホストのルーティングテーブルが最適な経路を選択できなかった場合に、ルーターからホストに送られます。
Echo Request, Echo Reply (ping)
Echo Request はエコー要求を送ります。Echo Reply はエコー要求に応答します。
送信元と送信先でパケット通信が行えているか確認するために利用され、ping コマンドではこの仕組みを利用しています。
Time Exceeded (traceroute)
Time Exceeded は時間切れにより、パケットが送信できなかったことを表します。
ルーターの経路上で無限ループが発生した場合は、コード0「Time to Live exceeded in Transit」により時間切れとなります。時間切れの判断基準には TTL というゲートウェイ(ルーター)を通過した回数を利用します。
なお、TTL(ホップ数)を1ずつ増やし、何度も ping を送るコマンドを traceroute と言います。

これにより、送信先までの経路上にどんなルーターが存在し、どのルーターが遅いのか判断することができます。
その他のレイヤについて
OSI 参照モデルの3層目のネットワーク層に関する説明は以上となります。
他のレイヤについては以下をご覧ください。
- 【入門】OSI 参照モデル、TCP/IP とは
- 【OSI 参照モデル レイヤ1 物理層】イーサネットとは
- 【OSI 参照モデル レイヤ2 データリンク層】イーサネットとは
- 【OSI 参照モデル レイヤ3 ネットワーク層】IP とは ←イマココ
- 【OSI 参照モデル レイヤ4 トランスポート層】TCP/UDP とは
- 【OSI 参照モデル レイヤ5 セッション層】SSL/TLS とは
- 【OSI 参照モデル レイヤ6 プレゼンテーション層】MIME とは
- 【OSI 参照モデル レイヤ7 アプリケーション層】
参考資料・おすすめの書籍
最もおすすめの書籍
有名な書籍
前者2つよりも難易度が高め