Web教材一覧ネットワーク

ネットワーク層とIP

学習のポイント

ここでは,ネットワーク層について学習します。ネットワーク層は複数のデータリンクをまたがる2点間の通信を可能にするものです。そのTCP/IPでのプロトコルがIPで,ルータが重要な役目をします。なお,IPアドレスの仕組みと経路制御については別章にまわします。

IPの位置づけ

キーワード

ARP,RARP,IPヘッダ,TTL,ICMP,DHCP,IPv6


IP(Inernet Protocol)の概要

データリンク層とIPの関係

IPは,OSI参照モデルのネットワーク層に相当するプロトコルです。データリンク層では,同一のデータリンク内で直接接続されたホスト間でパケットを送信しますが,IPでは,直接接続されていないホスト間でパケットの送信をします。すなわち,IPではいくつものデータリンクを経由して通信をします。

データリンク層とIPの比較図

データリンク層では,宛先をMACアドレスで指定していましたが,IPではそれをIPアドレスで指定します(IPアドレスの詳細については,別章「IPアドレス」参照)。すなわち,同一データリンク間での宛先はMACアドレスですが,それを超えた宛先にはIPアドレスを使うのです。

ARP(Address Resolution Protocol)/RARP(Reverse ARP)

ARPは,あるホストのIPアドレスを与えてMACアドレスを知るためのプロトコルです。同一のデータリンクにあるホストAがホストBのMACアドレスを知りたいときには,次のようにします。

  1. ホストAは,自分のMACアドレスとIPアドレス,ホストBのIPアドレスを含むARP要求パケットをブロードキャストします。
  2. すべてのホストがARP要求パケットを受けますが,求めているIPアドレスを持っているのはホストBだけです。それで,ホストBは自分のMACアドレスをつけて,ホストAにARP応答パケットを送信します。

ホストBが同一データリンクにないときは,ルータがホストBのIPアドレスにより,ホストBが同一データリンクにないことを判別できますので,ホストBではなくルータのMACアドレスをホストAに知らせます。すると,ホストAはルータにパケットを送り,それをホストBに転送するように依頼します。

なお,RARPはMACアドレスからIPアドレスを知るためのプロトコルです。

経路制御(ルーティング)

ルータが代行した後,どのようにホストBにパケットが送られるかを簡単に説明します。

バケツリレーの説明図

同一のネットワークに属するホストは,まとまったIPアドレスを持っており,ネットワーク自体もIPアドレスを持っています。そして,ルータは自分が接続しているネットワークのIPアドレスや,それに接続するルータのIPアドレスとその向こう側のネットワークのIPアドレスなどをルーティングテーブルに持っています。すなわち,ルータAは,
   ネットワーク1
   ネットワーク2
   ルータBとネットワーク3
   ルータCとネットワーク4
だけを知っています。そして,ルータAはホストAからのパケットをルータCに渡すと,ルータCはホストBが属するネットワーク6はルータEにあることを知っているので,さらにルータEに転送します。ネットワーク6に到達すれば,ARPでホストBのMACアドレスを知ることができるので,ホストBにパケットが届きます。

このように多くの多数のルータをバケツリレーすることにより経路を決定することを経路制御(ルーティング)といいます。ここで,なぜルータAがルータBではなくルータCに渡したのかがあいまいですが,詳細は別章「経路制御」で取扱います。


IPヘッダ

IPによりパケットを送信するときは,データの前にIPヘッダを付加します。IPヘッダのフォーマットは次の通りです。なお,IPの最新バージョンはIPv6ですが,未だIPv4が広く用いられていますので,ここではIPv4を用います(IPv6に関しては後述します)。

IPヘッダの図
始点IPアドレス/終点IPアドレス
始点とは送信元,終点は送信先(宛先)のことです。
上位プロトコル
伝送されるデータには,本文以外にTCPヘッダなどのヘッダが含まれています。それのプロトコルです。

TTL(生存期間)
IPでは,パケットは多くのルータを経由します。状況によっては,ルータ間がループになっていて,目的のホストに到着せず永久にループを巡回するようなことがあると,送信の制御もできないし,ネットワークに負荷がかかってしまいます。それを防ぐために,ルータを1回経由するたび(それをホップといいます)に,TTL(Time To Live)の値を1だけ減らし,それが0になったらパケットを破棄します。

IPに関連するプロトコル

ICMP(Internet Control Message Protocol)

IPはコネクションレス型(コネクション型/コネクションレス型については,別章「TCP」で説明)ですので,パケットが正しく到達しているかの保証もありませんし,障害が発生したときの通知もできません。ICMPは,障害が発生したときに通知をするネットワーク層に相当するプロトコルです。次のようなコマンドで実行されます。

pingコマンド

インターネット接続や無線LANで接続ができないとき、その状況を確認するのに、最もよく用いらられるコマンドです。エコー要求(Echo Request)を出すとネットワークの状況や情報を知らせるエコー応答(Echo Response)が得られます。
 pingは、echoやipconfigなどの基本的機能を組み合わせたコマンドです。

