【OSI 参照モデル L3 ネットワーク層】IP とは

OSI 参照モデルTCP/IP モデルTCP/IP プロトコル実装
アプリケーション層アプリケーション層HTTP, DNS, DHCP,
SSH, MIME, TLS
アプリケーション
プログラム
プレゼンテーション層
セッション層
トランスポート層トランスポート層TCP, UDPOS
ネットワーク層インターネット層IP, ICMP, ARP, IPSec
物理層
OSI 参照モデルTCP/IP は完全に 1:1 ではない。ARPデータリンク層ネットワーク層の間 (詳しくはここ)。
ネットワーク層/インターネット層ネットワークとは、異なるネットワークを接続する層です。

TCP/IP プロトコルでは、IP がネットワーク層に相当します。

IP(Internet Protocol)IP とは、ネットワーク間 (インターネット/internet) の通信プロトコル (ルール) です。

インターネットとは何か

internet internet とは、2つのネットワーク間を繋いだものです。

現在のネットワーク (LAN) は、イーサネット (有線) や IEEE802.11(無線) で構成されます。

The Internet (インターネット) The Internet (インターネット) とは、IP で世界中のネットワークを繋いだものです。

通常、「インターネット」は「The Internet」を指します。

まずはインターネットとは何かをはっきりさせましょう。 もともとinterとは中間とか間、相互といった意味を持ちます。 internationalなら国際ですし、intercessionなら仲介です。 ですから、語源的にはネットワークネットワークをつなぐものが、 すなわちインターネットです。 英語だと、小文字で始まるinternetがこれに相当して、 LANLANをつないだもの、 というイメージになります。

対して日本でインターネット、 英語では大文字で始まるThe Internetのほうは、 もっと限定的です。 これはIPという約束に従って接続された、 世界規模のコンピュータネットワークを意味します。

https://www.nic.ad.jp/ja/basics/beginners/internet.html

IP には、主に次の3つの機能があります。

スポンサーリンク

IP アドレスとは

IP アドレスIP アドレスとは、ネットワークノード (ルーター、パソコン、スマホ等) の識別番号です。
ノードノードとは、IP アドレスを持つネットワーク機器 (ルーター + ホスト) のことです。
ホストホストとは、IP アドレスを持つコンピュータのことです。(ルーティング機能を持たない)

IP アドレスのフォーマット

IP アドレス (IPv4) は 32bit で構成されます。

通常は、1Byte(8bit) で区切り、10 進数で「192.168.1.1」のように表現します。

ネットワークホスト部
10進数192.168.1.1
2進数11000000.10101000.00000001.00000001

IP アドレスは、ネットワーク部とホスト部に分かれます。

ネットワーク部

ネットワークとは、IP アドレスのネットワークを識別する部分です。

ホスト部

ホスト部とは、IP アドレスのホストを識別する部分です。
ルーターもポートごとに IP アドレスで識別する (ルーターはノードだが、ホスト部と言います)

なお、IP アドレスの何 bit 目までがネットワーク部なのかは、サブネットマスクで表現します。

サブネットマスク

サブネットマスクとは、IP アドレスのネットワーク部とホスト部を表す値です。

サブネットマスクの bit が 1 の部分がネットワーク部、0 の部分がホスト部を表します。

ネットワークホスト部
IP アドレス192 (11000000)168 (10101000)1 (00000001)1 (00000001)
サブネットマスク255 (11111111)255 (11111111)0 (00000000)0 (00000000)

なお、上記の省略した書き方が 「192.168.1.1/16」です。(上位 16bit までがネットワーク部)

この書き方を CIDR 表記 (プレフィックス表記) と言います。

予約済み IP アドレス

予約済み IP アドレスには以下のものがあります。

ネットワークアドレス

ネットワークアドレスとは、ネットワーク自体を表す、ホスト部が全て0の IPアドレスです。

192.168.1.1/24 のホストが所属するネットワークアドレスは 192.168.1.0 です。

ネットワークホスト部
IP アドレス192 (11000000)168 (10101000)0 (00000000)1 (00000001)
ネットワーク
アドレス
192 (11000000)168 (10101000)1 (00000001)0 (00000000)

同じネットワークに所属するホストは、同じネットワーク部の値を持ちます。

ブロードキャストアドレス

ブロードキャストアドレスとは、ホスト部が全て 1 の IP アドレスで、指定したネットワークに所属する全てのホストに一斉配信するために利用します。

192.168.0.1/24 のホストのブロードキャストアドレスは 192.168.0.255 です。

