【OSI 参照モデル レイヤ3 ネットワーク層】IP とは

本記事は、以下の書籍を元に OSI 参照モデルレイヤ3 ネットワーク層について説明します。

最もおすすめの書籍

有名な書籍

前者2つよりも難易度が高め

OSI 参照モデルやその他のレイヤの解説については以下の記事をご確認ください。

スポンサーリンク

ネットワーク層とは

ネットワーク層とは、ネットワーク間の通信ルールを決める層です。

ネットワーク層の機能を実現するプロトコル(ルール)のうち、最も良く利用されるものは 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~8bit9~16bit17~24bit25~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アドレスとして予約されています。

クラス範囲アドレス数
クラスA10.0.0.0 - 10.255.255.255
(10.0.0.0/8)
16,777,216 =
16,777,216 ホスト番号 × 1 サブネット番号
クラスB172.16.0.0 - 172.31.255.255
(172.16.0.0/12)
1,048,576 =
65,536 ホスト番号 × 16 サブネット番号
クラスC192.168.0.0 - 192.168.255.255
(192.168.0.0/16)
65,536 =
256 ホスト番号 × 256 サブネット番号
スポンサーリンク

IP パケットのフォーマット

IP パケットは IP ヘッダと IP ペイロードから構成され、フォーマットは以下のとおりです。

https://www.infraexpert.com/study/tcpip1.html
フィールドの名称ビット各フィールドの説明
バージョン4 bitIP プロトコルのバージョン
 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 bitIPヘッダの長さ
サービスタイプ
(ToS)
8 bitIPパケットを運ぶ時の優先順位
全長16 bitIPパケットの長さ(IP ヘッダ + IP ペイロード)
識別番号
(identification)
16 bit個々のパケットを識別する番号。
IP フラグメントによって分割されたパケットは全て同じ値を持つ
フラグ3 bit1bit目:未使用
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 アドレスDHCP送信元の IP アドレスを自動で割り当てる
送信先 IP アドレスDNSドメイン名を IP アドレスに変換
ドメイン名を含む URL 自体はユーザーの手入力
送信元 MAC アドレス無しNIC メーカーが製造時に設定
ip link コマンドで確認可
送信先 MAC アドレスARP送信先 IP アドレスを、送信先 MAC アドレスに変換

ルーターとは

ルーターとは、以下の2つの機能を持つ機器です。
・ブロードキャストドメイン単位でネットワークを分割する
・パケットを送信先に届けるために、経由するネットワークを選択する(ルーティング)

ブロードキャストドメインの分割

ルーターには「ブロードキャストドメイン単位でネットワークを分割する」機能があります。

つまり、ルーターは他のネットワークに対するブロードキャストを通しません。

この機能により、世界中70億人が一斉にブロードキャストを送信しても、他のネットワークにはパケットが流れないため、回線がパンクしません。

ルーティング

例えば以下の例では、左上のネットワークから右下のネットワークまでの最短経路は赤線で引いた経路となります。この経路選択がルーターの役割です。

ルーターが最短経路を選択する

ルーターはルーティングテーブルを利用して最短経路を選択します。

ルーティングテーブル

ここでは実際にルーティングテーブルを確認してみます。

ip route コマンド

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 アドレス
https://man7.org/linux/man-pages/man8/ip-route.8.html より

デフォルトゲートウェイとは、送信先のネットワークがルーティングテーブルに見つからなかった時に利用する、パケットの送信先です。

上記の例では、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 ルーティングテーブルを確認する場合は以下のとおりです。

ip route show table 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

ディスタンスベクターは、通過するルーターの数(ホップ数)が少ないものを選択するアルゴリズムです。

https://www.nic.ad.jp/ja/newsletter/No38/0800.html

RIP の詳細は以下のとおりです。

3 Minutes Networking No.33

リンクステート(リンク状態)型:OSPF, IS-IS

リンクステートのアルゴリズムは、自身に接続されている回線(リンク)の状態を交換し、最短経路を交換するアルゴリズムです。

アルゴリズムの詳細は以下のとおりです。

OSPF - リンクステート型ルーティングプロトコルとは
OSPF - リンクステート型ルーティングプロトコルとは。

拡張ディスタンスベクタ型

拡張ディスタンスベクタ型は、ディスタンスベクタ型とリンクステート型を組み合わせたアルゴリズムです。

