Webエンジニアのブログ

「マスタリングTCP/IP 入門編」要約 第5章「IPに関する技術」


マスタリングTCP/IP 入門編 第5版」の第5章の要約。

IPはパケットを目的のホストまで届けることができるが、IPだけで通信ができるわけではない。 ホスト名やMACアドレスの解決をする機能や、エラー処理をする機能が必要になる。この章ではIPを補助するDNSやARP、ICMPなどについて説明する。

DNS (Domain Name System)

IPアドレスをホスト名(およびドメイン名)に変換する手段をDNSという。 DNSではホスト名を入力すると、自動的にホスト名やIPアドレスが登録されているデータベース・サーバーから検索され、そこからIPアドレスの情報を得るようになっている。

ドメインの構造

ドメインにはトップレベルのドメインがあり、("jp"や"uk"など)のような国を表すドメインと、"com"などの分野別ドメインがある。 そして"jp"の下の第2レベルのドメインには、"ac"や"co"などの組織別ドメイン、また"tokyo"などの地域別ドメインがある。

ネームサーバー

ネームサーバーとは、ドメイン名を管理しているホストやソフトウェアのこと。 ネームサーバーは、設置されたドメインの階層に関する情報を管理する。管理する階層はゾーンと呼ばれ、例えばexample.comの"example"のゾーンがあれば、そのネームサーバーには"example.com"というホスト名などのレコードなどが入っている。

一番上のルートネームサーバーには、jpやorgなどを管理しているネームサーバーのIPアドレスが登録されている。 逆に言えば、jpやorgの階層のドメイン名を新設する場合にはルートネームサーバーに追加しなければならない。

リゾルバ

DNSに問い合わせを行うホストやソフトウェアをリゾルバという。 リゾルバは最低でも1つ以上のネームサーバーのIPアドレスを知らなければならない。

IPアドレスを調べるための流れとしては、まずネームサーバーに問い合わせ処理を行う。そして問い合わせを受けたネームサーバーは、自分のデータベースに情報があればそれを返すが、もし無い場合はルートネームサーバーに問い合わせを行う。 そしてドメインの下位層から上へ順番にたどって目的の情報があるネームサーバーを見つける。

このようにDNSはインターネットに広がる分散データベースといえる。

ARP (Address Resolution Protocol)

データリンクを利用して通信をするときには、IPアドレスに対応したMACアドレスが必要なため、ARPによってアドレス解決を行う。

ARPの仕組み

ARPではARP要求パケットとARP応答パケットを利用してMACアドレスを取得する。

ホストAがホストBのMACアドレスを知りたい、という流れで説明すると、まずホストAはARP要求パケットをブロードキャストする。このARP要求パケットは知りたいホストのIPアドレスが入っている。 そしてそれをうけとったホストBは、応答ARPパケットをホストAに送り返し、自分のMACアドレスを教える。 通常これらで解決された情報は一定時間キャッシュされる。

IPアドレスとMACアドレスは両方必要か

まずIPアドレスはネットワーク部によってホストがどこにあるかが分かるが、MACアドレスだけではそれぞれのホストがどこにあるかは分からない。 そのためブリッジなどが学習を行う前は、パケットが全てのネットワーク上に流れてしまうことになる。

RARP (Reverse Address Resolution Protocol)

RARPはARPの逆で、MACアドレスからIPアドレスを知りたい場合に使う。 RARPを使うためにはARAPサーバーを用意する必要があり、RARPサーバーはMACアドレスとIPアドレスを紐づけた情報を持っている。

代理ARP(Proxy ARP)

現在はルーティングテーブルで制御するのが普通であるが、代理ARPを使ってARPパケットを隣のセグメントに送り、2つのセグメントをあたかも1つのセグメントのように振る舞うことができる。

ICMP (Internet Control Message Protocol)

ICMPでは、IPパケットが目的のホストまで届くかどうかを確認する機能や、IPパケットが破棄された時の原因などを通知してくれる機能がある。 ICMPはネットワークのトラブルシューティングやテストなどによく使われる。 またIPv6ではIPアドレスからMACアドレスを知るプロトコル(ARP)は、ICMPによる近隣探索メッセージというものに変更された。