ネットワークホスト部
IP アドレス192 (11000000)168 (10101000)0 (00000000)1 (00000001)
ネットワーク
アドレス
192 (11000000)168 (10101000)1 (00000001)255 (11111111)

なお、IP アドレス 255.255.255.255 はリミテッドブロードキャストアドレスと呼び、自分の所属するネットワークに所属する全てのホストに一斉配信できます。

ループバックアドレス

ループバックアドレスとは、IP アドレス 127.0.0.1 のことで、自分自身を示します。

IP アドレスの種類

IP アドレスには、次の2種類があります。

  • プライベート IP アドレス
  • グローバル IP アドレス

プライベート IP アドレス

プライベート IP アドレスとは、インターネットに接続しない際に利用する IP アドレスです。

以下の IP アドレスがプライベート IP アドレスとして利用できます。

  • 10.0.0.0 ~ 10.255.255.255 (10/8)
  • 172.16.0.0 ~ 172.31.255.255 (172.16/12)
  • 192.168.0.0 ~ 192.168.255.255 (192.168/16)

グローバル IP アドレス

グローバル IP アドレスとは、インターネットに接続する際に利用する IP アドレスです。

グローバル IP アドレスは、プライベート IP アドレスと一部の IP アドレスを除いた以下の範囲です

  • 1.0.0.0 ~ 9.255.255.255
  • 11.0.0.0 ~ 126.255.255.255
  • 128.0.0.0 ~ 172.15.255.255
  • 172.32.0.0 ~ 191.255.255.255
  • 192.0.0.0 ~ 192.167.255.255
  • 192.169.0.0 ~ 223.255.255.255

インターネットを契約すると、プロバイダー (ISP) からグローバル IP アドレスが割り当てられます

※ グローバル IP アドレスは、世界的には ICANN が管理、日本国内では JPNIC が管理
※ プロバイダー (ISP) は、ユーザーの代わりに JPNIC にグローバル IP アドレスの割り当てを申請

IPアドレスとMACアドレスの違い

IP アドレスはゴールの宛先、MAC アドレスは次の宛先を示します。

Host1 から Host2 (192.168.2.2) へデータを送信する場合を考えます。

この時、データを送信する際の IP アドレスと MAC アドレスを見ていきます。

  1. Host1 --> Router1 に送信する時
  2. Router1 --> Router2 に送信する時
  3. Router2 --> Host2 に送信する時

上記のように、宛先 IP アドレスはゴールまで変わりませんが、MAC アドレスは次の宛先に変わっていきます。

スポンサーリンク

ルーティングとは

ルーティングルーティングとは、ネットワーク上でデータを転送する経路を決めることです。

ルーティングは、ルーティングテーブルを使って決定します。

ルーティングテーブル

ルーティングテーブルとは、「宛先のネットワーク」と「次の転送先」の対応表です。

ルーティングテーブルは、以下のコマンドで確認できます。

  • ホスト側 (Linux) では ip route
  • ルーター側 (Cisco) では show ip route

ホストのルーティングテーブル

ホスト側 (Linux) でルーティングテーブルを確認してみます。

Host1 192.168.0.2 でルーティングテーブルを確認
203.0.113.0/24 via 192.168.0.254 dev eth0
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2
default via 192.168.0.1 dev eth0

上記のルーティングテーブルの意味は次のとおりです。

デフォルトゲートウェイ

デフォルトゲートウェイとは、宛先ネットワークがルーティングテーブルに存在しない場合に転送する、転送先のルーターです。

ネクストホップ

ネクストホップとは、データリンク層の機能だけを使ってフレームを転送できる1区間です。
次のルーターと考えて OK です。
  • 次のノードまでがネクストホップ (1 ホップ)
  • Host1 から Host3 までは 3ホップ
  • L2 スイッチに繋がったノードは、データリンク層の機能だけで転送できるので1ホップ

ルーターのルーティングテーブル

ルーティングテーブルを次の2種類に分けて確認します。

直接接続したネットワーク

直接接続したネットワークを確認します。

show ip route c
 C   192.168.1.0/24  is directly connected, FastEthernet0/0
 C   192.168.100.0/24  is directly connected, FastEthernet0/1
 C   192.168.200.0/24  is directly connected, FastEthernet1/0

3つのネットワークアドレスを確認できます。
(※ネットワークアドレスなので、ホスト部は 0 です。)

ルーター経由のネットワーク

ルーティングプロトコルで取得した、ルーター経由で到達可能なネットワークを確認します。