エコー要求/エコー応答
エコー(echo)とは、指定した文字列を画面表示する命令のことです。エコー要求(Echo Request)は知りたい情報をシステムに要求する機能、エコー応答(Echo Response)はそれを画面表示する機能です。これだけで、送信先(サーバ)と接続している(パケットが送れる)かどうかの確認ができます。

エコー応答を次のような形式で表示することができます。ICMPプロトコルにより、あえてping操作をしなくても自動的に表示するのが通常です。

到達不能メッセージ(Destination Unreachable)
宛先に到達できないとき,送信元のホストに到達不能メッセージが送られます。
  • Netwowork Unreachable:途中のルータで宛先のIPアドレスを見つけられなかった。
  • Host Unreachable:宛先のネットワークには到達したが,宛先IPアドレスを持つホストが存在しない。あるいはネットワークに接続されていない。
ipconfig
パソコンとルータの接続状況、ルーターのIPアドレスなど、ネットワークの状況を調べるコマンドです。
netstat
自分のPCからどこにTCP接続している相手先とプロトコルおよびTCPの状態を調べるコマンドです。自分のPCのローカルIPアドレスとポート番号、通信先のIPアドレス、ポート番号(上位プロトコル、HTTPなど)、TCPの状態(正常接続中か否か)が表示されます。
また、指定期間内の受信パケット数、エラー数などの統計資料を得ることもできます。

traceroute(tracert)コマンド

宛て先への経路の特定や経路を表示するコマンドです。pingコマンドでも行きつけたときにはその経過を得ることができますが、つながらなかったときには結果が得られません。宛先のサーバは正常に稼働しているので、経路中に何か問題が起こっている可能性が高いというような場合に使われます。

時間経過メッセージ(Time Exceeded)
TTL(Tome To Live:生存時間)が0になったとき,送信元のホストに送られます。これを用いて,経由するルータと時間経過を知ることができる traceroute(UNIX)や tracert(Windows)コマンドがあります。

DHCP(Dynamic Host Configration Protocol)

DHCPは,IPアドレス設定を自動化したり一元管理するもので,次のような問題の解決に効果があります。

DHCPによるIPアドレスの取得

新規にクライアントをネットワークに接続して,動的にIPアドレスを取得する手順は次の通りです。

DHCP Discover
ネットワークに接続した時点では,クライアントはDHCPサーバのIPアドレスを知らないので,ネットワーク全体にブロードキャストします。クライアント自体のIPアドレスもないので,送信元のIPアドレスは 0.0.0.0 としておきます。
DHCP Offer
ブロードキャストを受けたDHCPサーバは,自分が保有しているIPアドレス(アドレスプールという)から,仮のIPアドレスをを割り当てて,それとDHCPサーバのIPアドレスをクライアントに返信します。このとき,DHCPサーバが複数あると(DHCPサーバは重要なサーバなので障害対策のために複数が起動している),クライアントに複数の返信が届きます。
DHCP Request
クライアントは,複数の返信から一つを選択して,その仮IPアドレスを入れたメッセージをブロードキャストします。
DHCP Ack
その仮IPアドレスを提供したDHCPサーバは,仮IPアドレスを正式のIPアドレスとしてアドレスプールから確保し,正式通知をクライアントに返信します。そして,クライアントはそのIPアドレスによりネットワーク環境を設定します。
DCHP Release
DHCPサーバがクライアントに正式IPアドレスを与えるのは,一定期間内の期限付き貸し出しです。その期限が近づくと,クライアントは必要に応じてDHCPサーバに延長要求を出します。それがないときは,DHCPサーバはIPアドレスをアドレスプールに戻して,他のホストからの要求を待ちます。

IPアドレス以外のアドレスの取得

上のプロセスにおいて、次のアドレスも自動取得できます。
 ・サブネットマスク
 ・デフォルトゲートウェイのIPアドレス
 ・DNSサーバのIPアドレス
DHCPサーバがルータの場合、通常、これらのIPアドレスはルータのIPアドレスになります。


IPv6

IPv4では,IPアドレスは32ビットで構成されており,232≒43億個ですが,クラスなど非効率的な割り振りをしてきたために,インターネットの普及に伴い枯渇してしまいました(注)。それを引き金として,これまでのIPが持つ不便な事項を一挙に解決するべきだとして,IPv6が採用されました。
 未だIPv4が広く用いられていますが,IPv6は多くの利点や適用分野があるので,着実に伸びてきています。IPv4とIPv6を共存させる技術も確立しています。

(注)2011年には、IPv4の枯渇が現実的な問題になりました。
JPNIC(日本ネットワークインフォメーションセンター)「APNICにおけるIPv4アドレス在庫枯渇のお知らせ」2011年4月
    http://www.nic.ad.jp/ja/topics/2011/20110415-01.html

IPv6のヘッダ

