第5章IPに関連する技術
DNS(Domain Name System)
ネームサーバーは設置された階層のドメインに関する情報を管理し、管理する階層をゾーンと呼ぶ。 ルートに設置されているサーバーがルートネームサーバーでDNSによるデータの検索でもっとも重要な役割を担っている。DNSによるIPアドレスの検索はルートネームサーバーから順番に行われるため、全てのネームサーバーはルートネームサーバーのIPアドレスを登録しなければならない。 ルートネームサーバーには次のレベルのネームサーバーのIPアドレスが登録されており、管理しているドメインより下の階層であれば自由に登録できるが、その階層のドメイン名やネームサーバーを新設したりIPアドレスを設定する場合は上位の階層のネームサーバーに設定を追加・変更する必要がある。 DNSによる問い合わせ
kusa.ac.jpドメイン中のコンピュータがwww.ietf.orgのサーバーにアクセスしようとした時のDNSの問い合わせの流れ
2.kusa.ac.jpのネームサーバーは自分のデータベースに情報があれば返し、なければルートネームサーバーに問い合わせる。 3.ルートネームサーバーはietf.orgのネームサーバーのIPアドレスを返す。 4.kusa.ac.jpのネームサーバーはietf.orgのネームサーバーにIPアドレスを問い合わせる。ietf.orgのネームサーバーはwww.ietf.orgのIPアドレスを返す。 5.kusa.ac.jpのネームサーバーはクライアントにwww.itef.orgのIPアドレスを返す。 6.クライアントとwww.ietf.orgで通信が開始される。
リゾルバーやネームサーバーは新たに知った情報をキャッシュすることで問い合わせでのパフォーマンス低下を防ぐ。
ARP(Address Resolution Protocol)
ARPの概要
宛先IPアドレスを手がかりにして次にパケットを受け取るべき機器のMACアドレスを知りたい時に利用する。
宛先のホストが同一リンク上に無い場合は、次ホップのルーターのMACアドレスをARPで調べる。
IPv4のみでIPv6では代わりにICMPv6の近隣探索メッセージが使われる。
ARPの仕組み
ARP要求パケットでMACアドレスを知りたいホストのIPアドレスをブロードキャストし、同一リンク上の全てのホストやルーターがパケットの内容を解析し、目的のIPアドレスが自分のIPアドレスに該当すれば、自分のMACアドレスを埋め込んだARP応答パケットを送信元ホストに返送する。
IPデータグラムを配送するたびにARP要求パケットを送信すると無駄なトラフィックが多くなるため、ARPでMACアドレスを取得したらしばらくはキャッシュする。
IPアドレスとMACアドレスは両方とも必要?
別のリンクに接続されたホストへはルーターでネットワークが切れているため、ルーターのMACアドレス宛にパケットを送信する必要がある。
MACアドレスをブロードキャストアドレスにすると、別のルーターもパケットを受信し、目的のルーターに転送するのでパケットが増えてしまう。
仮にMACアドレスだけでネットワークのホストを接続するとしたら、MACアドレスだけでは各ホストがどこにいるのか分からないためブリッジが学習する前であれば全世界に向けてパケットが流れるため、自分のネットワークの帯域が埋まってしまったり、保持するMACアドレスの情報が多すぎて集約しきれない。
RARP(Reverse Address Resolution Protocol)
MACアドレスからIPアドレスを取得するために使われる。
IPアドレスを設定するインターフェースが無かったりDHCPで動的なIPアドレスを設定されると困るような組み込み機器によく使われる。 RARPサーバーを用意する必要があり、RARPサーバーにMACアドレスとIPアドレスを設定し、電源を入れてから機器はRARPサーバーに要求を送り、RARPサーバーはIPアドレスを返して機器は設定する。
代理ARP(Proxy ARP)
通常のARPパケットはルーターで遮断されるが、代理ARPでは隣のセグメントに転送できる。
現在のTCP/IPネットワークでは複数のセグメントをルーターで接続するときにはそれぞれのセグメントにサブネットを定義して経路転送表で経路制御する。サブネットマスクを定義できない機器がある時は代理ARPを使わないと運用できない場合がある。
ICMP(Internet Protocol Message Protocol)
IPパケットが目的のホストに届くか確認したり何らかの原因でIPパケットが破棄された時にその原因を通知する機能、不十分な設定をより良い設定に変更してくれる機能がある。
ICMPメッセージ
table:ICMPメッセージ
タイプ(10進数) 内容
0 エコー応答(Echo reply)
3 到達不可(Destination Unreachable)
4 始点抑制(Source Quench)
5 リダイレクト(Redirect)
8 エコー要求(Echo Request)
9 ルーター広告(Router Advertisement)
10 ルーター請願(Router Soicitation)
11 時間超過(Time Exceeded)
17 アドレスマスク要求(Address Mask Request)
18 アドレスマスク応答(Address Mask Reply)
ICMP到達不能メッセージ(タイプ3)
IPルーターがIPデータグラムを宛先に配送できない場合に、送信ホストに対して配送できなかった理由を示したICMP到達不能メッセージ(ICMP Destination Unreachable Message)を送信する。
table:ICMP到達不能メッセージ
コード番号 ICMP到達不能メッセージ
0 Network Unreachable
1 Host Unreachable
2 Protocol Unreachable
3 Port Unreachable
4 Fragmentation Needed and Don't Fragment was Set
5 Source Route Failed
6 Destination Network Unknown
7 Destination Host Unknown
8 Source Host Isolated
9 Communication with Destination Network is Administratively Profibited
10 Communication with Destination Host is Administratively Profibited
11 Destination Network Unreachable for Type of Service
12 Destination Host Unreachable for Type of Service
ICMPリダイレクトメッセージ(タイプ5)
送信ホストが最適ではない経路を使用しているのをルーターが検出した時に、そのルーターがホストよりも良い経路情報を持っている場合に、最適経路の情報と元のデータグラムを示したICMPリダイレクトメッセージをそのホストに対して送信する。
例えばルーターの経路制御表がおかしい場合にトラブルの原因になるため、動作しないよう設定されている場合もある。
ICMP時間超過メッセージ(タイプ11)
IPパケットの生存時間(TTL: Time To Live)のフィールドはパケットがルーターを1つ通過するたびに1つずつ減って0になるとIPデータグラムは破棄される。
この時、IPルーターはパケットが破棄されたことを通知するICMP時間超過メッセージ(ICMP Time Exceeded Message)のコード0を送信元に送り返す。
生存時間を設定しないと、経路制御にトラブルが発生した際にパケットが永久にネットワークを回り続ける状態になるため。
ICMPエコーメッセージ(タイプ0、8)
通信したいホストやルーターに対して、IPパケットが到達したかを確認するために相手先ホストにICMPエコー要求メッセージ(ICMP Echo Request Message)を送信し、相手先ホストからICMPエコー応答メッセージ(ICMP Echo Reply Message)が返って来れば到達可能であることがわかる。(例:pingコマンド)
ICMP始点抑制メッセージ(タイプ4)
低速の回線に送出している側のルーターのキューの残りがゼロになり送出不能になった時に、ICMP始点抑制メッセージ(ICMP Source Quench Message)をIPパケット送信元に送る。
受信したホストは回線のどこかが混雑していることを知り、IPパケットの送信間隔を空けたりする。
不公平な通信を引き起こす恐れがあるためほとんど利用されていない。
ICMPルーター探索メッセージ(タイプ9、10)
自分が繋がっているネットワークのルーターを見つけたい場合に、ホストがICMPルーター請願メッセージ(Router Solicitaiton)を送ると、ルーターはICMPルーター広告メッセージ(Router Advertisement)を返す。
ICMPアドレスマスクメッセージ(タイプ17、18)
サブネットマスクを調べたいルーターやホストがある場合に、調べたいホストやルーターに向けてICMPアドレスマスク要求メッセージ(ICMP Address Request)を送信するとICMPアドレスマスク応答メッセージ(ICMP Address Mask Reply)でサブネットマスクの値を知ることができる。
ICMPv6
table:ICMPエラーメッセージ
タイプ(10進数) 内容
1 終点到達不能(Destination Unreachable)
2 パケット最大(Packet Too Big)
3 時間超過(Time Exceeded)
4 パラメータ問題(Parameter Problem)
0〜127のエラーメッセージはIPパケットが宛先ホストまで到達しなかった場合にエラーが発生したホストやルーターによって送信される。
table:ICMPv6情報メッセージ
タイプ(10進数) 内容
128 エコー要求メッセージ(Echo Request)
129 エコー応答メッセージ(Echo Reply)
130 マルチキャストリスナー問い合わせ(Multicast Listener Query)
131 マルチキャストリスナー報告(Multicast Listener Report)
132 マルチキャストリスナー終了(multicast Listener Done)
133 ルーター要請メッセージ(Router Solicitation)
134 ルーター告知メッセージ(Router Advertisement)
135 近隣要請メッセージ(Neighbor Solicitation)
136 近隣告知メッセージ(Neighbor Advertisement)
137 リダイレクトメッセージ(Redirect Message)
138 ルーターリナンバリング(Router Renumbering)
139 情報問い合わせ(ICMP Node Information Query)
140 情報応答(ICMP Node Information Response)
141 逆近接探索要請メッセージ(Inverse Neighbor Discovery Solicitation)
142 逆近隣探索告知メッセージ(Inverse Neighbor Discovery Advertisement)
近隣探索
133〜137までを近隣探索メッセージと呼ぶ。
IPv6アドレスとMACアドレスの対応関係を調べる時は近隣要請メッセージでMACアドレスを問い合わせ、近隣告知メッセージでMACアドレスを通知してもらう。
DHCP(Dynamic Host Configuration Protocol)
IPアドレスの設定を自動化したり配布するIPアドレスの一括管理を行う。
IPv6でも利用可能。
DHCPの仕組み
DHCPサーバーを立ち上げ、DHCPで配布するIPアドレスをDHCPサーバーに設定する必要や、サブネットマスクや経路制御の情報。DNSサーバーのアドレスを必要に応じて設定する。
DHCPサーバーは耐障害性から複数サーバーを起動することが奨励されているが、片方のDHCPサーバーが割り当てたIPアドレスをもう片方のDHCPサーバーが配布する可能性がある。
配布するIPアドレスや配布されたIPアドレスがすでに使用されていないか確認するため、DHCPサーバーは配布前にICMPエコー要求パケットを送信し、返事が来ないことを確認し、DHCPクライアントはDHCPサーバーから配布されたIPアドレスに対してARP要求パケットを送信し応答が来ないことを確認する。
DHCPリレーエージェント
複数イーサネットのセグメントで構築されたネットワークの場合、一つ一つのセグメントごとにDHCPサーバーを設置するのは管理・運用が厳しいため、一元管理するためDHCPリレーエージェントを使って運用される。
各セグメントにDHCPサーバーの代わりとしてDHCPサーバーのIPアドレスを設定したDHCPリレーエージェントを設置し、DHCPサーバーには各セグメントごとに配布するIPアドレスの範囲を登録する。
DHCPリレーエージェントはDHCPクライアントが送信したDHCP要求パケットなどのブロードキャストパケットを受信するとユニキャストパケットにしてDHCPサーバーに転送する。
DHCPサーバーは転送されたDHCPパケットを処理しDHCPリレーエージェントに応答を返すことで、DHCPリレーエージェントがDHCPサーバーから送られたDHCPパケットをDHCPクライアントに転送する。
NAT(Network Address Transfer)
NATとは
ローカルなネットワークでプライベートIPアドレスを使用しインターネットへ接続する時にグローバルIPアドレスへ変換する技術。
NAPT(Network Address Ports Transfer)でTCPやUDPのポート番号を付け替えることができるため、1つのグローバルIPアドレスで複数のホスト間通信が可能になった。
アドレスが枯渇しているIPv4のために生まれたが、IPv6でもセキュリティ向上やIPv4との相互通信のためにNAT-PTとして使われている。
NATの仕組み
10.0.0.10と163.221.120.9が通信する場合、途中のNATルーターで送信元IPアドレス(10.0.0.10)がグローバルIPアドレス(202.244.174.37)に変換されてから転送される。163.221.120.9からパケットが送られてきた時は宛先IPアドレス(202.244.174.37)がプライベートIPアドレス(10.0.0.10)に変換されて転送される。
NAT(NAPT)対応ルーター内部でアドレス変換のためのテーブルが自動的に作成される。TCPの場合にはTCPコネクション確立を意味するSYNパケットが流れた時にテーブルが作成され、FINパケットが流れてその確認応答がされた後でテーブルから消去される
NAT-PT
IPv6ヘッダとIPv4ヘッダを付け替える技術。
NATの問題点
NATの外側から内側のサーバーに接続することはできない。
指定したポート番号のみ内部へアクセスできるように設定できるが、所有しているグローバルIPアドレスの数と同じ台数分しか設定できない。
変換テーブルのセク生や変換処理のオーバーヘッドが生じる。
通信中にNATが異常動作して再起動した時、全てのICPコネクションがリセットされる。
NATを複数台用意して故障時に切り替えるようにしてもTCPコネクションは必ず切れる。
NATの問題点の解決とNAT越え
IPv6を使うことで利用できるIPアドレスの数が膨大になるため、全ての機器にグローバルIPアドレスを割り振ることができる。
NATがある環境を前提にアプリケーションを作成すること。
NAT越えによって解決可能。
NATの内側(プライベートIPアドレス側)のホストで動かしているアプリケーションがNATの変換テーブルを作成するためにダミーのパケットをNATの外側に向かって送信する。NATはダミーと認識できないため変換可能なテーブルを作成するため、この時に適切な形に変換テーブルが作成できるとNATの外側のホストがNATの内側のテーブルに接続できるようになる。
IPv6に移行しなくても済むため利用者にとってはメリットが大きいが、仕組みが複雑化するのと想定外の環境では動作しない、トラブル時の原因特定が困難になる。
通常IPv6ネットワークの間のネットワークがIPv4の場合IPv6ネットワークが通信することはできないが、IPv6ネットワークで流れているIPv6のパケット全体を1つのデータとして扱い、その前にIPv4のヘッダをつけることでIPv4ネットワークを通過できる。これをIPトンネリングと呼ぶ。 MobileIP、マルチキャストパケットの中継、IPv4→IPv6またはIPv6→IPv4にパケットを送る、データリンクフレームをIPパケットで送る時に使われる。 その他IP関連技術
マルチキャスト関連技術
受信者がいるかの確認をIPv4ではIGMP、IPv6ではICMPv6の機能のMDL(Multicast Listener Discovery)が使われる。
MLDはルーターに受信したいマルチキャストアドレスを通知するのとスイッチングハブに受信したいマルチキャストアドレスを通知する役割があり、前者によってルーターは他のルーターにも通知しマルチキャストパケットが送られるようにする。後者はIGMPスヌーピングという。 通信の品質の制御
通信品質を保証したパケットはルーターで保証できる範囲内で優先的に処理し止むを得ない場合には優先しないパケットから廃棄することで通信品質を提供する。
通信品質を制御する仕組みとしてRSVPを用いてEnd to Endできめ細かい優先制御を提供するIntServと相対的に大雑把な優先制御を提供するDiffServがある 明示的な輻輳通知
IPの上位層は輻輳が発生しているかはパケットの喪失で判断するため、これだとパケットの喪失前にパケットの送信量を制御することができない。
ECNを使って明示的に輻輳通知を送ることができる。