show ip route r
     192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
R   192.168.2.0/24 [120/1] via 192.168.100.2, 00:00:17, FastEthernet0/1
R   192.168.3.0/24 [120/1] via 192.168.200.2, 00:00:07, FastEthernet1/0

ネットワーク 192.168.2.0/24 宛は、ネクストホップ 192.168.100.2 (Fa 0/1) に送信します。

ルーティングテーブルの作成方法

ルーティングテーブルの作成方法は、次の2種類があります。

  • スタティックルーティング (静的経路制御)
  • ダイナミックルーティング (動的経路制御)

スタティックルーティング

スタティックルーティングとは、手動でルーティングテーブルを作成する方法です。

ダイナミックルーティング

ダイナミックルーティングとは、ルーター同士で情報を交換し、自動でルーティングテーブルを作成する方法です。

自動でルーティングテーブルを作成する際の手順を、ルーティングプロトコルと呼びます。

スポンサーリンク

IP フラグメンテーション

IP フラグメンテーション (IP パケット分割)IP フラグメンテーションとは、IP パケットを分割する処理です。

MTU (Maximum Transmission Unit)

MTU とは、1回の通信で転送できる最大の IP データグラム (パケット) のサイズです。

IP パケットイーサネットカプセル化すると、MTU は 1500 bytes となります。(ここ)
イーサネットフレームのデータが 1500 bytes を超えるとジャンボフレームと呼びます。

送信する IP パケットのサイズが MTU を超える場合は、IP パケットを分割して送信します。

IP 層で分割しているので、各 IP パケットに IP ヘッダがつく
UDP ヘッダは IP ペイロードの一部なので、IP ペイロードを分割した先頭の IP パケットにだけ UDP ヘッダを含む

MTU を確認する方法

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500

Path MTU (PMTU)

Path MTU (PMTU)Path MTU とは、2つのホスト間の経路上にある最小 MTU です。

つまり、経路上のルーターで IP フラグメンテーションが不要なサイズです。

IP フラグメンテーションはルーターに負荷を与えるため、ルーター上でやりたくないです。

そこで、Path MTU に従って、予めホスト側で IP パケットを分割しておくことで、経路上のルーターで IP フラグメンテーションが発生しなくなります。

Path MTU Discovery

Path MTU Discovery (PMTUD/経路 MTU 探索/パス MTU 検出)Path MTU Discovery とは、PMTU を調べる技術です。

Path MTU Discovery は、以下のように IP の Don't Fragment bit (IP フラグメンテーション禁止フラグ) と、ICMP の Type3 Code4 (Fragment Needed and DF was Set) を利用します。

DF bit があるので、ルーターは IP フラグメントができず、MTU より大きな IP パケットを次のルーターに転送できない
ルーターは ICMP で次の MTU を伝え、ホストは PMTU を更新する

ICMP が帰って来なくなったので、Path MTU は 1280 となります。
ICMP がフィルタリングされると、Path MTU を更新できない = ブラックホール問題と呼ぶ

Path MTU の確認方法

ping example.com -s 2000 -M do -c 1
PING example.com (93.184.216.34) 2000(2028) bytes of data.
From 93.184.216.34 icmp_seq=1 Frag needed and DF set (mtu = 1356)
ip route show cached
93.184.216.34 via 192.168.0.1 dev eth0 
    cache expires 486sec mtu 1356

TCP セグメンテーション

上位層で分割機能がある場合は、IP 層でフラグメンテーションが不要となります。

  • TCP: TCP セグメンテーションで MSS(= [MTU] - [TCP ヘッダ] - [IP ヘッダ]) サイズに分割
  • UDP: 分割機能が無し
UDP は、IP 層でフラグメンテーションしてるので、UDP ヘッダが先頭のデータグラムにしか含まれない
TCP は、TCP 層でフラグメンテーションしてるので、TCP ヘッダが各セグメントに含まれる

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

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

フィールドの名称ビット各フィールドの説明
バージョン4 bitIP プロトコルのバージョン
 4:Internet Protocol version 4 (IPv4)
 6:Internet Protocol version 6 (IPv6)
