ネットワーク層のプロトコル


  1. 目的
    ここでは、異なるイーサネット間でデータを交換するネットワーク層の手法を紹介します。IPを利用して異なるイーサネットの間でデータを伝送する方式を定めた方式をネットワーク層のプロトコルと呼びます。ネットワーク層をIP層と呼ぶことがあります。
  2. ネットワーク層の位置づけ
    1. 階層化:OSIモデル
      ネットワークを回路(物理)レベルから、データの配送経路を定めるネットワーク層、実際にデータの配送を行うアプリケーションレベルまでいくつかの階層に分けて、手順を決めておくと便利です。この階層の標準としてよく参照されるのが以下の7層のOSI参照レベルです。
       アプリケーション層:webや電子メールなどアプリケーションの規約を定まる
       プレゼンテーション層:データのフォーマットを規定する(例:HTML)
       セッション層:システム間のデータ通信の確立、解放の方法などを定まる
       トランスポート層:送り側、宛先の間のデータ送受信方法を定める
       ネットワーク層:送り側、宛先の間の経路制御を定まる
       データリンク層:物理レベルの装置間での通信制御を規定する
       物理層:ネットワーク信号から装置で利用するデータに変換する方法を定める
    2. TCP/IPモデルの階層
      ここでは、TCP/IPプロトコルを中心に説明しますが、これは以下のようにOSI参照レベルに対応する5層で構成されます。データリンク層までは、すでに紹介済みです。
       物理層--イーサネットLAN
       データリンク層--リンク(MAC)層
       ネットワーク層--IP層
       トランスポート層--TCP/UDP層
       アプリケーション層--アプリケーション層
      1. TCP/IP
        インターネットの通信規約は一般的にTCP/IPといわれますが、これはトランスポート層のTCP規約と、ネットワーク層のIP規約の総称ですが、インターネットのサポートとしてトランスポート層のUDP方式もよく利用されています。



  3. ネットワークの分割とIPのクラス
    1. IPのクラス
      IPについては先に紹介しましたが、IPは0から255までの4個の数字(4バイト)で構成されます。これを、属するネットワーク機器の最大数に応じて3種のクラスに分けます。同じLANに属するネットワーク機器のネットアドレスは同一で、アダプタ番号で区別します。
      1. クラスC
        最初の3バイトがネットアドレスで残り1バイトがアダプタ番号です。クラスCの第一バイトの先頭3ビットは110となります。したがって、IPは192.0.0から223.255.255の範囲となります。同じLANに接続できるネットワーク機器は255台以下です。多くの場合、クラスCのIPで一つのLANを構成します。

        1. ネットアドレスを192.10.2 とし、3台のネットワーク機器に192.10.2.1、192.10.2.2、192.10.2.3のIPを割り当てる。
          注:これは例としての説明で、かってにネットワークIDを割り当て利用することはできません。
      2. クラスB
        最初の2バイトがネットアドレスで残り2バイトがアダプタ番号です。クラスBの第一バイトの先頭2ビットは10となります。同じLANに接続できるネットワーク機器は255*255台以下です。ネットアドレスは128.0から191.255の範囲です。このクラスBはあくまで、IPの割り当ての単位で、実際には内部で複数のクラスCのネットワークIDを持つ複数のLANを構成し、これを統合してネットワークを構成します。
      3. クラスA
        最初の1バイトがネットアドレスで残り3バイトがアダプタ番号です。あまり例がありませんから、ここでは説明から省きます。
      4. IPアドレスが不足する(IPv6)
        IPアドレスが4バイトしかありません。これは全部有効に利用しても42億程度です。すでに1億近いマシンが接続されており、将来の枯渇は心配されています。そこで、次世代IPとして128ビットIP長を有するIPv6への移行が進んでいます。
    2. 特殊なIPアドレス
      1. プライベートアドレス
        以下のアドレスはインターネットでは利用が禁止されており、プライベートな利用が可能です。ルータはこのアドレスを外部(インターネット)に流さないよう設計されています。
         10.0.0.0から10.255.255.255
         172.16.0.0から173.31.255.255
         192.168.0.0から192.168.255.255
        また、自身の折り返し試験のため、自分のアダプタを指定する特殊なアドレスがあります。
         172.0.0.1 ;ローカルアドレス
      2. マルティキャスト(クラスD)
        ネットワークアドレス224から240まではマルティキャストに割り当てられています。これは、複数の端末に同時に送るときに利用できます。
      3. IPブロードキャストアドレス
        アダプタ番号がすべて1のIPをIPブロードキャストアドレスと言います。このアドレスのデータグラムはすべての端末が受信処理を行います。次に述べる経路情報はブロードキャストアドレスで発信されます。
        1. すべて0のアドレス
          場合によって、アダプタ番号がすべて0のIPをブロードキャストとする場合もあります。したがって、すべて、0と1のアダプタ番号はIPとして利用することはできません。
    3. サブネットマスク
      1. IPの管理
        これまで、IPはNICと呼ばれる非営利団体で管理され、申請クラスに対し適切なネットワークアドレスを割り当ててきました。ちなみに中京大学は、ネットワークIDが150.42.のクラスBの割り当てを受けています。
      2. クラスからサブネットマスクへ
        インターネットに接続するすべてのネットワーク機器にこのようなクラス分類でネットワークIDを割り当てたら、4バイトのIPアドレスでは不足します。過去に割り当てられたクラス分類とネットワークアドレスと矛盾しない範囲で、IPアドレス空間の柔軟な利用を目指して、サブネットマスクが利用されるようになりました。
      3. 拡張サブネットマスク
        サブネットマスクはバイト単位のクラス分けを、ビット単位に拡張する技法です。サブネットマスクが1に対応するIPアドレス部分をネットアドレスとします。クラスCは256台までの接続が可能ですが、ネットアドレスを26ビットとすることにより、クラスCのIPを4個のイーサネットで利用することができます。8bit単位でないサブネットマスクをここでは拡張サブネットマスクと呼びます。
        1. 26ビットマスク
          IPアドレス:192:168.2.129
          スブネットマスク:255.255.255.192



  4. データグラムの配送
    1. データグラムの構成
      ネットワーク層で送受信されるデータをデータグラムと呼びます。データグラムは、フレームの先頭部分に、送り先のIPアドレス(ToIP)と送り主のIPアドレス(FromIP)などを指定したIPヘッダを記録します。経路制御はこのIPヘッダを元に、データグラムを送り先を決定します。IPヘッダは合計24バイトになります。
    2. 構成
      Ver:バージョン番号
      Tos:サービスの種類
      Len:データグラムの長さ
      TTL:ルータを通過する許容段数


    3. ルータ
      1. ルータの役割
        ルータは二つ以上のネットワークアダプタと各アダプタに割り当てられたIPを持ち、一方のアダプタから受け取ったフレームを反対側のアダプタを利用して、別のイーサネットに送り込むことができます。また、ルータは受け取ったデータグラムの宛先IPを調べ、そのデータグラムを送りつける宛先を定まる「経路情報」を持っています。
        1. ゲートウエイ
          アダプタは送り先が自分のネットアドレスでないIPのフレームを、そのイーサネットに接続されたルータのIPに送ります。イーサネットのルータが1台の場合、そのルータを(デフォルト)ゲートウエイと呼ぶことがあります。
      2. 構成例
        下の図で、二つのIPを持っている箱がルータです。192.10.2、192.10.3、の二つのクラスCのイーサネットをルータを用いて192.10.1のLANで統合する例を示します。ルータAは190.10.2のネットワークのゲートウエイ、ルータBは190.10.3のネットワークのゲートウエイとなっています。



    4. データグラムの配送
      1. 配信例
        192.10.2.1から192.10.3.2にデータを送る場合を考えます。192.10.2.1のホストは送り先のIPが自分が属するLANでないので、ゲートウェイのIPである192.10.2.10にデータを送ります。ルータは経路表を参照して、192.10.3宛のデータグラムを192.10.1.2のルータにデーを送ります。このデータを受けたルータは、192.10.3のイーサネットで192.10.3.2のマックアドレスを調べ、192.10.3.10から192.10.3.2へのフレームを作成し送り出します。
      2. 経路情報
        1. 経路情報
          ルータAは「192.10.3当てのデータグラムは192.10.1.2に送る」ことを知っている必要があります。同様に、ルータBは「192.10.2当てのデータグラムを192.10.1.1に送る」ことを知っている必要があります。この情報を「経路情報」といいます。経路情報は、マニュアルで設定することができます。
        2. 最適な経路
          ルータの経路情報は性格には次のような項目から構成されます。
           ネットワークID、ルータのIPアドレス、経由するルータの数
          目的とするネットワークIDまで複数の経路が存在する場合、「経由するルータの数」が小さい経路を選択します。
          1. 経路情報の発信(RIP)
            経路情報は、手動で設定する方法と、ネットワークIDを担当するルータが経路情報として発信し、各ルータがそれを受け取り動的に経路情報を更新する方法、があります。後者の場合、ルータから発信される情報をRIP(Routing Information Protocol)と呼びます。 経路情報の宛先はブロードキャストアドレスになります。
          2. RIPの改良
            RIPはサブネットマスクに対応していません。また、複数の経路が存在する場合、経路の「混雑度合い」を考慮せず、中継するルータの数のみで経路を決定してしまいます。また、RIPにはマスク情報が含まれません。これらの欠点を考慮した手法として、OPSFやRIP2などが実用化されていますが、詳細は省略します。
      3. 経路情報の表示
        現在利用している経路情報は次のコマンドで表示できます。
         \>netstat-r
        Destination 0.0.0.0はデフォルトで、他で一致しないIPの送り先(ゲートウエイ)を示します。127.0.0.0はループバックアドレスで自分自身になります。アダプタがない場合でもこのアドレスに送れば、自分で受信が可能です。255.255.255.255はブロードキャストアドレスです。

        1. F:\>netstat -r
          Route Table
          ===========================================================================
          Interface List
          0x1 ........................... MS TCP Loopback interface
          0x1000003 ...00 40 26 97 9a 73 ...... MELCO LGY-PCI-TXC
          ===========================================================================
          ===========================================================================
          Active Routes:
          Network Destination Netmask Gateway Interface Metric
          0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.100 1
          127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
          192.168.1.0 255.255.255.0 192.168.1.100 192.168.1.100 1
          192.168.1.100 255.255.255.255 127.0.0.1 127.0.0.1 1
          192.168.1.255 255.255.255.255 192.168.1.100 192.168.1.100 1
          224.0.0.0 224.0.0.0 192.168.1.100 192.168.1.100 1
          255.255.255.255 255.255.255.255 192.168.1.100 192.168.1.100 1
          Default Gateway: 192.168.1.1
          ===========================================================================
      4. 経路情報の追加、削除
        windowsの場合、経路情報の追加は routeコマンドで行います。150.42.1.への配送は150.42.41.190に送る場合、以下のようになります。
         >route ADD 150.42.1.0 MASK 255.255.255.192 150.42.41.190
        ADDの代わりに、CHANGEで変更、DELETEで削除できます。追加は、一つのイーサネットに複数のルータが接続されている場合に必要です。
         >route PRINT
        で経路情報を表示します。間違った追加や削除を行いますと、データグラムが届かなくなります。
  5. 特殊なデータグラム:ICMP
    1. ICMP(インターネット制御プロトコル)
      ICMP(Internet Contorl Message Protocol)はIPデータとして、実際にイーサネットを流れるデータグラムです。これは、特定のアプリケーションからではなく、ネットワークのドライバと同時に組み込まれ、ネットワークのエラー処理などの通知に利用されます。PingコマンドはこのICMPフレームを利用しています。
      1. ICMPデータグラム

    2. Ping
      pingはアダプタの検査用のコマンドです。pingコマンドは応答要求を意味するICMPを生成し指定した送り先に送ります。このICMPを受けたアダプタは応答を意味するICMPを送り返します。ICMPがピンポンの用に往復するため、ping(ピン)コマンドと呼ばれます。
    3. パケットダンプ
      ネット上のデータグラムを読み出し、その内容を解析して表示するツール:windumpがあります。これを見ると、pingコマンドが実行されリマでの過程を把握することができます。
      1. 実行例
        1. windump起動
          192.168.1.100でwindumpを起動する。

          コマンドプロンプトウインドウに結果を表示する
          12:37:34.146828 AYA2 > coffee2k: icmp: echo request
          12:37:34.146897 coffee2k > AYA2: icmp: echo reply
          12:37:34.266765 AYA2 > coffee2k: icmp: echo request
          12:37:34.266795 coffee2k > AYA2: icmp: echo reply
        2. ping実行
          192.168.1.100で、pingコマンドを実行する
        3. 表示
          192.168.1.100に以下が表示されます。先頭の12:53:44.144715等は時刻です。実際のフレームから必要なデータのみを抜き出して表示しています。また、IPを名前で置き換えています。

          //arp:aya2がcoffee2kのMACアドレスを問い合わせる
          12:46:43.271638 arp who-has coffee2k tell AYA2
          //arp応答:coffee2kが応答
          12:53:44.144715 arp reply coffee2k is-at 0:40:26:97:9a:73

          //aya2のpingでecho requestが発生
          12:46:43.272127 AYA2 > coffee2k: icmp: echo request
          //coffee2kが応答
          12:46:43.272170 coffee2k > AYA2: icmp: echo reply
          12:46:43.390164 AYA2 > coffee2k: icmp: echo request
          12:46:43.390230 coffee2k > AYA2: icmp: echo reply
          12:46:43.510509 AYA2 > coffee2k: icmp: echo request
          12:46:43.510538 coffee2k > AYA2: icmp: echo reply
    4. TRACERT
      1. TTL
        TraceRt(TraceRoute)コマンドはPingを応用して、目的の宛先までの途中の経路を表示します。IPにはTTL(Time to live)と呼ぶ整数値のデータが組み込まれています。この値はルータを通過するたびに1減らされ、これが0になるとこのデータグラムは転送されず、「Time Exeed」なるICMPが送信元に送り返されます。この機能により、間違った経路表にため、データグラムが回り続けることを避けることが出来ます。
      2. 手法
        tracertコマンドは、まず、TTLを1にしたICMPを出します。このICMPのTTLは最初のレータで0になるため、「Time Exeed」ICMPが送り返されます。このICMPの送り主が、最初のルータになります。次に、TTLを2にしたICMPを送出します。これは、二つ目のルータを通過すると、「Time Exeed」ICMPとして返ってきます。これで、二つ目のルータのIPがわかります。同様にして、TTLを増やしながら、順次ルータのIPをトレース(追跡)していきます。

      3. 例を示します。実際のtracertでは各TTL毎に3個のICMPを発生します。3個のmsの値は、各ICMPが返るまでの時間です。sinetは大学間ネットワークで、名古屋大学、東京大学のセンタを通り、jpixで一般のドメインの交換点に達し、ここからドメインを変えて、yahooに到達しています。ドメイン名については、次の項目で説明します。

        F:\>tracert 210.152.236.112
        Tracing route to w02.yahoo.co.jp [210.152.236.112]
        over a maximum of 30 hops:

        1 <10 ms <10 ms <10 ms 150.42.41.190
        2 <10 ms <10 ms <10 ms 150.42.33.190
        ....
        7 40 ms 40 ms 60 ms gate.chukyo-u.ac.jp [150.42.190.62]
        8 50 ms 60 ms 71 ms 192.50.56.144
        9 40 ms 70 ms 90 ms nugw4.gw.nagoya-u.ac.jp [192.50.56.4]
        10 40 ms 50 ms 70 ms nagoya-10-A4-1-1.sinet.ad.jp [150.99.198.90]
        11 90 ms 70 ms 70 ms tokyo-10-A7-1-1.sinet.ad.jp [150.99.109.10]
        12 60 ms 60 ms 60 ms tokyo-6-PC1.sinet.ad.jp [150.99.170.6]
        13 110 ms 90 ms 90 ms AS2521.ix.jpix.ad.jp [210.171.224.40]
        14 60 ms 90 ms 80 ms 203.183.250.11
        15 90 ms 90 ms 90 ms 203.183.237.57
        16 832 ms 701 ms 1101 ms w02.yahoo.co.jp [210.152.236.112]

  6. DNSは電話帳
    1. DNSの役割
      IPでは実際の運用組織とネットワークの対応づけが困難です。そこで、ドメイン名とIP番号の対応付けを行うDNSシステムが構築されました。
    2. ドメイン名とIP
      ホームページでは
       http://www.sccs.chukyo-u.ac.jp
      のようなURLを利用して、ホームページのサーバーを指定しますが、www..以後の記述はドメイン名と呼ばれ、IPアドレスと等価です。次のような ping コマンドを出してみます。150.42.190.100 がwww.sccs.chukyo-u.ac.jp のIPとなります。ためしに
       http://150.42.190.100
      をURLとしてブラウザに入力してみましょう。
      1. ドメイン名によるping
        L:\>ping www.chukyo-u.ac.jp
        Pinging gatewww.chukyo-u.ac.jp [150.42.190.100] with 32 bytes of data:
        Reply from 150.42.190.100: bytes=32 time=80ms TTL=242
        Reply from 150.42.190.100: bytes=32 time=100ms TTL=242
      2. tcpDUmp
        このようすをtcpDumpで拾ってみます。なお、tcpdumpはIPをドメイン名で置き換えています。

        //最初にcoffee2kはゲートウェイのMACアドレスを問い合わせます。
        13:04:04.519611 arp who-has 192.168.1.1 tell coffee2k
        13:04:04.519921 arp reply 192.168.1.1 is-at 0:4:5a:db:f9:93

        //次にcoffee2kはDNSである150.42.32.1.53にIPアドレスを問い合わせます
        //coffee2k.の次の1212等は後で紹介するポート番号です。
        13:01:24.936369 coffee2k.1212 > 150.42.32.1.53: 58+ A? www.chukyo-u.ac.jp . (36)
        13:01:24.939257 150.42.32.1.53 > coffee2k.1212: 58 2/4/4 CNAME gatew (218) (DF)

        //応答のIPでecho requestを出します。
        13:01:24.981409 coffee2k > gatewww.chukyo-u.ac.jp: icmp: echo request
        13:01:25.006399 gatewww.chukyo-u.ac.jp > coffee2k: icmp: echo reply (DF)
        13:01:25.504323 coffee2k > gatewww.chukyo-u.ac.jp: icmp: echo request
        13:01:25.528351 gatewww.chukyo-u.ac.jp > coffee2k: icmp: echo reply (DF)
        13:01:25.959989 coffee2k.1213 > 150.42.32.1.53: 59+ PTR? 100.190.42.150.in-addr
        .arpa. (45)

        なお、ネットワーク上には他にもいろいろなデータグラムが流れています。
    3. ドメイン名
      ドメイン名は階層構造を持っています。最後のjpがjapanに国名、acはacademicで業種、chukyo-uがチ中京大学の名前になります。先頭のwwwはホームページサーバーの名前になります。情報科学部の場合、
       www.sccs.chukyo-u.ac.jp
      と学部名がつきます。ドメイン名は、その名前から相手の宛先をある程度推定できます。このURLとIP名を対応づけるのがDNSシステムです。
    4. DNSシステム
      ネットワークの階層的な構造をドメインで表します。各ドメインには最低1台のDNSサーバーが設置され、ドメイン内部のネットワーク機器のドメイン名とIPアドレスの対応を保持します。
       また、上位にドメインのサーバーに対応関係を定期的に送るとともに、他のドメイン名に対するIPの問い合わせたり、その結果を一定期間保持します。
      DNSシステムは世界の最も多くの計算機で分散管理される巨大なデータベースと考えることができます。



      1. nslookupコマンド
        ドメイン名に対するIPはpingコマンドで知ることができますが、逆の関係は nslookup コマンドで知ることができます。このコマンドは、ドメイン名に対するIPも知らせてくれます。

        L:\>nslookup 150.42.190.100
        *** Can't find server name for address 192.168.2.1: Non-existent domain
        *** Default servers are not available
        Server: UnKnown
        Address: 192.168.2.1

        Name: gatewww.chukyo-u.ac.jp
        Address: 150.42.190.100
      2. bind、named
        DNSシステムは多くの場合、unix系のサーバで運用されます。DNSを実行するソフト名をbind、プログラムが実行されるプロセス名をnamedと呼びます。ドメイン名とIPの対応関係は、namedが利用するファイルに記述されます。ファイルはドメイン名からIPを指定する正引きファイルと、IP番号からドメイン名を知る逆引きファイルなどから構成されます。
  7. 課題
    1. 途中のpingが通らない
       a>b>c>d で到達する経路を考えます。bはa、cはbのゲートウエイとします。ここに、aに「cへの経路はeへ流す」経路情報があり、しかし実際にはeが存在しない場合、変なことが起こります。pingなどで接続試験をすると、a>dには通りますが、a>cには通りません。理由を考えてください。
      1. ヒント
        経路情報を疑いましょう。
    2. どんなフレームが流れる?
      このテキストIVのCの2のネットワークで、192.10.2.1から192.10.3.1宛のpingコマンドを流した、どのようなパケットがどのネットワークに流れるか、詳細に説明しなさい。
  8. まとめ
    1. ネットワーク階層
      ネットワークは階層別の理解が必要です。ここでは、IPを利用したデータグラムの配送手順を紹介しました。
    2. ルータ
      LAN間を接続するにはルータが必要です。ルータがネットワーク層のデータの配送を行います。LANにルータが一台の場合、ゲートウエイと呼ぶことがあります。ルータには経路情報が必要で、ripプロトコルやその改良版が利用されます。
    3. tcpdump
      ネット上のフレームを表示するツールです。どのような手順でデータ交換をしているか解析できます。
    4. ICMP
      ネットワーク配送の制御に利用されるプロトコルです。pingコマンドもICMPの一種です。
    5. ドメイン名とDNS
      ドメイン名は今や団体、企業、役所の住所として利用されています。このドメイン名はDNSシステムでIPと相互変換されます。
    6. バインダ:メモ
      配布したテキストをバインダ用の多穴のパンチャが教務課にあります。試験の時には、綴じていない資料の持ち込みは出来ません。多穴のバインダに綴じるのが一番スマートだと思います。

トップに戻る