« 【2】2進数の数学〜論理演算 |
【4】イーサネットの種類 »

【3】TCP/IP

1)インターネット上の事実上の標準通信規格

「TCP/IP」とは通信規格の名称である。
現在、インターネットで使用することを意図した通信規格としては、
・NETBEUI (マイクロソフト)
・SPX/IPX (Novell 社 Netware)
・TCP/IP  (米国 国防総省)
・AppleTalk (Apple 社)
・FNA (富士通)
・SNA (IBM)

などあるが、TCP/IP を除いては、現状殆どお目にかかることがない。
イントラネット環境では、FNAとSNA を除いて、今でも用いられている(時々お目にかかる)。
現在広く普及している、TCP/IPは、アメリカ合衆国の国防総省で 1974年に開発されたもの。

最初は、災害に強い(ソ連の致命的な攻撃にあっても、通信経路を維持できるような)軍事用ネットワークが目的だったが、1983年にUnix(4.2BSD) に採用されると、一般への普及がはじまり、 1991年に Webシステムがスタンフォード大学で TCP/IP ベースで開発されると(当時は Gopher と呼ばれ、現在のWeb とはちょっと別物)、世界レベルの爆発的普及となり、現在に至る。

TCP/IP は最も古く、後発のその他の通信プロトコルに比べると、実は機能的に見劣りするのだが、仕様が RFC ドキュメントという形で公開されていたので、実用に耐えるように改良・工夫されてきた。 そのため、多少知っておかなければならない事柄が多い。

2)TCP/IPでは、通信回線の定義はない。

●通信システムは階層構造である:

上位層(=各種サービス)…応用プロトコル・アプリケーション(後述)
中位層(=通信手順の制御)…TCP/IP
下位層(=通信手段と媒体)…イーサネット、FTTH、無線

「TCP/IPは通信規格の名称」と前節で述べたが、「通信回線に何を使うべきか」までは定義されていない。「TCP/IPの通信規格」とは、平たく言ってしまえば、「通信の手続き方法と順番≡通信の言語」を定義しているだけである。

現在、インターネットに接続する為に、装置のひとつとして、イーサネットのLANカードを用意するが、「イーサネットはTCP/IPで規定する通信データを送受信するひとつの手段でしかない」という事を認識し、勘違いをしないでいただきたい。

「イーサネット≡TCP/IP」でも「イーサネット⊂TCP/IP」でも「イーサネット⊃TCP/IP」でもなく、両者は別物の規格であることを認識して頂きたい。

TCP/IPで相手と通信できれば、シリアルケーブルでも無線でも電話ケーブルでもプリンタケーブルでもよく、通信手段は問わないのである。
それ故、ダイヤルアップから光ファイバー、無線で同じインターネットのサービスが可能である。

3)TCP/IPスイート

「TCP/IPスイート」は、TCP/IPをベースにした、全ての応用通信手順の総称である。
下の表はそれらの相関関係を大まかに示した図である。

TCP/IPスイートの相関関係


ここで挙げたTCP/IPスイートは、全体の一部であり、限られたスペースで全てを示すのは不可能である。

4)IPアドレス・サブネットマスク・CIDR

IPアドレスは体系が2種類あり、それぞれIPv4、IPv6と呼ばれている。
現在世界標準なのはIPv4の方で、TCP/IPが開発されて以来の従来のアドレス体系である。
IPv6は、次世代のTCP/IPとして位置付けられており、現在は日本で最も実用化実験が進んでいる。

●IPv4とIPv6の違い
IPv4 D.D.D.D の形式で表記。
例)192.168.0.25
アドレス長
=4バイト
=2の32乗
IPv6 D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D の形式で表記。
D=0 の時は
22.0.0.0.0.0.0.0.1.2.3.4.91.0.3.8 と記述する代りに
22........1.2.3.4.91..3.8 と記述出来る。
また、16進数表記で、
1600:0000:0000:0000:0102:0304:5B00:0308 又は、
1600::::0102:0304:5B00:0308 と記述出来る。
アドレス長
=16バイト
=2の128乗

※ 上記で D は 0 〜 255 の整数。

IPアドレスは、この世に存在するTCP/IPで通信する個々の装置で異なっていなければならない。
そのため、TCP/IPで通信可能な装置の最大数は、現用のIPv4で、232 装置、即ち、約42億9千万余りとなる。
実際には、使用上の色々な制約があるので、もっと少ない数の装置しか利用できない。 1982 年にTCP/IPがUNIX(4.2BSD) に組み込まれた時点で、有効利用を図る仕組みとして先ず考えられたのが、下記の表に示す、ネットワーク規模による「クラス分け」である。

●IPv4アドレスのクラス分け