ヘッダ長 (IHL)4 bitIP ヘッダの長さ
サービスタイプ8 bit送信する IP サービスの品質制御
現在は先頭 6bit を DSCP, 後続 2bit をECN として利用
全長16 bitパケットの長さ (IP ヘッダ + 送信するデータ)
識別番号
(identification)
16 bitパケットを識別する番号
フラグメントしたパケットは同じ値を持つ
フラグ3 bit1bit目:未使用
2bit目:フラグメントを許可するか (Dont Fragment bit)
3bit目:フラグメントしたパケットに続きがあるか
(More Fragment bit)
フラグメント
オフセット
13 bitフラグメントが、分割前のパケットのどの位置か
生存時間 (TTL)8 bitルータ or L3 スイッチをホップできる回数。
パケットがルーターを無限ループすることを阻止するため
ホップするごとに TTL が 1 つずつ減少し、
TTL値が 0 になると、パケットを破棄
プロトコル8 bitパケットに含まれる上位のプロトコルの種類 (一覧はこちら)
01 : ICMP
06 : TCP
17 : UDP
ヘッダチェックサム16 bitIP ヘッダが壊れていないことをチェック
送信元 IP アドレス32 bit送信元の IP アドレス
送信先 IP アドレス32 bit送信先の IP アドレス
オプション可変長通常は使用しない。デバッグなどで使う
パディング可変長IP ヘッダを 32 bit の整数倍にする詰め物として 0 を入れる
IP ヘッダの合計は 160bit (= 20Bytes) + 可変長

ネットワーク機器

ネットワーク層のネットワーク機器は、主に次の 2 つです。

ルーター

ルーターとは、異なるネットワークを接続してパケットを中継する機器です。

ルーターの役割は主に 2 つです。

ネットワークを分割

ネットワークを分割することで、ARP 等のブロードキャストを防ぎ、不要な通信を削減できます。

ルーターの場合:ルーターで破棄される
L2 スイッチの場合:全てのノードに転送される

その他にも、ネットワークを分割することで、ネットワークごとに IP パケットをフィルタリングするルールを定義できます。

ルーティング

ネットワーク同士を繋ぎ、エンドツーエンドで (端のホストから端のホストまで) IP パケットを転送する経路を決定します。

青丸がネットワーク。ルーターは最短経路を選択している

L3 スイッチ

L3 スイッチの基本的な機能 (ネットワーク同士の接続・ルーティング) は、ルーターと同じです。

L3 スイッチは、大量のトラフィックをルーターで処理しきれなくなったために生まれました。

そのため、対応するプロトコルTCP/IP に絞ることで処理速度に特化した製品となってます。

ルーターと L3 スイッチの違い

ルーターL3 スイッチ
プロトコルマルチプロトコルTCP/IP のみ
主な対象WANLAN を接続LANLAN を接続
ポート数少ない多い
処理速度普通速い
https://www.nuro.jp/article/l3suitchi-router/
https://panasonic.co.jp/ew/pewnw/product/column/010.html
https://www.oresamalabo.net/entry/2020/02/23/020820

ネットワーク層を使った通信例

最後に、ネットワーク層を使った実際の通信を見てみます。

■通信例
ホスト 192.168.1.2 から、ホスト 192.168.2.2 に ping (ICMP) を送信します。

緑のメールアイコンが ARP、黒のアイコンが ICMP
  1. Host1 が MAC アドレスを取得するために ARPブロードキャスト
  2. Router1 が自分宛 (デフォルトゲートウェイ宛) の ARP を受信したので、ARPMAC アドレスを含めて返す
  3. 受信した MAC アドレスを利用して、Host1 が ICMP を Router1 に送信
  4. Router1 がルーティングテーブルを元に、Router2 に ICMP を転送
  5. Router2 は ICMP の Dest 192.168.2.2 に相当する MAC アドレスがわからないので破棄
  6. Router2 は MAC アドレスを調べるために、ルーティングテーブルで該当するネットワークARPブロードキャスト
  7. Host1 はレスポンスが来ないので、192.168.2.2 に ICMP を再送し Host2 に届く
    (再送 = 手順3 からやり直す。Router2 は手順 6 で 192.168.2.2 の MAC アドレスを取得したので、再送時は手順5 がうまくいく)

最後に

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

OSI 参照モデルTCP/IP モデルTCP/IP プロトコル実装
アプリケーション層アプリケーション層HTTP, DNS, DHCP,
SSH, MIME, TLS
アプリケーション
プログラム
プレゼンテーション層
セッション層
トランスポート層トランスポート層TCP, UDPOS
ネットワーク層インターネット層IP, ICMP, ARP, IPSec
物理層
OSI 参照モデルTCP/IP は完全に 1:1 ではない。ARPデータリンク層ネットワーク層の間 (詳しくはここ)。

参考記事

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