DHCP (Dynamic Host Configuration Protocol)

ノートPCやスマートフォンは持ち運んで使われるのが一般的であるが、その際にホストごとにIPアドレスを設定するのは非常に面倒になる。 そのためDHCPを使って、IPアドレスの設定の自動化、配布するIPアドレスの一括管理などを行う。

NAT (Network Address Translator)

NATとは、プライベートIPアドレスをグローバルIPアドレスに変換する技術として開発されたもの。 さらにTCPやUDPのポート番号も付け替えるNAPT(Network Address Ports Translator)というものもある。

IPトンネリング

IPv6同士で直接接続できない(間にIPv4にしか対応していないホストがある)場合、IPトンネリングを使えばIPv6を利用することができる。

その他のIP関連技術

IPマルチキャスト

マルチキャストによる通信では、受信者がいない時にパケットを送り続けるのは無駄になるため、受信者がいるかどうかの確認が重要になる。 受信者がいるかどうかはIPv4ではIGMP(Internet Group Management Protocol)、IPv6ではICMPv6のMLD(Mluticast Listener Discovery)が使われる。

IPエニーキャスト

エニーキャストが使われているもっとも有名なサービスがDNSのルートネームサーバーである。 ルートネームサーバーは歴史的な制約(UDPデータ長が512オクテットに制限されていること)により、IPアドレスの種類が13個に制限されている。

しかし13個では耐障害性が低いため、実際は世界各国でより多くのルートネームサーバーが運用されている。 そのためDNSルートネームサーバーに要求パケットを送るときは、地域ごとに適したサーバーから応答パケットが返ってくるようになっている。

IPエニーキャストの制限事項としては、パケットの1つ目と2つ目が同じホストに届く保証がないという点である。 そのため複数のパケットをTCPやUDPで送る場合はさまざまな工夫が必要になる。

通信品質の制御

IPプロトコルはもともと「ベストエフォート、最善努力型」のプロトコルとして設計・開発されたため、通信品質の保証をする仕組みはないものだった。 しかし近年ではIPを使った通信サービスの品質を保証するための技術がこれまで以上に求められるようになってきた。

通信品質を制御する仕組みとして、通信品質を保証したいパケットをルーターなどで特別扱いして優先的に処理するようにする。

輻輳(ふくそう)

通信回線が混雑することをふくそうと呼ぶ。 ふくそうが発生するとルーターやハブのキュー(待ち行列)があふれて、大量のパケットが失われる。

ふくそうが発生した場合、ホストは送信料を減らす必要がある。TCPにふくそう制御があるが、ふくそうの発生の有無はパケットが喪失しているかどうかで判断している。 しかしこの方法ではパケットが喪失する前に送信料を減らすことができないため、ECN(Explicit Congestion Notification)という機能が実現された。 ECNでは行きのパケットのIPヘッダに、ルーターがふくそうしていたかどうかを記録し、帰りのパケットのTCPヘッダでふくそうが起きていたかどうかを伝えるメカニズムになっている。

Mobile IP

IPアドレスはネットワークアドレスとホストアドレスから構成される。ネットワークアドレスはネットワーク上でのサブネットワークの位置を表すため、場所によって違う値になる。 スマートフォンやノートパソコンを持ち運ぶ場合、通常の使用方法では違うサブネットに接続するたびにDHCPなどでIPアドレスを割り当てることになる。 しかしIPアドレスが変わると、IPアドレスが変わらないことを前提としているTCP通信は継続されなくなる。

そこで登場したのがMobile IPと呼ばれるサブネットが変わってもIPアドレスが変わらないようにする技術である。 ある固定したいIPアドレスのネットワーク内にあるエージェントを使ってパケットを転送し、IPアドレスを固定するようにする。

しかしIPパケットを通るルートが長くなり効率が悪く、またセキュリティの観点から、ルーター上から身元不明のIPアドレスを送出しようとすると、パケットを破棄するといった設定がされていることも多い。 これらの問題を解決するためにModile IPv6という仕様が決められ、経路最適化やファイアウォールで破棄されないようなオプションを設定できるようになった。

第5章 終わり

以上が、IPに関する技術についての説明。


{ "name": "hareku", "job": "Software Engineer" }