ネットワーク 1

インターネットの簡単な原理

インターネット上のデータはバケツリレー方式で送られてゆきます。
インターネットにおいてデータを送る原理は、郵便(の小包)と似ています。
あるコンピュータから荷物(データ)を送る時には、 そのデータに送り先の住所(IPアドレス)をつけて小包(パケット)にして送りつけます。 送られたデータは、様々なコンピュータを通って目的のコンピュータまで送られます。
ただし、この場合の宛名(IPアドレス)はコンピュータにわかりやすいように 数字の並んだものになっているので、通常は人間にわかりやすいような違う形の宛名の書き方が使用されます。
これらの人間にわかりやすい宛名から、IPアドレスに変換するための仕組みがDNSと呼ばれます。

インターネットの歴史

インターネットはDOD(米国国防総省)のARPA(高等研究計画局)というところで、 ARPAnetという名前で生まれました。 開発の動機は、核攻撃を受けても大丈夫な分散型のネットワークを作ることだったといわれます。
その後、大学の間に研究用のネットワークとして広がってゆきました。
日本でも84年にJUNET(Japan Unix NETwork)が開始されて インターネットへの接続が開始された。 最初はUUCP接続から始まったが、88年にWIDE(Widely Integrated Distribution Network)によってIP接続による実験が開始されました。
最初は、大学などの研究用ネットワークの性格が強かったものが、 ネットワークが広がるにつれて商用としても使用されるようになってきました。
90年代に入ってMosaicなどのWWWのためのソフトウェアが出現したことと、 米国で発表された「情報スーパーハイウェイ計画」などによって爆発的な広がりを見せるようになります。

簡単な年表

    1969
    ARPAnet 始まる
    1979
    ARPAnet をモデルに大学間の接続始まる
    1984
    JUNET(日本) 始まる
    1986
    NSFnet 始まる
    1988
    WIDE(日本) 始まる
    1991
    情報スーパーハイウェイ計画
    1993
    Mosaic 発表
    1994
    Netscape 発表

RFCとは

RFC(Request For Comments)とは、インターネット上のプロトコルや運営方法、提案、アイデアなどの技術情報を公開するための文書のことです。
RFCに強制力はありませんが、インターネットではRFCで決まったものが事実上の標準となります。

RFCの文書はRFCの後に番号をつけて表されます。
例えば、RFC822という文書は822番のRFCで、電子メールについての規約が書かれています。
RFCは下記のIETFによって定められいます。

IETF

IETF(The Internet Engineering Task Force)とはインターネットの標準化のためのボランティア団体です。
法人などの実態のある団体ではなくRFCなどを定める活動だけの存在です。
入会できるのは個人単位(法人は不可)で、メーリングリストに加入するか、ミーティングに参加するだけで誰でも入会できます。
IETFによって定められるインターネットの標準は会員からの提案を経て、討議された後、標準として発表されます。 そして、これらの過程・結果はすべて公開されています。

IPアドレスとは (IPv4)

インターネットにおいて、接続しているノード(普通はパソコンなどのコンピュータ)を識別するためには IP(Internet Protocol)アドレスが使用されます。
IPアドレスは、4byte( = 32bit) の整数値で表されます。
ですから、理論的には2の32乗で4294967296台のコンピュータが接続できます。 (実際は特別な用途に使用するアドレスがあったりして、これよりはかなり少なくなります)
IPアドレスを表現する時には、慣習的に4byteを1byteづつ区切って、各数字をピリオドでつなげて表します。

IPアドレスの例

IPアドレスの付け方

インターネットはLANを接続したネットワークです。
それぞれの接続されたLANには、何台かのコンピュータが接続されていますが、 それらのコンピュータに一つ一つ違うIPアドレスをつけてゆかなくてはなりません。 しかし、どこかの一つの組織で、全世界のすべてのコンピュータにIPアドレスを与えていったのでは大変なので、 通常は一つのLANに対して、ある範囲のアドレスを与えて、後はLANの管理者に勝手に割り振ってもらいます。
例えば、ある会社か学校のLANに対して
172.16.65.0 から 172.16.65.255
までの範囲でアドレスをつけるようにしてもらって、後はその範囲でLANの中のコンピュータに アドレスを割り振ってもらいます。
ただし最期の数字が0と255は特別な用途に使用するので 172.16.65.1 , 172.16.65.2 , ... , 172.16.65.254 の254個のアドレスを各マシンに割り当てることができます。

ネットワークとホスト

IPアドレスはネットワークとホストを表す部分に分かれます。
こうしておくと、目的のアドレスまでのデータが転送がやりやすくなります。
まず、ネットワーク部だけを見て、そのネットワークまでデータを転送し、 データがそのネットワークまで達したらホスト部を見て目的のノードに転送します。
ネットワーク部(IPアドレスの前半部分)はあるまとまった範囲のノード全体を表す部分、 ホスト部(IPアドレスの後半部分)が各ノードを表す部分になります。
IPアドレスの、どこまでがネットワーク部かを表すためには、ネットマスクを使用します。

IPアドレスのクラス

上のようにネットワークとホストの部分に分けるために、以下の5つのクラスが使用されます。
ただし、IPアドレス(IPv4)が不足しているので、現在はもっと細かい分け方(クラスレス)が使用されることがあります。