ブロードキャスト 0.x.x.x  
クラスA 1.x.x.x 〜 126.x.x.x 大規模ネットワーク用
(16,777,216 アドレス使用可)
ループバック 127.x.x.x  
クラスB 128.0.x.x 〜 191.255.x.x 中規模ネットワーク用
(65,536 アドレス使用可)
クラスC 192.0.0.x 〜 223.255.255.x 小規模ネットワーク用
(256 アドレス使用可)
クラスD 224.0.0.x 〜 239.255.255.x マルチキャスト用
クラスE 240.0.0.x 〜 254.255.255.x 実験用
ブロードキャスト 255.x.x.x  



※ 上記で x は 0 〜 255 の整数。

上記のクラス分けは、1つの組織(企業・大学単位)全体での使用予定数に基づく割り当てだが、現実に、クラスAで1670万台を超える装置を、クラスBで65000 台を超える装置を一括管理するのは現実的ではない。
現実の大規模ネットワークというものは、小規模・中規模ネットワークの集まりであるので、そのようなネットワークの管理を行う仕組みとして、「サブネットマスク」というのが作られた。
「サブネットマスク」を理解するために、上記のクラス分けをサブネットマスクで表現するとこうなる:

●IPv4アドレスのクラス分けをサブネットマスクで表現すると・・・

IPアドレスの範囲 サブネットマスク
ネットワーク全体 0.x.x.x 0.0.0.0
クラスA 1.x.x.x 〜 126.x.x.x 255.0.0.0
ループバック 127.x.x.x 255.0.0.0
クラスB 128.0.x.x 〜 191.255.x.x 255.255.0.0
クラスC 192.0.0.x 〜 223.255.255.x 255.255.255.0
クラスD 224.0.0.x 〜 239.255.255.x 255.255.255.0
クラスE 240.0.0.x 〜 254.255.255.x 255.255.255.0
ブロードキャスト 255.x.x.x 0.0.0.0



※ 上記で x は 0 〜 255 の整数。

「サブネットマスク」は、「ネットワークアドレス部」と「ホストアドレス部」をビット羅列で定義することで、その役目を果たす。
以下は、クラスBの場合の例を示す:


1-06_09.gif


サブネットマスクの2進数表記で、「1」のビットがネットワークアドレス部、サブネットマスクの2進数表記で、「0」のビットがホストアドレス部となる。
サブネットマスクの概念を取り入れるとき、「ネットワーク全体を示すIPアドレス」というものが必要になる。 同様に、「サブネット内ブロードキャストIPアドレス」というものも必要になる。
「ネットワーク全体を示すIPアドレス」はホストアドレス部が2進数表記で全て「0」のIPアドレスであり、「サブネット内ブロードキャストIPアドレス」は、ホストアドレス部が2進数表記で全て「1」のIPアドレスとなっている。
表記上は、2進数ではなく、10進数で表記するのが通例となっている。

上記の例では、 172.210.0.0 がネットワーク全体を示すIPアドレスになり、 172.210.255.255 がサブネット内ブロードキャストIPアドレスになる。
これら2つのIPアドレスは、経路制御上、特別な意味を持つため、実際にアドレスを割り宛てることができない。
この状態では、1つのネットワークに最大、216 - 2 = 65,534 台のホストマシン・クライアントマシンを設置する形態でしか、ネットワークを組むことができず、実際無駄になっていた。

ここで、ネットワークアドレス部を拡張して見たのが、下記である:


1-06_10.gif


この例では、 172.210.37.0 がネットワーク全体を示すIPアドレスになり、 172.210.37.255 がサブネット内ブロードキャストIPアドレスになる。
このネットワークにおける、接続ホスト可能台数は、最大、28 - 2 = 254 台となるが、無駄は少なくなっている。
サブネットマスクの設定を変えることで、効率よくIPアドレスを割り当てできるようになる。
このようにすることで、上記の例では、クラスBネットワーク 172.210.0.0 に、256 のサブネットワークを内包出来るようになり、現実に即したネットワーク構築が可能になる。

しかし、クラスBのIPアドレスの不足が1990年代に入って、更に懸念されるようになり、もう一歩進んだ利用方法として、クラスA〜Eという概念を捨て、代りに取り入れたのが、「CIDR(サイダー)」という考え方である。
「CIDR」を理解するために、上記のクラス分け・サブネットマスクをCIDRで表現するとこうなる:

●IPv4アドレスのクラス分け・サブネットマスクをCIDRで表現すると・・・


  IPアドレスの範囲 サブネットマスク CIDR