IPv6のヘッダを示します。狭義のIPv6ヘッダ(基本ヘッダ)と、付加的情報を与える拡張ヘッダ、データからなっています。

IPv6ヘッダ
  フィールド名  ビット 説明
  バージョン(ver)   4 IPのバージョン。6が入る
  トラフィッククラス 8 IPv4のToSに相当。パケット送信時QoSを指定
  フローラベル   20 QoSの内容。通信経路の品質確保、経路の優先選択のために使用
  ペイロード長   16 ヘッダを含まないIPペイロードの長さ
  ネクストヘッダ   8 IPv4のプロトコルに相当。上位プロトコルや拡張ヘッダを指定
              上位プロトコルを指定したときは拡張ヘッダは不要
  ホップリミット   8 IPv4のTTLに相当。通過できるホップ数
  送信元アドレス 128 送信元のIPv6アドレス
  宛先アドレス  128 宛先のIPv6アドレス
  (IPv4でのヘッダチェックサムはTCPで行うのでIPとしては削除)
拡張ヘッダ(次のような機能を任意個数指定可能)
  プロトコル名称   ポート 機能
  ルーティングヘッダ  43 経由するルータを指定
  暗号化(ESP)   50 データの暗号化
  認証ヘッダ(AH)  51 完全性の確保
  ICMPヘッダ    58 IPv6でのICMPで使用
  宛先オプション    60 宛先側での処理
データ(TCP/UDPヘッダ+データ)

アドレス空間の拡大

IPv6では,IPアドレスは128ビットです。2128=3.4×1038ですから,事実上無限に近い個数になります。
 しかし、すべてグローバルIPアドレスにするのでは無駄が生じることが考えられますし、管理上面倒なこともあります。それでプライベートIPアドレスに相当するULA(Unique Local Address)があります。

桁数が多いので128ビットを16ビットごとの8個にわけて,それぞれを16進数で表現するようにしました。次のような表現があります。

 2進法表現
  0001 0000 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 1000 0000 1000 0000 0000 0010 0000 0000 1100 0100 0001 0111 1010
 16進表現
  1080:0:0:0:8:800:200C:417A (16桁ごとに:で区切る)
 16進表現(簡略)
  1080::8:800:200C:417A (連続した0は::にできる。1ヶ所のみ)

IPv6の利点

アドレス空間の拡大
IPアドレスを128ビットにしたことにより,3.4×1038という事実上無限に近い個数になります。それにより,情報家電や各種センサーなどをインターネットに接続できるので,IPv6化はユビキタス社会への対応の観点からも重要です。
セキュリティ対策の向上
拡張ヘッダで暗号化や認証の機能が付加されます。IPv6ではIPsecが必須になっており、ESPやAHはIPsecのプロトコルです。
効率の向上
IPアドレスを,地域や国,指定事業者のような構造に合わせるようにして,ルーティングテーブルを簡素化してルーティングの効率化を図っています。
また,特にチェックサムはTCP/UDPで行いIPでは省略するなど,IPv4と比べてヘッダの項目を簡略化して,ルータの負荷を減らしています。
プラグ&プレイ機能
IPv6では,機器をネットワークにつなぐと自動的にグローバルIPアドレスを取得できる機能を持たせています。

IPv4とIPv6の共存

IPv6に対応していないシステムやアプリケーションが多いので、異なるプロトコルでの通信(相互運用性)が必要です。いくつかの方式があります。これらの方式は、プロバイダのWebサーバやメールサーバに装備されるものであり、一般の利用者は特に意識する必要はありません。


理解度チェック

第1問

  1. IPは,複数のデータリンクを通って相手のホストと接続するためのプロトコルであり,OSI参照モデルのネットワーク層に相当する。
  2. MACアドレスからIPアドレスを知るにはARPを用い,IPアドレスからMACアドレスを知るにはRARPを用いる。
    × ARPとRARPが逆
  3. ルータは2つのデータリンクに接続している。
    ○ それで他のデータリンクが接続する。
  4. 一つのデータリンクには3つ以上のルータは接続できない。
    × どのルータを選ぶかで経路選択ができる
  5. IPヘッダには宛先のIPアドレス,送信元のIPアドレス,送信元のMACアドレスが入っている。
    × MACアドレスはイーサーネットヘッダ
  6. IPアドレスの上位プロトコルには,Web閲覧のためのHTTPやファイル転送のためのFTPなどが指定できる。
    × TCPとUDP。HTTPなどはTCPヘッダで指定
  7. IPはコネクション型であり,パケットが正しく到達してしないときの処理には,DHCPを用いる。
    × コネクション型→コネクションレス型,DHCP→ICMP
  8. 新規にクライアントをネットワークに接続して,動的にIPアドレスを取得するには,ICMPを用いる。
    × ICMP→DHCP
  9. DHCPは,IPアドレス設定を自動化したり一元管理する。
  10. IPアドレス枯渇の対策としてIPv6の普及が期待されている。

本シリーズの目次へ