データ送信時の動作

ネットワークの構成

ここでは、コンピュータがデータを送信するときにどのような判断、動作を行っているかについて見ていきたいと思います。
簡単のため、図のようなイーサネットネットワークを考えます。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アドレス、デフォルトゲートウェイは次の通りとします。








































IPアドレス MACアドレス デフォルトGW
ルータ 192.168.1.254/24 R1
192.168.2.254/24 R2
A 192.168.1.1/24 A 192.168.1.254
B 192.168.1.2/24 B 192.168.1.254
C 192.168.2.1/24 C 192.168.2.254

※ルータは各インタフェース(ポート)ごとにMACアドレスをもち、IPアドレスを設定します。また、各PCのデフォルトゲートウェイは通常、自分がつながっているルータのインタフェースのIPアドレスを設定します。
/24はサブネットマスクが先頭から24ビット「1」ということを示します。10進数では、255.255.255.0

同じネットワーク内の通信(直接ルーティング)

このようなネットワーク構成で同じネットワーク内の通信、つまりA→Bの通信を考えてみましょう。
まず、Aは何をするかというと自分のIPアドレスと通信相手のIPアドレスが同じネットワークにあるかどうかということを判断します。そのために、IPアドレスとサブネットマスクの論理積(AND)をとって比較します。


































192. 168. 1. 1 192. 168. 1. 2
11000000.10101000.00000001.00000001 11000000.10101000.00000001.00000010
11111111.11111111.11111111.00000000 11111111.11111111.11111111.00000000
論理積 論理積
11000000.10101000.00000001.00000000 11000000.10101000.00000001.00000000

同じネットワークであれば「直接通信」することができます。ネットワーク機器の解説のときにまた詳しく説明しますが、この直接通信ができる範囲のことを「ブロードキャストドメイン」と呼びます。これをそのまま日本語に直せばだいたい意味がわかるのですが、ブロードキャストが届く範囲でのみ直接通信を行うことができます。
これはなぜかというと、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)をとるわけですね。


































192. 168. 1. 1 192. 168. 2. 1
11000000.10101000.00000001.00000001 11000000.10101000.00000010.00000001
11111111.11111111.11111111.00000000 11111111.11111111.11111111.00000000
論理積 論理積
11000000.10101000.00000001.00000000 11000000.10101000.00000010.00000000

違うネットワーク、つまり違うブロードキャストドメインへの通信ということがわかります。ブロードキャストドメインが異なると、直接の通信は行うことができません。これは、イーサネットフレームのあて先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環境の話です。一般の家庭でダイアルアップをしてインターネットに接続するときはこのようなことはしていません。ダイアルアップ接続でのときの詳しいことについては、また機会を見て説明していきますね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA