ルータの役割とIPネットワークの仕組み:ルータの仕組みを学ぼう(1)
ルータはネットワーク構築に欠かせない機器だ。いま話題のブロードバンドルータで、ルータとIPネットワークの基本的な仕組みを理解しよう。
ADSLやCATVユーザーの伸びに比例して現在人気急上昇中の「ブロードバンドルータ」だが、果たしてその仕組みや役割について、どれだけ知っているだろうか? いったい、ブロードバンドルータと一般に「ルータ」と呼ばれる機器とはどこが違うのか? また、ADSLやCATV環境にブロードバンドルータを導入すると、どんないいことがあるのか? そして、タイトルにもある、ネットワークの「ルーティング」とは何だろう?
え? よく分からないって? いやいや、ご心配なく。この連載は、そんなあなたのためにこそ始めるのだから。これから全3回にわたり、ブロードバンドルータとルーティングの秘密を解説していこう。
“ブロードバンドルータ”って何だろう?
「ブロードバンドルータ」とは、そもそも技術的に確立した言葉ではない。少し定義が必要だ。もともと、「ルータ」とはネットワーク環境の構築に必要なハードウェアだということは、多くの方がご存じだろう。ADSLやCATVのネットワーク接続のような従来のダイヤルアップ接続やISDNと比較して広帯域、すなわち「“ブロードバンド”環境に対応したルータ機器」という意味だ。これに対して、ダイヤルアップ接続やISDNは「ナローバンド」、つまり低帯域通信と呼ばれるようになってしまった。
これで2つのことが分かるだろう。つまり、ブロードバンドルータ(Broadband Router)とは、
- ブロードバンド環境に適した
- ルータ機器
だということだ。意味が分かるようで、分かりにくい。
通常、「ルータ」とは、「ネットワークのルーティング(道案内)」を行う機器のことだ。つまり、複数のPCやサーバのつながったネットワーク、例えばインターネットやイントラネット同士をつなぎ、通信を成り立たせる(中継する)ための機器なのだ。こうした通信を成り立たせる仕組みを「ルーティング」と呼ぶ。このルーティングを手助けするのが「ルータ」である。いうなれば、ネットワークの「交通整理役」だ。
このルーティングという作業は、実際にはルータでなければ行えないものではない。NIC(ネットワーク・インターフェイス・カード)を複数枚装備したPCやUNIXマシンでも、標準機能で容易に実現できる。
このように、ネットワークに接続できる機器であれば当然備えている機能なのだが、「ルータ」がこれらと異なるのは、「ルーティングの機能を提供する専用の機器」であるという点だ(もちろん、PCなどではOSによる制限で一部機能が欠けていたりすることもあるが)。
通信を行う際には、「どのような通信手順を用いるのか」という前提がある。これが「プロトコル」だ。一般に、インターネットで使用されているプロトコルは皆さんがご存じのように「TCP/IP」、または「UDP/IP」である。ルータはこれらのプロトコルを理解しつつ、交通整理を行うのだ。
では、一方の「ブロードバンド環境に適した」とは何のことだろうか? もちろん、これはADSLやCATV回線でのインターネット接続に対応しているという意味である。“ブロードバンド(広帯域)”に対応するのは当然なのだが、実際には、もう1つの意味が込められている。それは「常時接続に適している」ということだ。
常時接続であるということは、インターネットに四六時中接続しているということになる。その状態で最も気を付けるべきことは、「セキュリティ」だ。不正侵入やアタックに対して、何らかの対策がなされていなければならない。ブロードバンドルータは、そのための“手ごろ”な機能を“手軽”に提供する機能を付加している。
実はこうした機能は、一般のルータにも共通した部分である。何もブロードバンドルータだけが特別なわけではなく、その延長線上にあると考えて問題ない。つまりブロードバンドルータを理解することは、すなわち「ルータ」についても理解することにほかならない。違いを挙げるとすれば、ブロードバンドルータではその実装が少し異なっていることだ。ブロードバンドルータでは、簡素化した機能を搭載している場合が多い。
「ブロードバンドルータ」と「ルータ」。その違いを理解したときに、初めてネットワークが隅々まで見渡せた気分になるだろう。まずは、ルータの基礎となる「ルーティング」について、具体的にどのような機能なのかを解説していこう。
「ルーティング」とは受け渡すこと
ネットワーク通信とは、詰まるところあるマシン上のアプリケーションともう一方のマシンのアプリケーション間の通信でしかない。1対1の通信ということだ。これを「ピア・ツー・ピア」(Peer-To-Peer)と呼ぶ。
例えば、WebブラウザでWebサーバへ接続してHTMLファイルを取得したり、メーラがメールサーバへログインしてメールをダウンロードするのも、ある特定のアプリケーションによるマシン間の通信でしかないのだ。もっとも、プロトコルによって例外もあるのだが、インターネットで用いられる「TCP/IP」や「UDP/IP」による通信は、ほとんどの場合ピア・ツー・ピアによるものだと思ってよい。
これは、インターネットの標準プロトコルとして使用されている「イーサネット」「IP」「TCP」「UDP」などの関係を示した模式図だ。プロトコルのレイヤ(階層)構造を示しているため、「プロトコル・スタック」とも呼ばれる*1。ネットワークモデルは、通常、このような階層構造によって説明されることが多い。
少し分かりにくいかもしれないが、階層とは、それぞれが別のプログラムによって処理されることと考えてよい。例えば、上位の階層のプログラムから下位の階層のプログラムへデータ送信が依頼され、渡されたデータに必要な処理が施された後、さらにその下位の階層へデータが渡されて送信が行われる……という動作だ。そして、受信したデータはより上位の階層のプログラムへと転送され、最終的に必要としているユーザーアプリケーションが受け取る。各階層で処理を行うプログラムは、多くの場合OSの一機能として実装されているので、ユーザーが意識することはほとんどないだろう。
また、上の階層であればあるほど通信できる範囲が広くなるという特徴もある。最上位の「アプリケーション」層では、通信先マシンの対象アプリケーションと直接通信を行うことになる。ところが、最下位の物理層では、単に最も近くのネットワーク機器(ハブやルータなど)と通信を行っているにすぎない。それより先のマシンとの通信を制御しているのは、物理層より上位の階層なのである。つまり、こうした小さな通信が取りまとまって、アプリケーション間の通信を実現しているのだ。
ルーティングとは、こうした「小さな通信」を橋渡しして、より大きな通信を実現する機能だと考えよう。
*1図1の階層図はTCP/IPモデルを示す現実的なモデルの1つだが、これとは別にISOが制定した「OSI参照モデル」と呼ばれる7階層からなる階層モデルがある。OSI参照モデルは、図1のモデルより規格化されたものであり、異なる部分もあるが、考え方はほぼ共通している
IPネットワークの通信の仕組み
インターネットでのピア・ツー・ピア通信の根幹となるのは、「IP」というプロトコルである。図1ではインターネット層に位置する。IPの目的は、「あるマシンからあるマシンへのデータの一方向伝達」である。
ネットワークの世界では、マシン(端末)やネットワーク機器などの通信を行う拠点の最小単位を「ノード」と呼ぶが、通信したい相手ノードを特定するには、何らかの番号やIDを個別に付けておくのが望ましい。これが「IPアドレス」だ。IPアドレスは4bytesからなる数値で、実際には2進数(ビット列)として使用されているが、分かりやすいように1bytesごとに10進数に変換して、「.」(ピリオド)で区切って表記される。
IPアドレスは全世界でユニークでなければならないという決まりがあり、それによって、通信先および通信元ノードがそれぞれ特定される。いかにネットワーク環境が複雑だろうと、確実に一方から他方へデータが到達することを保証するのである。このようにIPを基にしたピア・ツー・ピアの通信網を、ここでは「IPネットワーク」と総称しよう。
IPネットワークでは、データは「パケット」と呼ばれる小さなデータの固まりに格納される。バケットは、送信元IPアドレス、送信先IPアドレスなど、IPネットワークに必要なヘッダ情報とともに、実際に送りたいデータを内部に含んでいる。この格納されたデータとは、実は次に説明するより上位階層のデータのことである。
パケットの最大サイズはあらかじめ決められている。送信すべきデータがこれより大きい場合はいくつかのパケットに分割し、それぞれ個別に相手に届けられ、再び結合される。IPパケットはさまざまな経路をたどり目的のノードへと届けられ、受け取り先のノードが宛先IPアドレスから自身が受け取るべきパケットだと判断、上位階層やアプリケーションへと格納されたデータを引き渡す。
TCPは双方向、UDPは片方向
TCPとUDPはトランスポート層に位置し、アプリケーションレベルの通信を実現する。通信の際には、それぞれにおいて上位層でのアプリケーションの種類を特定する「ポート番号」が用いられ、1〜65535の範囲で指定できる。
ネットワークを使用するプログラムは、必ずこのポート番号を利用する。これは、サーバ/クライアントといったノードの種類を問わない。例えば、SMTPサーバは通常25番を使用するし、HTTPサーバは80番だ。同時に、これらのサーバに接続するクライアント側のアプリケーションでも、実はポート番号が割り振られている。そうしなければ、要求元アプリケーションが見分けられないからだ。
サーバの場合は、クライアントからのアクセス時にポートを指定する必要があるため、25や80のように一般的な固定化された番号を定義している。これは「Well-Knownポート」と呼ばれる。逆に、クライアント側のポートは何でもよいため、通常はOSが使用されていないポートから自動的に決定する。
TCPにおける大きな役割は、「データの確実な送信の保証」だ。TCPでは、どれだけの大きさのデータがいくつ届いたのかを送信元へ報告するため、必ず返答のパケットを返さなければならない。つまり、常に往復のパケットが1セット発生することで、送信元が相手に確実にデータが届いているかを確認できるわけだ。これが、「TCP通信では信頼性がある」といわれるゆえんである。もしこの返答がなかったり失敗が分かれば、再度同じデータの送信が行われる。
一方のUDPでは、この返答は行われない。その代わり、返答を確認する必要がないため、スループットはTCPに比べて高くなる*2。
いずれの場合も、IP上(IPの上位層)で動作していることに気を付けよう。TCPもUDPも、やはりパケットというフォーマットを取っている。ヘッダには送信元ポートと送信先ポートが記述され、内部にはアプリケーションのためのデータが格納される。そして、このTCP/UDPのパケットは、IPパケットに“データ”として格納されることになる。このように、IPネットワークを前提にしてTCPやUDPの動作が実現されているのだ。
言い換えれば、IPネットワークはあるマシンからあるマシンまでの片方向の通信のみを行う。TCPではこれを利用して、ポート番号の意味を付加し、アプリケーション間通信と信頼性確保のための往復通信を実現しているのだ。
*2ここでいう「返答」とは、プロトコルの要請として返答パケットが発生することを示している。例えば、アプリケーションの要求として「リクエスト」に対して「レスポンス」を行うかもしれない。この場合は、アプリケーションに起因する「返答」パケットが、(UDPかもしれないが)発生する可能性がある。だが、この両者のバケットの意味は異なっていることに注意しよう
今回のポイント
(1) ブロードバンドルータは、常時接続環境向けに特化/調整された手軽なルータ機能を提供する
(2) ルーティングとは、小さな通信をつなぎ合わせてより広い通信を実現するための橋渡しのことである
(3) IPはノード(マシン間)の通信を、TCPとUDPはアプリケーション間の通信を、それぞれ実現する
【お詫びと訂正】
文中の「TCPは双方向、UDPは片方向」の見出しで始まるセクションの1段落目「上位層でのアプリケーションの種類を特定するポート番号が用いられ、1〜65565の範囲で指定できる」となっていましたが、ポート番号の範囲は「1〜65535」の誤りでした。ここに訂正させていただき、ご迷惑をおかけした読者の方々にお詫びさせていただきます
(2001/8/7)
Copyright © ITmedia, Inc. All Rights Reserved.