データ送信時の動作
| ネットワークの構成 ここでは、コンピュータがデータを送信するときにどのような判断、動作を行っているかについて見ていきたいと思います。 簡単のため、図のようなイーサネットネットワークを考えます。1台のルータによって、192.168.1.0/24 と 192.168.2.0/24 の2つのネットワークを接続しています。 192.168.1.0/24 のネットワークにはA、B2台のPCが 192.168.2.0/24 のネットワークにはCの1台がつながっています。ルータの各インタフェース、PCのIPアドレス、MACアドレス、デフォルトゲートウェイは次の通りとします。
※ルータは各インタフェース(ポート)ごとにMACアドレスをもち、IPアドレスを設定します。 また、各PCのデフォルトゲートウェイは通常、自分がつながっているルータのインタフェースのIPアドレスを設定します。 /24はサブネットマスクが先頭から24ビット「1」ということを示します。10進数では、255.255.255.0 ![]() |
| 同じネットワーク内の通信(直接ルーティング) このようなネットワーク構成で同じネットワーク内の通信、つまりA→Bの通信を考えてみましょう。 まず、Aは何をするかというと自分のIPアドレスと通信相手のIPアドレスが同じネットワークにあるかどうかということを判断します。そのために、IPアドレスとサブネットマスクの論理積(AND)をとって比較します。
同じネットワークであれば「直接通信」することができます。ネットワーク機器の解説のときにまた詳しく説明しますが、この直接通信ができる範囲のことを「ブロードキャストドメイン」と呼びます。これをそのまま日本語に直せばだいたい意味がわかるのですが、ブロードキャストが届く範囲でのみ直接通信を行うことができます。 これはなぜかというと、MACアドレスをもとめるためにARP(Address ResolutionProtocol)を使うのですが、このARPはブロードキャストを用いるからです。ARPについて詳しいことは今回は省略します。IPアドレスからMACアドレスを求めるためのものです。 ルータはブロードキャストを通しませんので、ブロードキャストを分割するネットワーク機器です。 なぜMACアドレスが必要になるか?これはイーサネットのフレームを作るためあて先のMACアドレスを指定する必要があるからです。 この例で通信相手が同じネットワークであると判断したコンピュータAは、ARPを行い、コンピュータBのIPアドレスからMACアドレスを求めます。そして、次のようなイーサネットフレームを作成し送信します。 ![]() あて先にコンピュータBのMACアドレス、送信元に自分(A)のMACアドレス、そしてタイプ部にはIPをしめす 0800(16進数) が入り、そのあとのIPヘッダには 192.168.1.1 から 192.168.1.2 へのデータという情報が入ります。IPヘッダには他にもさまざまな情報が入りますが、ここでは詳しく触れません。 このフレームを受け取ったBはあて先をみると、自分のMACアドレスが指定されているので、「これは自分あてのデータなんだな」と思って受信をするわけですね。 もし、このネットワークにDというほかのコンピュータが接続されている場合でも、フレームは届くのですがあて先のMACアドレスが違うので破棄するわけです。 またこのような同じネットワーク内での通信を「直接ルーティング」と呼ぶ場合もあります。 |
| 異なるネットワークへの通信(間接ルーティング) 次に、異なるネットワークへの通信、つまりコンピュータAからコンピュータCへの通信を考えてみます。 最初は同じです。自分のIPアドレス、通信相手のIPアドレス、そしてサブネットマスクを使って同じネットワークに通信相手がいるかどうかをまず判断します。IPアドレスとサブネットマスクの論理積(AND)をとるわけですね。
違うネットワーク、つまり違うブロードキャストドメインへの通信ということがわかります。ブロードキャストドメインが異なると、直接の通信は行うことができません。これは、イーサネットフレームのあて先MACアドレスを求めるためのARPが届かなくなってしまうからです。 じゃ、どうすればいいか? 誰かにあて先のネットワークに対するデータを中継してもらえばいいわけですね。この中継を行うものがデフォルトゲートウェイ(ルータ)になるわけです。 そうすると、自分と相手のIPアドレス、サブネットマスクから違うネットワークへの通信と判断したコンピュータAは、デフォルトゲートウェイにデータを送ってデータの中継をお願いするんですね。このとき、イーサネットのフレームは次のようになります。 ![]() あて先MACアドレスにルータのMACアドレスR1が入ります。ここがポイントですね。あとは送信元MACアドレスには自分のMACアドレスが入ります。そして、IPヘッダには 192.168.1.1 → 192.168.2.1 へのデータですよという情報が入ってきます。 デフォルトゲートウェイ(ルータ)は、この送られたフレームのIPヘッダの情報を見て、どこのネットワークにデータを中継すればいいのかということを選択していきます。これがルーティングと呼ばれている、ルータの大事な役割りです。 ルーティングについては、またあらためて詳しく説明をしていきます。ここでは、IPヘッダを見てるんだなぁぐらいに思っていてください。ルータがOSI第3層のネットワークの層で動作するネットワーク機器というのは、こういうことを指します。 IPヘッダの情報を見て、経路がわかりました。そうすると、今度はルータから目的のコンピュータに対するデータが送られるわけです。このときのイーサネットフレームを見てみると、あて先MACアドレスにコンピュータCのMACアドレス、そして送信元MACアドレスにルータのMACアドレスR2が入ってきます。MACアドレスの付け替えが起こっています。しかし、IPヘッダの情報は変わりません。 192.168.1.1 → 192.168.2.1 へのデータですよとなってます。 ![]() このMACアドレスの付け替えは、電車の乗り換えのようなものだと考えてください。イーサネットフレームは、IP以上の各階層のデータを運ぶための入れ物のようなものです。つまり、電車だと考えてください。 ぼくは東京の京王沿線に住んでいるのですが、東京駅に行くとき直接行くことができません。京王線は東京駅まで届いていませんので。そこで、いったん新宿に出ます。それからJRで東京駅に向かいます。新宿駅がデフォルトゲートウェイになるわけですね。新宿で目的の駅に行くための路線(ネットワーク)を選択して、電車を乗り換えます。これと同じようなイメージでMACアドレスの付け替えを考えてみるとわかりやすくなるかな?と思います。 このように、異なるネットワークへの通信が行われています。今の例ではルータが1台だけですが、何台かルータを経由するときも同じです。また、このようにルータを介してあて先のネットアークへ通信を行うことを「間接ルーティング」と呼びます。 |
| データ送信時の動作まとめ コンピュータが何かのデータを送信するときの動作は、次のようなフローチャートになります。 ![]() まず同じネットワークかどうか判断します。IPアドレスとサブネットマスクを使うんでしたね。 通信相手が同じネットワーク、つまり下のフローを先に見ていきましょう。イーサネットのフレームを作るために、通信相手のMACアドレスが必要になります。送信元のコンピュータがこれを知っているかどうかということになります。 知らなければ、それを知るためにARPを行います。このARPは、通信相手のIPアドレスからMACアドレスを求めるためのものでしたね。 無事に通信相手のMACアドレスがわかれば、イーサネットのフレームを作成しデータの送信を行うわけです。 次に通信相手が違うネットワーク、右側のフローを見ていきます。通信相手が違うネットワークにいるときは、直接データを送信することができません。デフォルトゲートウェイ(ルータ)にデータの中継をお願いしなくてはいけません。 これは、ルータによってブロードキャストが遮断されるためARPを使って通信相手のMACアドレスを求めることができないからです。 そこで、次にデフォルトゲートウェイ(ルータ)のMACアドレスをしっているかどうかです。もし知らなければ、ルータに対してARPを行いMACアドレスを求めていきます。ルータのMACアドレスがわかれば、それをもとにしてイーサネットのフレームを作成しデータの送信を行うわけですね。 送信するコンピュータがやるのはこれだけです。あとはルータが適切なネットワークにデータを中継してくれます。ただ、ルータの設定などが間違っていればデータは届かないですけどね。 ※ここまででお話してきた内容は、LAN環境の話です。一般の家庭でダイアルアップをしてインターネットに接続するときはこのようなことはしていません。ダイアルアップ接続でのときの詳しいことについては、また機会を見て説明していきますね。 |
(C) Copyright 2000 Gene All Right Reserved