満月 
 TOP > 講座 > ネットワーク講座 > ルータって何?



 

 ルータって何?

 ルータは、ネットワーク(例えばAさん宅やBさん宅といった単位)にて、そのデータの出入り口に位置し、データをネットワーク内外へ配送する機能を提供している機器です。同一ネットワーク内の他機器を代表してグローバルIPを名乗り、インターネットの世界に面と向かい合っている機器ということになります。
 そういう機器が通信経路を網の目のように伸ばし、つながってインターネットを構築しています。

網の目

 さて、話を戻します。Bさん宅のパソコンからAさん宅のパソコンにどうやってデータを送るかでしたね。
 実は、前もってあることをしてないとデータは送れません。
 一つはAさん宅のルータに「○番ポートにデータが着いたら、パソコンAに送る」という設定をするということです。
 ここで初めて「ポート」という言葉がでてきましたが、ポートはIPアドレスの付いた機器に論理的設けられた通信窓口のことで、0〜65535の番号で表します。
 IPアドレスの補助アドレスと考えるとよいかも知れません。通常、機器上で動作しているアプリケーションに一つないし複数のポートが割り当てられ、その結果、複数のアプリケーションが同時に通信を使うということを可能にしています。
 ルータの場合、このポートを利用して、自分の配下にある複数の機器の通信を実現しています。前述の通り、「○番ポートにデータが着いたら、パソコンAに送る」という設定をすることで実現できます。
 このルータの機能をIPマスカレードまたは、NAPT(Network Address and Port Translation)といいます。

 もう一つ事前に必要なことがあります。BさんがAさん宅のグローバルIPアドレスと、Aさん宅のパソコンAに対応するポートを知っておくということです。

 では、実際にデータがどのように運ばれていくか見ていきましょう。


 まずBさん宅のパソコンから出発したデータは、Bさん宅のルータに到着します。
 これはBさん宅のパソコンに経路情報(ルーティングテーブル)というものがあり、Aさん宅のIPアドレスを指定してデータを送り出した場合、データをルータへ送るように設定されているためです。
 では、そのBさん宅パソコンのルーティングテーブルを見てみましょう。

ルーティングテーブル

 データを送る際にこの表を行単位でチェックされます。「ネットワーク宛先」を「ネットマスク」でマスクして算出されるアドレスと、送り先IPアドレスを「ネットマスク」でマスクして算出されるIPアドレスが一致した場合、その行の「ゲートウェイ」へデータを送る、という書式になっています。
 いきなり"「ネットマスク」でマスク"と言われてもわかりませんね。「ネットマスク」とはその名の通り、何かを覆い隠す「マスク」をイメージしていただければいいです。そして、IPアドレスって何?で書きましたが、IPアドレスは4つの数字1つ1つが8ビット、つまり0か1かの情報が8つ集まってできているということも思い出してください。ここで、Aさん宅のIPアドレスを「255.255.255.0」でマスクしてみましょう。

ネットマスク


 「123.45.67.0」というのがマスクした結果のアドレスです。ネットマスクのビットが1の部分はマスクをかける対象アドレスのビットがそのまま見え、ネットマスクのビットが0の部分は強制的に0になるようなイメージです。
 このようにアドレスをチェックした結果、テーブル上の一行が選択され、データの送出さきとなる「ゲートウェイ」が決定します。
 しかし、計算すればわかりますが、どんなアドレスでも0.0.0.0の行と一致します。実は0.0.0.0は特別で、その他に一致するものがない場合は採用する、という特別ルールがあります。Aさん宅のIPアドレスは0.0.0.0にのみマッチするので、そのルールに当てはまり、0.0.0.0の行が採用されます。
 結果、Gatewayは 192.168.0.1となり、ルータへ送られることになります。(この0.0.0.0に対応するGatewayをデフォルトゲートウェイといいます。)


 こうしてルータに到着したデータは、今度はルータに自身に設定されている経路情報に従って、次のところへ送られます。大抵の場合、どこか別のルータになります。このようにどんどん経路を伝わっていき最終的にAさん宅のルータに到着します。

 ここでようやく「ポート」の出番です。Aさん宅のルータは到着したデータのポート番号からパソコンAへ送るべきデータと判断し、パソコンAへデータを送ります。これは前述の「○番ポートにデータが着いたら、パソコンAに送る」という事前準備のおかげです。

 さて、ここでたとえばAさんからBさんへ返信をしたい場合、どうすればよいでしょうか。大きく二通りの方法があります。

1.Bさん宅からAさん宅にデータを送った方法とまったく同じ方法でAさん宅からBさん宅へ送る方法
2.Bさん宅からAさん宅に送られたデータの経路をそのまま維持し、Aさん宅からBさん宅へ送る方法

 前者の説明は不要ですね。これまで説明してきた内容です。
 では後者、経路をそのまま維持し送る方法について説明します。


 BさんからAさんに届いたデータには実は送信元情報としてBさん宅ルータのIPアドレスとデータが送られたポート番号が入っています。
 そこでAさん宅のパソコンは、このIPアドレスとポート番号を送り先にしてデータを送り出します。送り出されたデータはこれまでの説明の通り、どんどん経路を伝わっていき最終的にBさん宅のルータに届くことになります。
 あとはルータからパソコンへデータを送ればよいのですが、パソコン宛であるという情報はデータにはありません。
 では、どうやって送られるのでしょうか?

 実は、この返信の元となった通信、つまりBさん宅パソコンからAさんへデータを送ったときに、Bさん宅のルータには返信を受けるための準備として、ポートとパソコンを結びつける情報が記憶されます。
 返信は、この記憶したポートに届くことになり、パソコンに宛てであると判断され、Bさん宅のパソコンに届くことになります。
 (記憶された経路は通信終了を明示する、または、タイムアウトによって削除されます。)


 ここまでの送信〜受信〜返信〜受信を図にしました。整理してみてください。
 まずは送信〜受信です。


送信〜受信

 そして、返信〜受信です。

返信〜受信



 一点、重要なことをいい忘れていました。今回の場合、通信が始まるきっかけは何だったでしょうか。受信でしょうか?送信でしょうか?そう、送信です。受信から始まる通信というのはありえません。
 送信はいつでも好きなときにできるということになります。しかし、受信に関してはそうはいきません。いつ受信できるかは分からないからです。
 ではどうしているかというと、送信側と取り決めたポートにデータが到着するのを「ずっと待つ」、ということをしています。このような取り決めをプロトコルといいます。
 次はこのプロトコルについて説明しましょう。>>プロトコルって何?


 TOP
 Copyright (c) 2013 Studio Four Dimension. All Rights Reserved.