「インターネット概論」の目次

3. 通信の基礎とTCP/IP(後半)

平成10年7月29日0時57分版
     (一応,完成ですが細かなチェックや一部の図は間に合っていません)


 今回はTCP/IPそのものの話をする事にします. 話の順序としては,

  1. コンピュータの間をつなぐIPの話
  2. プログラム間をつなぐための共通な仕組みであるTCPやUDPの話
  3. それぞれのプログラムに固有なプロトコルの話
をします. 昨年度は,IPで止まってしまったので, 今年はなんとかTCP+αまで頑張りたいと思います.


3.4 IP

3.4.1 IPのヘッダ

IPパケットのヘッダーは図3.9の形をしています. 通信の世界では計算機の世界で使われているバイトより 「オクテット」という言葉を使いますが, ここでは分かりやすくバイトを使う事にします.

0バイト目IPの版(4ビット)+IHL(4ビット:ヘッダの長さ)
1バイト目TOS(サービスのタイプ)
2〜3バイト目TL(パケットの長さ)
4〜5バイト目ID(識別子)
6〜7バイト目FL(3ビット:フラグ)+FO(13ビット:フラグメントのオフセット
8バイト目TTL(生存時間)
9バイト目PROT(プロトコルの種類,TCPとかUDPとか)
10〜11バイト目HC(ヘッダのチェックサム)
12〜15バイト目SA(送信元のIPアドレス)
16〜19バイト目DA(宛先のIPアドレス)
20バイト目以降必要な場合に入るオプション
図3-9 IPのヘッダの構成

 以下に各ヘッダーの部分の簡単な説明をします. 最初のIPの版(バージョン)の所には今は「4」が入ります. この第4版IPは現在のTCP/IPのIPの部分を支えていますが,いくつか問題が出ています. その問題を解決するために,第6版が提案されて(IPv6といいます), 現在はその実現に向けてインターネット的なアプローチがなされています. 実際に実験的に運用させながら,仕様を固めていこうというものです. IPv6については,3.4.4で触れるつもりです.

 6から7バイト目のfragmentは,何らかの理由で大きなサイズのデータが 上位(TCP層より上です)から要求された時に分割して送るための方法です.

 8バイト目の生存時間は大事なパラメータです. この値は,パケットがインターネットでいくつかの コンピュータやネットワーク機器(主にルータ)を経由して行く度に 1つづつ減ぜられていきます. なぜこのようなパラメータが必要かというと,ネットワークにループがあると 無限にパケットが回るからです. このパラメータもインターネットが ここまで盛んでない時には32とかの小さな値でした. しかし,今ではUNIXでのtracerouteやWindows95でtracertして貰えば分かるように, 海外だとすぐに30ぐらい超えてしまいます. 最近ではあまりありませんが,相手が(自分でもいいのですが)古いOSで動かしていて, 東欧やアジア等とメールのやりとりをしていると起こりました.

 9バイト目は上位のプロトコルの種類です.

です.TCPとUDPは前回の3.3で簡単に話しましたね. ICMP(Internet Control Message Protocol)はまあエラー処理のための プロトコルだと思って下さい.実際には情報通知や診断を行います. 前回はパケットがパケットを包むような話しをしましたが, このようにIPパケットが含むプロトコルの種類をここに書く事によって いろいろな種類のプロトコルが運べるのです. 先月のイーサネット等の物理的なネットワークの説明では, イーサネットやPPPパケットが,IPパケットを含む話をしましたが, あの絵の中では IPパケットがTCPパケットを含んでいる図も描いてあります.

 宛先や発信元のIPアドレスの説明はもういいですよね. IPアドレスそのものは3.4.3項でしっかり話します.


3.4.2 IP層での経路制御

   ある発信元のIPアドレスから宛先のIPアドレスに データを送る場合を考えてみましょう.

 このIPパケットの宛先のIPアドレスが, 受け取った計算機やネットワーク機器のIPアドレスと同じなら, ヘッダー部のプロトコルの種類の見て対応する処理部 (例えばTCP処理部とかUDP処理部)にデータ部を送り込みます. しかし,IPアドレスが違う場合は,届くように配送しなければなりません.

 このような配送の機能を交換(exchange)機能または経路制御(routing)といいます. 各ポイントでの処理が交換機能で, ネットワーク全体としてみたときには経路制御と考えてもいいでしょう. またこのような機能を持つ装置をルータ(router)と呼びます. 計算機でもネットワークカード(NIC)を2枚以上搭載すればこの経路制御ができます.

 図3.10はいくつかのルータ(またはルータ機能をもつコンピュータ)を経て IPパケットが目的の計算機かネットワーク機器に到達する経路を示しています.

 相手に届くまでの経路はUNIX系のコンピュータなら, tracerouteというコマンドで確認できますし, Windows系のコンピュータでも「MS-DOSプロンプト」で,
    tracert www.osaka-cu.ac.jp
のように入力すれば経路はわかります. 今,インターネット全体では 各プロバイダがそれぞれの所属ドメインの情報(本当はネットワーク情報)を 交換する事でインターネットの到達性(reachability)を保証しています. また,IX(Interbet eXchange)ポイントが複数あって, そこでは1つの高速なネットワーク上で多くのプロバイダが 経路情報を交換しています.

 この講義ではあまり深くは立ち入りませんが,世界では今, 数万(4万〜5万)のネットワークがあり,それらの経路情報が日々更新されながら 全体としてインターネットの到達性を維持しています. ここで言うネットワークとは今までにでたドメイン名とは違い, 3.4.3で話すIPアドレスの所で出て来るネットワーク部のことです.


3.4.3 IPアドレス

 IPプロトコルでは計算機やネットワーク機器を特定させるために IPアドレスを用いる事には何度も触れましたね. このIPアドレスについて少し詳しく説明しましょう.

 通常,1つの計算機に1つのIPアドレスが付けられると考えれば良いのですが, 厳密にはコンピュータに入っているネットワークの機器(ボード)毎に 1つのIPアドレスが付けられています. 図3.10のルータには2つのネットワークカードが入っています. 当然,そのような(IP層を扱う)ルータやコンピュータでは 2つのIPアドレスを持つ事になります. 今はIPアドレスはコンピュータに付与するものだと思われがちですが, すでに家電製品や自動販売機や車等の製品につける事も考えられています. それらの点については,インターネットの将来という最後の講義で話すつもりです.

 現在のIPプロトコルの4版ではIPアドレスは32ビットです. これで,約40億のIPアドレスが取れます. インターネットも初期の頃はこれほど使われるとは 思われていなかったので,この40億ぐらいで十分だと思われていましたが, 最近ではこの数も21世紀に入ればなくなるだろうと言われています. このためだけではありませんが, 新しいIPの第6版が考えられている事はすでに話しましたね. 次項でIPv6については簡単に触れます.

 これから話すIPアドレスのクラスの話しはすでに古い(obsolete)話です. 現在は,クラスの話のあとで出て来る, クラスレスな考え方でIPアドレスは説明されます. すなわち,IPアドレスは前半部がネットワーク部で,後半部がホスト部と呼ばれ, その境界点は可変です. しかし,歴史的な事と今でもクラスの事を知っている事は必要なので, IPアドレスのクラスから説明を始めます.

 IPアドレスはネット部とホスト部に分かれます. ネット部は組織を,ホスト部は計算機やネットワーク機器の識別番号です. 先程の話ではネットワーク機器のそれぞれにつける識別番号となります. このクラスは図3.11のように 最初の幾つかのビットでクラスA,B,C,Dと分かれます. クラスDは違いますが, クラスAは大規模なネットワーク,クラスBは中規模のネットワーク, クラスCは高々コンピュータが254台の小規模なネットワークです.

クラスネット部ホスト部ネットの数ホストの数
A0+7ビット24ビット12616777214
B10+14ビット16ビット1638265534
C110+21ビット8ビット2097150254
図3.11 IPアドレスのクラス

 クラスCの場合はそれほど問題ではないのですが, クラスAやBの場合は接続するホスト(コンピュータやネットワーク機器) が非常に多くあります. TCP/IPはbroadcast(放送)機能があって, すべてのネットワーク上のホストへのパケットを流します. この量はNetwareのIPXプロトコルや,MACのAppleTalk程ではありませんが, 馬鹿にはなりません. たとえば後で延べるRIPという経路制御のプロトコルは, すべてのホストに行き先をアナウンスしていますが通常は30秒に1回流れます.

 計算機やネットワーク機器はそのようなパケットを取り込んで処理します. クラスBの場合は65000台もの装置が1つのネットワーク接続するので, それぞれの計算機が毎分1回broadcastのパケットを出しても全体では 非常に多くのトラフィックを発生します. そのためにサブネットの概念が導入されました.

 クラスBの場合はホスト部の16ビットを更にサブネット部と 残りをホスト部に分けます. 良く使われているのはサブネット部8ビットでホスト部8ビットの場合です. 大阪市立大学もこのようなサブネットです.

 IPアドレスは8ビット毎に10進数で読んで

160.193.3.1
のように表現します. これは大阪市立大学学術情報総合センターのサーバである

mediasv.media.osaka-cu.ac.jp
のIPアドレスです.この私の講座のホームページもこのサーバにあります.

 クラスBでサブネットを8ビットでサブネット部とホスト部に分けた場合には, 分かりやすくて,最初の2つの数字の

160.193
がクラスBのネット部,すなわち大阪市立大学のネットワークの番号を示し, 次の
3
がサブネットです.学内では,このサブネットは学術情報総合センターの 教員のネットワークとされています.最後の,
1
はホストの番号ですね.大阪市大の中では,このホスト番号は,

1-29サーバ類
30-179クライアント系コンピュータ
180-199予備
200-254ネットワーク機器
図3.12 IPアドレスのホスト部の番号付けの例

と決めていますが,これは大学内の取り決めです. ここではなくてイントラネット構築の所で話す事ですね.

 このIPアドレスを10進数ではなく,2進数で書くと,

160.193.3.1
10100000110000010000001100000001
netsubnethost
図3.13 IPアドレスのビット表現

となります. このサブネット構成では,1つのサブネットの中では上から24ビットが共通なので, 2つのIPアドレスが同じサブネットにあるかどうかを調べるために 上位の24だけを比べます. これは実際には2つのIPアドレスに

255.255.255.0

の数でAND演算を行い,その数が同じなら同一サブネットだと判断します. この255.255.255.0をサブネットマスクといいます.

 10進数では分かりにくいので2進数で書くと

 10100000110000010000001100000001
 16019331
AND11111111111111111111111100000000
 2552552550
結果10100000110000010000001100000000
 16019330
図3.14 IPアドレスのマスク

となります.

 サブネット部をこのように8ビットにすると, クラスBの中で254のサブネットが出来ます. また各サブネット内でも254台の計算機などが接続でき, サブネット内でのトラフィックがサブネット外には出なくなります. サブネットの数は組織内のネットワークの数になり, 大学なら学科単位や演習室単位でサブネットを振り当てる事ができます.

 254と言ってきましたが,8ビットなので256ではないかと疑問に思われるでしょう. たしかに8ビットは0から255までなのですが,この中で0と255は特別な意味を持ちます. 0はネットワークそのものとかの意味で使われ,255はbroadcastに使われます. 0は代表番号,255は全員と言った意味だと思って下さい.

 以上は今までのクラスの考え方ででしたが, 既にクラスAやクラスBの無駄な使い方 (ホストの数だけ使いきれず,無駄な空きができる)や, 数少ないクラスAやクラスBのためIPアドレスの枯渇問題が生じて来ています. そのため,最終的にはIPアドレスを128ビットにする 次のIP(IP next generation:IPng)への完全な移行を待たないといけませんが, それまでのつなぎとして, CIDR(Classless InterDomain Routing)の考え方が出て来ています. (IPngがIPv6に決まりました.)

 CIDRでは名前の通りクラスの考えをやめ、 上から何ビットまでをネットワーク部として使うかを決める事になります. 例えば,クラスBを1つ持つ大阪市立大学の場合は,ネットワークとしては,

160.193.0.0

ですが,これを

160.193.0.0/16

と記述します.これは上から16ビットが大阪市大のネットワークである事を表します. 先程例に出した

160.193.3.0

だと

160.193.3.0/24

となりますね.

 インターネットの普及によって新たなIPアドレスの申請は 必要な数しか認めない方向で受理さています. またプロダイダーにはこのIPアドレスを連続して割り当てる (ブロック割り当て)事によって,経路制御の情報が増えない努力をしています. それでは,多くのIPアドレスが欲しい所はどうするかと言うと 単純には必要である事を説明して申請するしかないが, 企業のように多数欲しいが,外部に対してはオープンなシステムでは困る場合は セキュリティやシステム構築で述べる予定のファイアウォール(防火壁)を 構築して外から見せるIPアドレスを少なくして守る事になります.

 たとえば,

xx.xx.xx.xx/29

をネットワークとすると, 上から29ビットマスクするので実際には6つのIPアドレスしか使えないので, これを外に見せても良いName server, Mail server, 外向きのWWW serverやファイアウォール・マシン等に適用する事にして ネットワークの内部ではプライベートアドレスとして認められた

クラスA10.0.0.0/8
クラスB172.16.0.0/16〜172.31.0.0/16
クラスC192.168.0.0/24〜192.168.0.0/24
図3.15 プライベートアドレス

のいずれかを使います.

 プライベートアドレスのクラスAやクラスBを使えば 内部でも多数の計算機を接続する事が出来ます. このようにするとインターネットからは組織の中が, 外に対して認められた6つ程度のIPアドレスしか見えず, ここのセキュリティレベルを高めておけばよい事になります. 逆に組織の中からインターネットをアクセスするのが不便になるように一見思えますが, これにはIPアドレスと変換して外部とうまく接続させる ファイアウォール・ツールやネットワーク機器があります. この機能の便利さは単にこのような便利さだけでなく, 組織のどの部署からインターネットにアクセスしているかを見せないする事で 企業に取ってはある種の機密保護になります.


3.4.4 unicast,broadcast,multicast

 通信の世界では,1対1の通信と全てに伝える1対他の通信があります. また片方向のみであったり双方向であったりするので, 基本的には電話は1対1の双方向の音声による通信手段であるとか, テレビは1対他の片方向の映像と音声による通信手段であるといった 表現をします. この中で1対1の通信の事をユニキャスト(unicast)と,また 1対他(全て)の通信の事をブロードキャスト(broadcast)と言います. 後者の方が言葉としては有名ですね.

 インターネットでも,この概念はしっかり使われています. 通常はユニキャストでの通信が使われるのですが, 局所的には全てのコンピュータ(ネットワーク機器)に連絡したいので ブロードキャストが使われます. このブロードキャストは, IPアドレスのホスト部のビットをすべて1にする事で実現されています.

 たとえば,OCNエコノミー等に接続した場合は, 8個ないし16個のグローバルIPアドレスがもらえますが, 8個だとすると実際にコンピュータ等の機器に利用出来るのは6個だけです. 8個は連続した番号なので,その最後の番号はブロードキャスト用になります. 最初の番号は,そのネットワークそのものを差すIPアドレスなので, これもコンピュータ等の機器には利用できません. 更にネットワークをインターネットに接続するには, ルータ機能をもったネットワーク機器が必要なので, これにも番号が必要になります.(サーバにルータ機能を持たせるのはありです)

 ブロードキャストはユーザが意識しなくとも システム(プログラム)が必要に応じて発生させています. その意味ではネットワーク管理者は管理するネットワークがどのような ブロードキャストが定常的に流しているかをモニターするべきです. 特にネットワーク上にMACやWindows NTがあると, TCP/IP以外のプロトコルも間断なく流れるので要注意です. 3.6.1ではブロードキャスト型の経路制御のプロトコルのRIPを取り上げています.

 ユニキャストが1対1で,ブロードキャストが1対他(全て)なら, マルチキャスト(multicast)は特定のグループだけに流れる通信です. このマルチキャストの考え方は,アプリケーション層なら, このインターネット講座で併用している 複数に送れるメーリングリストがこの概念を実現しています. しかし,IP層だと実際の物理的な接続関係を無視して自由にグループを構成する マルチキャストの実現は難しくて なかなかインターネット全体には実験的にしか実現しませんでした.

 しかし,Windows 95のネットワーク部がこのマルチキャスト (したがってクラスDを扱えるようになっている)を扱えるようになってきたのと, マルチキャストの必要性が出て来たので, これからはマルチキャストが普通になってくるでしょう. マルチキャストが通信の一般的な概念と捉えなおせば, ユニキャストとブロードキャストの概念は,その両極端な通信形態となります. 次の項で話すIPv6では, ブロードキャストの概念はマルチキャストの中にすでに包含されています.

 マルチキャストの必要が出て来たのは動画の配信のように 放送型のアプリケーションが出て来ており, この場合には帯域(ネットワークの太さ)を要求するため, ユーザが多くいる場合にはそのユーザの数だけのユニキャストが要求され, ユニキャストでの実現は効率が悪いからです.


3.4.5 IPv6

 IPv6は,今のIPアドレス(IPv4)が32ビットなので, 数として不足するという問題を解決するために提案・承認されて, 現在はその標準を実現させる実験段階にあります. IPアドレスの枯渇問題を解決させるだけでなく, 現状のインターネットの多くの問題を出来るだけ解決させるような パケット構造をしています.

 IPv6については今年度の工学部の大学院の講義でも 箇条書の形で ホームページ化しています. ここでは,その箇条書の部分を話口調で示す事にします. かならずしも全てが含まれているわけではありません.

 IPアドレスを128ビットにしたので,全ても車にIPアドレスを出すとか, 自動販売機にIPアドレスを振るとか, 自宅の家電製品にも全てIPアドレスをつける事が可能になりました. 1名あたり3.4掛ける10の27乗個のIPアドレスを持てる事になります. いずれ人工心臓をつけた時に,そこにもIPアドレスが振れます.

 アドレス体系もプロバイダ型ユニキャストや地域型ユニキャストや, プライベートアドレスのためのアドレスや, 特定の複数の所に送れるマルチキャストがあります. 組織(ドメイン)のIPアドレスは, プロバイダ型ユニキャストや地域型ユニキャストの中に含まれてきます. トップレベルのプロバイダ(バックボーン)は8192個なので, この割当の問題はこれから出てくるでしょう.

 IPv6は上に述べたIPアドレスだけでなく, データに暗号をかける仕組みなどの今までのIPが手が回せなかった機能が 多く入っています. また,日本でもIPv6のバックボーンの実験も始まっており, IPv6対応のネットワーク機器や,ソフトウェアの開発も進んでいます. 200?年にはこのIPv6が普通になっているだろうと予想されます.


3.5 TCP

 TCPは3.3節で, 信頼出来る通信であると前回は話しました. この節では,このTCPやUDPの トランスポート層 の話を3つに分けてする事にします.


3.5.1 UDPとTCP

 TCP/IPのプロトコルではトランスポート層を, 信頼性のある通信を司るTCP(Transmission Control Protocol)と, 投げっぱなしの通信のUDP(User Datagram Protocol)で 実現していると3.3節では説明しました. IPの上位のプロトコルという意味では, ICMP(Internet Control Message Protocol)もあるのですが, これは実現方法としてIPパケットの中に入っているだけで, 意味としてはIPの世界の情報通知や診断を扱うので, IPと同じネットワーク層と考えられます.

 TCPとUDPの信頼性うんぬんというのは, TCPが送ったパケットに対してACK(Acknowledgement:了解)を要求するのに対して, UDPではこのACKを要求しないからです. TCPはACKが返ってこないと次のパケットを送りません. それに対して,UDPはIPデータグラムの配送機能しか実現しません. IPの機能等は前回話しましたが,更に工学部の大学院で使った 箇条書きの部分も見て下さい.


3.5.2 TCPのヘッダーと配送

 TCPは3.3節でも説明したようにプロセス(アプリケーション)間の信頼できる 通信を保証するプロトコルです.そのため,TCPのヘッダーは図3.16のようになります.

0-1バイト目送信元ポート番号
2-3バイト目宛先ポート番号
4-7バイト目送信用シーケンス番号
8-11バイト目応答確認(ACK)番号
12-13バイト目ヘッダ長(4ビット)+予約(6ビット)+コード(6ビット)
14-15バイト目Windowの大きさ(Window制御のため)
16-17バイト目check sum(エラー検出用)
18-19バイト目緊急ポインタ
20バイト目以降データ部
図3-16 TCPのヘッダの構成

この中のデータ部が上位の各プロセスのプロトコルとなります. 各プロセスのプロトコルについては,3.6節で説明します. どのようなプロセスかは,ヘッダー部のポート番号が対応しています.

 TCPはプロセス間の信頼出来る通信の共通の部分を担当することになっています. (UDPも同様にIPデータグラムに基づく通信の共通部分です) 信頼出来る通信をするためには,


等の操作を相手との受信確認(Acknowledge:ACKと言う)を行いながら 互いに認めあって行います. ヘッダー部のACKの部分とFLAGのACKビットがそれに対応します. TCPでは互いのプロセスのTCPの処理部で 初期状態から始まる状態遷移を内部で行っており, また各状態でタイマーを動かす事によって, 通信は止まる(ハングすると言い,ハングると通称している)事を避けています. 「データを再送する」と簡単に上では記述していますが, どのような条件で再送するかも決めておかないといけません. 相手がある事なので相手のあらゆる状況での対応しないといけないので, この部分のソフトウェアは結構シビアです.

 TCPには信頼出来る通信をする仕組み以外にも 効率良くデータを送る仕掛けもされています. その1つは双方向でデータ送る場合に有効なように, 片方がデータを送った場合に, その受信確認のACKの返信の時についでに逆方向のデータも送る考え方です. この仕組みではヘッダー部のACKの番号が効き目を表します.

 もう1つはデータ転送で用いられるウィンドウ制御です. これはデータを転送する双方の計算機やネットワーク機器では 基本ソフトウェア(OS)の部分がデータを貯め込むので(バッファリング), たとえプロセスが送られたデータを全て処理出来なくとも, まだ送ってきても構わないデータ量をウィンドウのの値として返します.


3.5.3 ポート

 TCPではUDPでも同じですが, ポート番号で(port number)互いのプロセスを認識して通信を行います. と言っても相手に対してファイル転送のTCPパケットを送る時には 相手のファイル転送を受けるプロセスのポート番号が事前に分からないと送れません. そのため,well known port numberとして表の 番号が定義されている.表ではUDPでのポート番号も入っています.
ポート番号プロトコル説明(使われるアプリケーション)RFC番号
20FTP-DATAファイル転送のデータRFC959
21FTP(File Transfer Protocol)ファイル転送RFC959
23TELNET遠隔端末RFC854
25SMTP(Simple Mail Transfer Protocol)電子メール(配送)RFC821
80HTTP(Hype Text Transfer Protocol)WWWシステムRFC2068(HTTP/1.1)
110POP(Post Office Protocol)電子メール(送信,受信)RFC1939(POP3)
119NNTP(Net News Transfer Protocol)電子ニュースRFC977
図3-17 ポート番号とアプリケーションとRFC番号

 インターネットにおけるこのような番号は, IANA (Internet Assigned Numbers Authority)という組織で管理されています.


3.6 いろいろな上位プロトコル

 TCPやUDPの上位で動くのは,良く知られている電子メールやニュースや, WWWシステムでおなじみの「HTTP」のようなプロセス(アプリケーション)です. インターネットでは,ユーザが知らず知らずの内に使っている「経路制御」や 「ネームサーバ」もここに入ります.

 3.5.3節で示したプロトコルも全てRFC(Request For Comments)という, インターネットの標準文書で示されています. 表の中のRFC番号というのは,この文書番号の事をいいます. RFCの文書は固定されたものではなくて, 技術革新が早いこの分野では, その文書はobsoleteという形で古文書になっていきます. 市販されている製品では,RFCを無視したソフトを出すので, 電子メール等でその製品を作っている会社以外のソフトでは 読めなかったり(単なるゴミ)します. また,技術の進歩に追い付いていないソフトウェアを使っていると, 添付ファイルが読めないなどの行き違いが生じます.

 では,幾つかもプロセス(アプリケーション)について, プロセス間通信的な説明を加えて行きます. 電子メール等のいわゆるアプリケーションは来月以降から話をするので, その参考になるような事を話そうと思います.


3.6.1 簡単な経路制御:RIP

 IPアドレスを扱うネットワーク層は 計算機間通信またはホスト間通信を扱う所であると話しました. 通信をする両端の計算機やネットワーク機器では, 送るまたは受け取ったデータを 上位のプロトコル(TCPやUDP)に投げれば良いのですが, 途中にある(経路上にある)計算機やネットワーク機器の場合は 左から来たパケットを右に投げるように経路を制御しないといけません. このような経路制御をroutingと言い, 複数のネットワークからなるネットワークでは必要な事です.

 経路制御には静的経路制御と動的経路制御があります. 一般に末端のネットワークでは静的な経路制御でも間に合いますが, ネットワークの中心に向かう程動的な経路制御が必要になってきます. それはネットワークや計算機はいつ落ちるかもしれず, またいつ高速なネットワークに変更されたり, ネットワーク構成が変更されるか分からないからです.

 動的な経路制御は,世界のインターネットでのネットワーク数の増加で (現時点で世界で40000以上のネットワークが登録されている) 常にホットな技術の進歩を要求される所である. ここで1つのネットワークとは組織のネットワークという事もありますが (大阪市大は160.193.0.0/16という1つのネットワークです), 複数の連続したIPアドレスをもつ所と理解をして下さい.

 動的な制御で簡単なものはRIP(Route Information Protocol)と呼ばれるもので, 図3.18のデータ形式です. 簡単に説明すると,ネットワークの番号とそのメトリック(距離)が対になって 複数入ったパケットと考えてもらえば良いのです. RIPを流すコンピュータやネットワーク機器(この場合はルータ)が, xx.xx.xx.xxのネットワークのメトリックはzですと宣言しているだけです. このメトリックとは近さの指標と考えてもらえれば良くて, 数が小さい程近いと考えれば良いのです. メトリックのビット長は4なので,メトリックが15の場合は届かない事を示します.

0バイト目タイプ:12
1バイト目未使用
2-3バイト目順序番号
4バイト目更新用ID
5バイト目距離別グループ数
6バイト目以降距離とネットワークのペア
図3.18 RIPのデータ形式(タイプ12の経路情報更新メッセージ)
形式は単純にしてあります.

 例えば,図3.19のネットワークを考えて見ます. ルータAとルータBからこのネットワークは外部と継っているとします. ルータAもルータBもRIPを流しているとして, コンピュータCは外部へのパケットをどのような流すかと言うと, コンピュータCはAとBのRIPを見ながら相手のネットワークを見つけで, そのネットワーク番号をメトリック15より小さな値で持つルータを見つけ, あればそちらのルータにパケットを流します. もし両方のルータがそのネットワーク番号を持てばメトリックの低い方に流します.

図3.19 RIPによる経路制御

 RIPにはdefault routeとして0.0.0.0のネットワーク番号があり, ネットワークのコンピュータやネットワーク機器が送るべき相手の ネットワーク番号がRIP中に無い時は このdefault routeをRIP内に持つルータにパケットを送ります.

 このRIPが動的と言う意味は メトリックがネットワークの状況に応じて変化する事であり, RIPは30秒に1回程度の割で流れるので, ルータ間をRIPが流れる事によりメトリックの変化が伝わっていきます. 良く考えてもらうと分かると思いますが, メトリックは変化するのでパケットが常に同じ経路を通るとは限りません. メトリックの変化で経路は変わる事があり, 行きと帰りの経路が変わる事も良くあることです. 経路が変わるのでパケットの到着する順序が変わる事もあります(TCPではありません).

 現在,経路制御は組織の中では静的なものや動的でもRIP程度で対処しているが 可変ビット長のネットワーク部を持ったり, 場所が分散する組織ではもう少し複雑な動的経路制御がこれから必要になります. またプロバイダーのように, プロバイダー間で接続するネットワーク情報を交換する場合には 更に違ったプロトコルを使っています.


3.6.2 ネームサーバ:DNS

 DNS(Domain Name System)は,ドメイン名等の名前空間と, IPアドレスの空間を対応付ける仕組みです. たとえば,大阪市大のホームページを見ようとして
http://www.osaka-cu.ac.jp
と入力しても,実際にはこのwww.osaka-cu.ac.jpを, IPアドレスに変換するソフトウェアがあって, 正しいIPアドレスを,相手まで(途中までという事もあります)質問して(query), 返事が返って(response)きます.

 ここでも,ポート番号53番のプロトコルが決められています. ネームサーバの仕組みそのものについては長くなるので省略します. ネームサーバだけで1回分の講義が出来ると思います. 工学部の大学院の講義の2回目では 箇条書ながら,まとめてあるので参考にしてください.


3.6.3 電子メールの配送:SMTP

 電子メールは, SMTP(Simple Mail Transfer Protocol)と呼ばれるプロトコルで扱われます. 最近はメールの受信はPOP(Post Office Protocol)で行われる事が多いので, SMTPはメールの送信や配送と言った方がいいと思います.

 SMTPはポート番号が25番のプロセスで, POPは良く使われるPOP3の番号が110番です. いずれにせよUNIX系のいわゆるメールサーバでは, sendmailというプロセスが対応する事になります. 電子メールは次に取り上げるWWWシステムと同じように 重要なアプリケーションですから, 来月以降でしっかり話します.


3.6.4 WWWシステム:HTTP

 WWWシステムでは基本的には,HTTP(Hyper Text Transfer Protocol)で データのやり取りをします. HTTPはポート番号は80番です. Netscape Navigator等のWWWブラウザはHTTPだけを扱うわけではありませんが, WWWサーバというば通常はポート80番への問い合わせの処理をします. WWWシステムについても,おそらく10月,11月で話をします.


(注のコーナ)

ネットワーク部とホスト部の境界点

 今のIPアドレスの考え方は,ネットワーク部とホスト部のビット数が ある程度自由に決められる事です. それに対してクラスがあった時代のIPアドレスでは, ホスト部が8ビット(クラスC),16ビット(クラスB),24ビット(クラスA)と 3通りにしか分けられなかったと考えて下さい.


ICMP

 ICMPはネットワークやコンピュータのネットワーク機能を調べるのに, 使われます. pingやtraceroute(Windows系ではtracert)は, このICMPの情報通知やエラー診断の結果を使っています.


目次に戻る