ネットワーク全体 0.x.x.x 0.0.0.0 0.0.0.0/0
クラスA 1.x.x.x 〜
126.x.x.x
255.0.0.0 DDD.0.0.0/8
ループバック 127.x.x.x 255.0.0.0 127.0.0.0/8
クラスB 128.0.x.x 〜
191.255.x.x
255.255.0.0 DDD.DDD.0.0/16
クラスC 192.0.0.x 〜
223.255.255.x
255.255.255.0 DDD.DDD.DDD.0/24
クラスD 224.0.0.x 〜
239.255.255.x
255.255.255.0 DDD.DDD.DDD.0/24
クラスE 240.0.0.x 〜
254.255.255.x
255.255.255.0 DDD.DDD.DDD.0/24



※ 上記で x, DDD は 0 〜 255 の整数。

CIDRの表記では、/8, /16, /24 などの表記が後ろに付加されるが、これは、サブネットマスクのネットワークアドレス部のビット長そのものである。
上記の、ネットワーク 172.210.37.0 のサブネットマスク 255.255.255.0 は、CIDR形式では、172.210.37.0/24 という表記になる。
また、CIDR形式で示されたIPアドレスで、サブネットマスクを定義すると、以下のようになる:


●IPv4アドレスのCIDRと割り当てIP数、実利用可能なIPアドレス数の関係


CIDR 割り当てIPアドレス数 実利用可能IPアドレス数
/24 256 254
/25 128 126
/26 64 62
/27 32 30
/28 16 14
/29 8 6
/30 4 2

※ /31 以下は経路制御に特別な工夫が必要

5)ポート番号

IPアドレスは、装置と1対1の関係で割り当てる(1つの装置に複数のIPアドレスを割り当てる場合もある)が、1つの装置では、65536 個の窓口があり、同時に使用できる。これを「ポート(port)」という。
TCP/IPにおける、実際の通信では、IPアドレスとポート番号の組を指定することで行う。

1-06_11.gif


この仕組みにより、ひとつの装置が同時に不特定多数への接続が可能な構造になっている。
 同じ装置同士が複数の同時接続を行うことや、違う装置が、特定装置の特定ポートに同時に接続していても良い。
TCP/IPでは、同時接続数の制限は無い。
実際にはOSのつくりの良し悪しやアプリケーションソフトの出来具合が大きく左右する。
Webサーバやメールサーバは、特定のポートに接続が集中する。アクセスの多いWebサイトは、同時に 150 〜 200 の接続が常時ある。

5)プライベートIPアドレス・グローバルIPアドレスとNAT

これらも、IPv4アドレス不足対策で出てきた仕組みである。
実際のネットワーク利用において、組織内のメールサーバやWebサーバにアクセスするだけのマシンや、イントラネットのようにインターネットには一切接続せず、組織内部でのみ使用するマシンの絶対数が多いという現状から出てきた考え方である。

また、組織内部でのみ使用するマシンでは従来、適当にIPアドレスを振っていたが、地球規模のTCP/IPネットワークに接続することになった場合は、何らかの原因で誤って接続してしまった場合などに、同じIPアドレスが出現して、混乱をきたすことになる。
(具体的には重複IPアドレスがあると、経路選択が出来なくなり、該当IPアドレスのネットワークがダウンする)

このような混乱を避けるために、「組織の内部で、インターネットに接続しないのであれば、使用してもよろしい」というIPアドレスを規定した。これが「プライベートIPアドレス」である。

プライベートIPアドレスの規定は以下のとおり:

●IPv4アドレスのプライベートIPアドレス


割り当てIPアドレス 備考
10.0.0.0 〜 10.255.255.255 (クラスA)
172.16.0.0.〜 172.16.31.255 (クラスB)
192.168.0.0 〜 192.168.255.255 (クラスC)



プライベートIPアドレスを規定した時点で、たまたま空いていたIPアドレスを割り当てたので、アドレス自体に特別な意味は無いことに留意。
プライベートIPアドレス以外の全てのIPv4アドレスは、「グローバルIPアドレス」と言う。
また、プライベートIPアドレスを、インターネット上に絶対に流してはならない。
プライベートIPアドレスで構築したネットワークを、インターネットに接続するには、 プライベートIPアドレスとグローバルIPアドレスを相互変換するような仕組みを取り入れる必要がある。
これを実現するのがNAT(NAPT)と呼ばれる仕組みである。


1-06_12.gif


一般にNATと呼ばれるものは、正式にはNAPT(Network Address Port Translation) というものである。厳密には、

NATは、IPアドレスだけを変換するもの
NAPTは、IPアドレスに加えて、ポート番号も変換するもの

を指す。実用上は、NAPTの仕組みがないと、使い物にならない。
また、「IPマスカレード」と小難しく言う人や文献もあるが、NAPTと同義語である。
現在のUnix系OSやルータには、この機能が備わっており、理解しておく必要がある。

カテゴリー
エントリー
リンク
RSS配信