- ベストアンサー
異なるネットワークアドレスについて
例えば以下のような構成を考えます。 PC-----ルーター-----インターネット PCのIPアドレス 192.168.0.100 PCのMACアドレス AAA(簡単に) ルータのIPアドレス 192.168.0.1 ルータのMACアドレス BBB(簡単に) ここでPCから100.100.100.100というIPアドレスに ping通信をしたとします(別にhttpdでもftpでもいいです。)そして応答が返ってきた場合の応答パケット内の送信先、送信元のIPとMACは以下のようになっています。 送信先IP 192.168.0.100(PCの) 送信先MAC AAA(PCの) 送信元IP 100.100.100.100(ping対象の) 送信元MAC BBB(ルーターの) 上記では送信先IPと送信元IPのネットワークアドレスは異なります。ネットワークアドレスが異なれば通信はできないはずです。具体的にはネットワークアドレスの異なるパケットを受信した場合はPCは破棄するはずです。しかし実際には上記のような場合でもpingは通ります。 これはどういうしくみ(決まり)で動作しているのでしょうか? ご教授よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
ネットワークの知識があれば特に疑問には思わないのですけどね(^^; ※CCNAやテクニカルエンジニア(ネットワーク)の受験勉強をすれば納得できます。 >ネットワークアドレスが異なれば通信はできないはずです。 異なるネットワーク間で通信するための装置がルータやL3スイッチです。 ルータがあれば異なるネットワーク間でもIPによる通信(レイヤ3)が可能になるため、送信元と送信先のIPアドレスが異なるネットワークアドレスになっても問題ありません。 ただしMACアドレスによる通信(レイヤ2)は同一の物理セグメント内でしか通信は出来ません。よって送信先と送信元のMACアドレスは同一物理セグメント内の機器のアドレスになります。 通信の概念(レイヤー)を一度考えてみましょう。 IPパケット=荷物 MACフレーム=トラック となります。 トラック(MACフレーム)は荷物(IPパケット)を最寄の集荷センター(ルータ)まで運び、そこから先は別のトラックが運びます。 ですからトラックは最寄の集荷センターの場所だけを知っていれば良く、そこから先には関与しません。 荷物(IPパケット)については最終的な目的地をしっかり明記しておかないと届きません。 念のため下記PC1からPC2にIPパケットを送信する場合の流れについて説明しておきます。 [PC1]---A[ルータ]B---[PC2] PC1 :192.168.1.10/AAA ルータ(A):192.168.1.1/BBB ルータ(B):192.168.2.1/YYY PC2 :192.168.2.10/ZZZ ※ルータ(A)と(B)はルータの各ポートを表します。 ※「/」の右側はMACアドレスです。 1.PC1からPC2(192.168.2.10)にパケットを送信しようとするが、同一ネットワークでないためデフォルトゲートウェイとなっているルータ(A)のアドレス(192.168.1.1)に対してIPパケットを流そうとする。 2.PC1はルータ(A)のMACアドレス(BBB)を調べ、そのMACアドレスに対してMACフレームを転送する。(MACフレーム内にIPパケットが格納されている) 3.ルータ(A)は受け取ったMACフレームを分解してIPパケットを取り出す。IPパケットの宛先(192.168.2.10)がルータ(B)と同一ネットワーク内にあるため、192.168.2.10(PC2)のMACアドレスを調べる。 4.PC2のMACアドレス(ZZZ)が判明したら、そのMACアドレスに対してMACフレームを転送する。(MACフレーム内にIPパケットが格納されている) 5.PC2は受け取ったMACフレームを分解してIPパケットを取り出す。IPパケットの宛先が自分のIPアドレスであるため、そのままIPパケットを受け取る。 ※ここで言う「MACフレーム」とは、厳密には「イーサネットフレーム」のことです。
その他の回答 (6)
- neumann
- ベストアンサー率39% (900/2303)
>パケット内の送信先と送信元のネットワークアドレスが異なる場合はPC側でそのパケットを「破棄」すると思っておりましたが、 PCはパケットの宛先を見て自分のアドレスだった場合は受け取り、そうでなければ破棄します。 パケット受信の際には送信元のアドレスは関係ありませんよ(^^;
お礼
2回もご回答いただきましてありがとうございました。 非常に参考になりました。
No3の方の説明に補足です よく「ネットワークアドレスが異なれば通信はできない」と言うのはレイヤ2の話です。単なるHUBだけでネットワークを構成している場合はまさにこの通りです。 これではインターネットのサーバと通信できないので、そこでルータが出てきます。 PCにIPアドレスを設定したときデフォルトゲートウェイを設定したと思うのですが、あれはネットワークアドレスが異なる場合のパケットの投げ先になります(No3は問い合わせと表現しましたが、実際は無条件に投げています) ルータ(たぶん家庭用ルータ)にもデフォルトゲートウェイがあり(DHCPで自動設定)無条件にプロバイダのルータに投げます。 プロバイダにある数千万円以上のルータはデフォルトゲートウェイを持たず、世界中の一つ一つのネットワークアドレスを全て記憶しているので目的地に近いルータに投げます。後は同じ要領でバケツリレーを行い目的地まで届けます。 実際にはその他にもNo3が書いているようにレイヤ2でのMACアドレス、NAPTによるアドレス変換など多様な技術が使われています。
お礼
詳しいご回答どうもありがとうございます。 ルーターの動きは皆様の回答で頭の整理ができました。 一つ疑問が残ってます。 ルーターというよりはPCの話になりますが、 これまでの私の認識では、PCがパケットを受信した時、パケット内のの送信先と送信元のネットワークアドレスが異なる場合はPC側でそのパケットを「破棄」すると思っておりましたが、そういうわけではないんですよね?
すでに皆様の御回答にもありますが,ネットワークプロトコルが階層型になっているために,このようなことになっていると言えます. この階層構造はOSI参照モデルの類似ですので,細かいことはそちらを勉強されるとよいと思います. インターネットでは,下から,物理層,データリンク層,ネットワーク層,トランスポート層,アプリケーション層となっています. 今回は,データリンク層(MAC)とネットワーク層(IP)のお話ですね. データリンク層は,直結された通信デバイス間の通信を保証し,ネットワーク層では通信経路を選択します. そして,基本的に,宛先アドレスの最小単位はMACアドレスで,同一ネットワーク内ではMACアドレスを用いて通信します(ネットワークアドレスが違っても通信そのものは可能なんですね). ネットワーク層で作成されたIPパケットは,データリンク層に引き渡され,MACアドレスを用いて送信されます. インターネットにおける,通信のストーリーを書いてみます. ネットワークに接続した通信デバイスは,まず,同一ネットワーク(LANとしましょう)に接続されたほかのデバイスのMACアドレスを拾います. この時点で,LAN内の通信デバイス間でMACアドレスを使った通信が可能となります(データリンク層での通信). しかし,LANの外のデバイスと通信しようとしても,外のデバイスのMACアドレスはわかりませんので,別の方法で行き先を教えてやる必要があるわけです.それがネットワーク層(IP層)を用いたルーティングによる解決です. ネットワーク層では,パケットの宛先が送信元と同一のネットワークアドレスであれば,LAN内のデバイスへの送信だと思い(ルーティングテーブルからわかる),そのままデータリンク層に引き渡し,MACアドレスを用いて転送します. 次に,外部に送信するときを考えましょう(ここら辺がキモ). 送信先アドレスが自分のネットワークアドレスと異なるときは,予め作成されている,ルーティングテーブルを参照して,どの出口(ゲートウェイ)を使うかを調べます(一般的には,デフォルトゲートウェイ(すなわち,宅内ルータなど)がかかれています.). 出口となるゲートウェイがわかったら,データリンク層に依頼して,ゲートウェイのMACアドレスめがけて,パケットを投げつけます. パケットを受け取ったゲートウェイは,やはり自分のルーティングテーブルを参照して,LANの外側にデータを送信していきます. ゲートウェイの外側も,またLANのようなネットワークになっていて,同様の作業を続け,次のゲートウェイへ,次のゲートウェイへ…と転送を続けていくのです. (ちなみに,ゲートウェイは,すでにほかの回答にありますとおり,通信デバイスを二つもっていて,一方はLANのネットワークアドレスに属し,もう一方はプロバイダのネットワークアドレスに属します.) 宅配業者にたとえるとこんな感じです. 送信者は,最寄りの集配所(ゲートウェイ)の場所(MACアドレス)を知っているから,そこまで荷物をもっていく.すると,集配所は次の集配所を知っているから,そこまで持って行く.これを繰り返して,お届け先最寄りの集配所にたどり着き,その後,その集配所がMACアドレスを使って届け先に届けてくれる.と. >ネットワークアドレスが異なれば通信はできないはずです については,ネットワークアドレスが異なると,LAN内への通信でないと判断されて,ゲートウェイにMACアドレスを使って送信してしまうので通信できない.と考えて貰っていいと思います:-) 最後に. Windowsでしたら,コマンドプロンプトで route PRINT などと入力すると,ルーティングテーブルを見ることができます.宛先ネットワークアドレスがどうなっているときは,どのゲートウェイに送る~などというルールがかかれています.
お礼
詳しいご回答どうもありがとうございます。 ルーターの動きは皆様の回答で頭の整理ができました。 一つ疑問が残ってます。 ルーターというよりはPCの話になりますが、 これまでの私の認識では、PCがパケットを受信した時、パケット内のの送信先と送信元のネットワークアドレスが異なる場合はPC側でそのパケットを「破棄」すると思っておりましたが、そういうわけではないんですよね?
- o_tooru
- ベストアンサー率37% (915/2412)
こんばんは、疑問はつきませんね。 さてご質問の件ですが、少々専門的になりますね。正確に答える自信はないのですが。PCがLANの内部にないIPアドレスにセッションを張ろうとした場合、あなたが設定した「デフォルトゲートウェー」に問い合わせに行くことになります。(192.168.0.1) そうしますと、ルータはLAN側から受け取ったパケットをWAN側に渡すようにルーティングテーブルを持っていますので、WAN側にパケットを投げることになります。 じゃあ その仕組みはどうなっているのかと言えば、普段はIPアドレスしかあまり話題に上りませんが、まず、パケットのデーターの先頭にはIPアドレスがあります。そして、そのIPアドレスの先頭に更にMACアドレスを付け加えて、LANの内部では通信しあっています。レイヤー2ではMACアドレスが大事なわけです。(スイッチングハブなど) 所がLANの内部にないIPの要求がルーターのLAN側に来たとき、ルーターはIPアドレス(+MACアドレス)をWAN側のIPアドレス(+MACアドレス)に付け替えて、送り出してやります。そして、外部からの答えが来たときには、WAN側のIPアドレスを、LAN側のIPアドレスの書き換えてからPCに返してあげます。ルータはその変換テーブルを一定時間保持しています。 おおむねこんな感じだと思いますが。不案内なところがありますので、もし間違っていましたら、識者の方、ご訂正ください。
お礼
詳しいご回答ありがとうございます。
- inugh
- ベストアンサー率0% (0/3)
ネットワークアドレスが同じになるようになるんだと思います。 192.168.0 .. 192.168.0 PC---------LANルーター 100.100.100 .. 100.100.100 ルーターWAN-----インターネット
お礼
どうもありがとうございます。
- inu2
- ベストアンサー率33% (1229/3720)
それがルーターのお仕事です PCから見ればルーターは同一ネットワーク内に居ます しかし、インターネット側からみればルーターは同一ネットワーク内に居ます 一般的なルーターにはLAN用のWAN用の二つのEthernetポートが有ります モデム一体型のルーターでも、見た目にはWAN側のEthernetポートはありませんが、内部構造的に存在しています つまりルーターには二つのIPアドレスと二つのMACアドレスが存在するのです
お礼
どうもありがとうございます。
お礼
詳しいご回答どうもありがとうございます。 ルーターの動きは皆様の回答で頭の整理ができました。 一つ疑問が残ってます。 ルーターというよりはPCの話になりますが、 これまでの私の認識では、PCがパケットを受信した時、パケット内のの送信先と送信元のネットワークアドレスが異なる場合はPC側でそのパケットを「破棄」すると思っておりましたが、そういうわけではないんですよね?