クラスA
上1bitが0、下 31 bit 分を割り当てる
0.0.0.0 〜 127.255.255.255
ネットマスクは255.0.0.0
クラスB
上2bitが10、下 30 bit 分を割り当てる
128.0.0.0〜191.255.255.255
ネットマスクは255.255.0.0
クラスC
上3bitが110、下 29 bit 分を割り当てる
192.0.0.0〜223.255.255.255
ネットマスクは255.255.255.0
クラスD
上4bitが1110、下 28 bit 分を割り当てる
224.0.0.0〜239.255.255.255
クラスDは、マルチキャスト通信で使われる特別なIPアドレスです。 例えば、音声・映像データを多くのノードにいっせいに放送するような用途で使われます。
クラスE
上4bitが1111、下 28 bit 分を割り当てる
240.0.0.0〜255.255.255.255
ただし、クラスEは、実験的な目的のためのものなので、実際に使われることはありません。

ネットマスクとは、ネットワーク部とホスト部を分けるために使用されるマスク値です。

クラスレスの例

  1. IPアドレスが 192.168.133.12で、先頭から28bitがネットワークを表すとします。
    これを192.168.133.12/28などと表します。
  2. 192.168.133.12を2進数で表すと
    11000000101010001000101000001100
  3. このうち先頭から28bit(ネットワーク部)は
    1100000010101000100010100000 (2進数)
    192.168.133.0
  4. 残り4bitが、そのネットワークに属するノードのアドレスになります。
    1100 (2進数)
    12
  5. ネットマスクは先頭から28bitを1、残りを0にした数値で表します。
    11111111111111111111111111110000
    10進法に変換して
    255.255.255.240

特別なIPアドレス

以下のアドレスは、ノードのアドレスには使用しません。

127.0.0.1
ループバックと呼ばれ、自分自身を表します。
ネットワーク全体を表すアドレス
ホスト部がすべて0のアドレスはそのネットワーク全体を表します。
クラスCの場合、172.23.16.0など。
ブロードキャストアドレス
ホスト部がすべて1のアドレスはネットワークに接続されたすべてのノードに通信をするために使用されます。
クラスCの場合、172.23.16.255など。

また、以下のアドレスはプライベートアドレスと言って、 インターネットに直接接続されたノードには使用しないで、 インターネットから切り離されたLANのアドレスに使用されます。

クラス アドレスの範囲 ネットマスク
A 10.0.0.0 〜 10.255.255.255 255.0.0.0
B 172.16.0.0 〜 172.31.255.255 255.255.0.0
C 192.168.0.0 〜 192.168.255.255 255.255.255.0

プライベートアドレスを割り当てられたノードは、 ルータを経由してインターネットに接続することができます。
その際にNATやIPマスカレードなどが使用されます。

IPアドレスの将来

上で述べたようにIPアドレスは4byteの整数値なので、約40億台のコンピュータが接続できる 計算になりますが、もし世界中の人(約45億人)が一台づつコンピュータを持って、 そのすべてがインターネットに接続したとしたら、アドレスの数が足りなくなってしまいます。
それだけでなく、これからはあらゆる電器製品の中に組み込まれているコンピュータも インターネットに接続されてゆく可能性があるので余計に不足が進んでゆくでしょう。
現在はさまざまな工夫(プライベートアドレスなど)によってアドレスの不足を補っていますが、 今のままでインターネットが拡大し続けるとこのようにアドレスが不足してくるので、 今の4byteをもっと大きな数値(16byte = 128bit)にしようという計画 ( IPv6 ) が進んでいます。

TCP/IP

インターネット・LANなどでは、TCP/IPというしくみ(プロトコル)を利用してデータを相手に送るようになっています。
TCP/IPによって行なわれる作業は、UINX・WindowsなどではOSのカーネルが担当しています。
TCP/IPによって行なわれる作業は、以下の通りです。

データが相手に届くまで(TCP/IP)

メールやWebのデータが、相手のコンピュータまでどのようにして届くか概略を以下に述べてみましょう。

  1. 送り先のIPアドレスをDNSによって調べます。
  2. 送るデータをいくつかのパケットに分解します。(TCP)
  3. それぞれのパケットにヘッダーをつけます。(TCP)
    主なヘッダーの内容は以下のものがあります。
  4. さらにパケットにヘッダーをつけます。(IP)
  5. LANであればLANケーブルの中、インターネットであればルータからルータへパケットが送られてゆきます。
    ルータというコンピュータによって、次にどちらの道へパケットを送れば良いかが決められてゆきます。
  6. パケットが送り先のホストに届きます。
  7. 送り先のホストは、来たデータが自分宛のものかどうか調べます。
    そうでなければそのデータは捨てられます。
  8. 上の4でつけたヘッダーをとります。(IP)
  9. もし待っていても届かないパケットがある場合は、送り手にもう一度パケットを送ってくれるように頼みます。(TCP)
  10. データが全部そろったらパケットを番号順に組み立てます。(TCP)
  11. ポート番号のポートにデータを送ります。(TCP)

プログラム例

以下の、client.pyとserver.pyを別々のターミナルで起動し、 client.pyを起動したターミナルでキー入力すると、server.pyのターミナルにその文字が表示されます。
Enterのみの入力で、両方のプロセスが終了します。

参考

IPv4
RFC760, RFC791
IPv6
RFC1883
  • InterNIC
    RFCの原文
  • RFCJ
    RFCの日本語版

  • Next
    index | home
    abetmhr@gmail.com