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

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

平成9年7月28日2時01分版(IPまで完成です)


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

  1. コンピュータの間をつなぐIPの話
  2. プログラム間をつなぐための共通な仕組みであるTCPやUDPの話
  3. それぞれのプログラムに固有なプロトコルとしてRIPの話
をします.

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といいます), 現在はその実現に向けてインターネット的なアプローチがなされています. 実際に実験的に運用させながら,仕様を固めていこうというものです.

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

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

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

です.TCPとUDPは前回の3.3で簡単に話しましたね. ICMP(Internet Control Message Protocol)はまあエラー処理のための プロトコルだと思って下さい.実際には情報通知や診断を行います. 前回はパケットがパケットを包むような話しをしましたが, このように含むプロトコルの種類をここに書く事によって いろいろな種類のプロトコルが運べるのです.

 宛先や発信元のIPアドレスの説明はもういいですよね.


3.4.2 IP層での経路制御

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

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

 このような機能を交換(exchange)機能または経路制御(routing)といいます. またこのような機能を持つ装置をルータ(router)と呼びます. 計算機でもイーサカードを2枚以上搭載すればこの経路制御ができます.

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

 この講義のメーリングリストで触れられた, tracert等のプログラムで相手のコンピュータまで経路が調べられますが, 実際にはこのように経路が交換されながら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アドレスのクラスから説明を始めます.

 IPアドレスはネット部とホスト部に分かれます. ネット部は組織を,ホスト部は計算機やネットワーク機器の識別番号です. 先程の話ではネットワーク機器のそれぞれにつける識別番号となります. このクラスは図3.11のように 最初の幾つかのビットでクラスA,B,C,D,Eと分かれます. クラス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ネットワーク機器

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

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

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

255.255.255.0

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

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

 10100000110000010000001100000001
 16019331
AND11111111111111111111111100000000
 2552552550
結果10100000110000010000001100000000
 16019330

となります.

 サブネット部をこのように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

のいずれかを使います.

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


3.4.4 IPv6

 IPv6についても簡単に話すつもりだったのですが, まだTCPにも入れない状態なので,参考書をあげておきました. ポイントは

等ですが,これらに興味のあるかたは是非参考書を読んで下さい.

3.5 TCP

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

3.7 いろいろな物理ネットワーク


目次に戻る