アルゴリズムの詳細は以下のとおりです。

EIGRPとは
EIGRPとは

パスベクター(パスベクトル)型:BGP

パスベクターは、各ルータが保持している以下の情報からルートを選択するアルゴリズムです。
・到達可能なネットワーク
・各ネットワークまでの経路情報(ASの並び、ASパス)

https://www.nic.ad.jp/ja/newsletter/No38/0800.html

ICMP

ICMP は、IP プロトコルの「エラー」や「状態」を通知するプロトコルです。

ICMP のフォーマット

ICMP のフォーマットは以下のとおりです。

https://www.infraexpert.com/study/tcpip4.html

各フィールドの意味は以下のとおりです。

各フィールドビット数各フィールドの説明
タイプ8 bitICMPメッセージの機能タイプの値が入ります。詳細は後述します。
コード8 bitICMPメッセージの詳細な機能コードの値が入る。詳細は後述します。
チェックサム16 bitエラーがないかどうかをチェックします
データ可変長ICMPの「タイプ」により長さが異なります
https://www.infraexpert.com/study/tcpip4.html

ICMP は「状態を通知する Queryメッセージ」と、「エラーを通知する Error メッセージ」が存在します。この2種類はそれぞれ複数の「タイプ」を持ち、これが ICMP フォーマットの「タイプ」フィールドで表現されます。

タイプコード内容意味種類
0
Echo Reply
0Echo Replyエコー応答Query
3
Destination
Unreachable

0Net Unrechable宛先ネットワークに到達できないError
1Host Unreachable宛先ホストに到達できない
2Protocol Unreachableプロトコルに到達できない
3Port Unreachableポートに到達できない
4Fragment Needed and DF was Setパケットの分割が必要であるが分割禁止フラグ(DF)が立っているので、パケットを破棄
5Source Route Failedソースルーティングが失敗
6Destination Network Unknown宛先ネットワークが不明
7Destination Host Unkown宛先ホストが不明
8Source Host Isolated送信元ホストが使用されていない
9Communication with Destination
Network is Administratively Prohibited
宛先ネットワークとの通信が管理上禁止されている
10Communication with Destinaltion
Host is Administratively Prohibited
宛先ホストとの通信が管理上
禁止されている
11Destination Network Unreachable for ToS指定された優先制御値では、
宛先ネットワークに到達できない
12Destination Host Unreachable for ToS指定された優先制御値では、
宛先ホストに到達できない
13Communication Administratively Prohibited通信が管理上が禁止されている
14Host Precedence Violationホストの優先度が違反している
15Precedence cutoff in effect優先制御が事実上切断された
5
Redirect
0Redirect Datagram for the Networkネットワークへの最適経路変更を通知Error
1Redirect Datagram for the Hostホストへの最適経路変更を通知
2Redirect Datagram for the ToS and Network優先制御でネットワークへの最適経路を通知
3Redirect Datagram for the ToS and Host優先制御時にホストへの最適経路を通知
8
Echo Request
0Echo Requestエコー要求Query
11
Time Exceeded
0Time to Live exceeded in Transit転送中にTTLの値が超過したError
1Fragment Reassembly Time Exceeded分割パケットを組み立て中に時間が超過した
https://www.infraexpert.com/study/tcpip4.html

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 と言います。

TTL はルーターを追加する度に1ずつ減少し、0になるとパケットが破棄されます

これにより、送信先までの経路上にどんなルーターが存在し、どのルーターが遅いのか判断することができます。

その他のレイヤについて

OSI 参照モデルの3層目のネットワーク層に関する説明は以上となります。

他のレイヤについては以下をご覧ください。

参考資料・おすすめの書籍

最もおすすめの書籍

有名な書籍

前者2つよりも難易度が高め

3 Minutes Networking
ネットワークエンジニアとして
ネットワークエンジニアに必要なネットワーク技術とCisco・Juniper・F5製品の技術解説。NWエンジニアの仕事内容や年収を紹介。ネットワークスペシャリスト、CCNA/CCNP/CCIEの情報発信。
日本ネットワークインフォメーションセンター - JPNIC
JPNICはインターネットの円滑な運営を支えるための組織です。国際的に運用・管理される必要のあるIPアドレス等のネットワーク資源を扱う国内唯一の組織であるばかりでなく、 インターネットにかかわる各種の調査・研究や教育・啓発活動などを通じて社会に貢献しています。