• ベストアンサー

異なるネットワークアドレスについて

例えば以下のような構成を考えます。 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は通ります。 これはどういうしくみ(決まり)で動作しているのでしょうか? ご教授よろしくお願いします。  

質問者が選んだベストアンサー

  • ベストアンサー
  • neumann
  • ベストアンサー率39% (900/2303)
回答No.6

ネットワークの知識があれば特に疑問には思わないのですけどね(^^; ※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フレーム」とは、厳密には「イーサネットフレーム」のことです。

jimihenn
質問者

お礼

詳しいご回答どうもありがとうございます。 ルーターの動きは皆様の回答で頭の整理ができました。 一つ疑問が残ってます。 ルーターというよりはPCの話になりますが、 これまでの私の認識では、PCがパケットを受信した時、パケット内のの送信先と送信元のネットワークアドレスが異なる場合はPC側でそのパケットを「破棄」すると思っておりましたが、そういうわけではないんですよね?

その他の回答 (6)

  • neumann
  • ベストアンサー率39% (900/2303)
回答No.7

>パケット内の送信先と送信元のネットワークアドレスが異なる場合はPC側でそのパケットを「破棄」すると思っておりましたが、 PCはパケットの宛先を見て自分のアドレスだった場合は受け取り、そうでなければ破棄します。 パケット受信の際には送信元のアドレスは関係ありませんよ(^^;

jimihenn
質問者

お礼

2回もご回答いただきましてありがとうございました。 非常に参考になりました。

noname#17587
noname#17587
回答No.5

No3の方の説明に補足です よく「ネットワークアドレスが異なれば通信はできない」と言うのはレイヤ2の話です。単なるHUBだけでネットワークを構成している場合はまさにこの通りです。 これではインターネットのサーバと通信できないので、そこでルータが出てきます。 PCにIPアドレスを設定したときデフォルトゲートウェイを設定したと思うのですが、あれはネットワークアドレスが異なる場合のパケットの投げ先になります(No3は問い合わせと表現しましたが、実際は無条件に投げています) ルータ(たぶん家庭用ルータ)にもデフォルトゲートウェイがあり(DHCPで自動設定)無条件にプロバイダのルータに投げます。 プロバイダにある数千万円以上のルータはデフォルトゲートウェイを持たず、世界中の一つ一つのネットワークアドレスを全て記憶しているので目的地に近いルータに投げます。後は同じ要領でバケツリレーを行い目的地まで届けます。 実際にはその他にもNo3が書いているようにレイヤ2でのMACアドレス、NAPTによるアドレス変換など多様な技術が使われています。

jimihenn
質問者

お礼

詳しいご回答どうもありがとうございます。 ルーターの動きは皆様の回答で頭の整理ができました。 一つ疑問が残ってます。 ルーターというよりはPCの話になりますが、 これまでの私の認識では、PCがパケットを受信した時、パケット内のの送信先と送信元のネットワークアドレスが異なる場合はPC側でそのパケットを「破棄」すると思っておりましたが、そういうわけではないんですよね?

noname#14872
noname#14872
回答No.4

すでに皆様の御回答にもありますが,ネットワークプロトコルが階層型になっているために,このようなことになっていると言えます. この階層構造は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 などと入力すると,ルーティングテーブルを見ることができます.宛先ネットワークアドレスがどうなっているときは,どのゲートウェイに送る~などというルールがかかれています.

jimihenn
質問者

お礼

詳しいご回答どうもありがとうございます。 ルーターの動きは皆様の回答で頭の整理ができました。 一つ疑問が残ってます。 ルーターというよりはPCの話になりますが、 これまでの私の認識では、PCがパケットを受信した時、パケット内のの送信先と送信元のネットワークアドレスが異なる場合はPC側でそのパケットを「破棄」すると思っておりましたが、そういうわけではないんですよね?

  • o_tooru
  • ベストアンサー率37% (882/2337)
回答No.3

こんばんは、疑問はつきませんね。 さてご質問の件ですが、少々専門的になりますね。正確に答える自信はないのですが。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に返してあげます。ルータはその変換テーブルを一定時間保持しています。 おおむねこんな感じだと思いますが。不案内なところがありますので、もし間違っていましたら、識者の方、ご訂正ください。

jimihenn
質問者

お礼

詳しいご回答ありがとうございます。

  • inugh
  • ベストアンサー率0% (0/3)
回答No.2

ネットワークアドレスが同じになるようになるんだと思います。 192.168.0 .. 192.168.0 PC---------LANルーター 100.100.100 .. 100.100.100 ルーターWAN-----インターネット

jimihenn
質問者

お礼

どうもありがとうございます。

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

それがルーターのお仕事です PCから見ればルーターは同一ネットワーク内に居ます しかし、インターネット側からみればルーターは同一ネットワーク内に居ます 一般的なルーターにはLAN用のWAN用の二つのEthernetポートが有ります モデム一体型のルーターでも、見た目にはWAN側のEthernetポートはありませんが、内部構造的に存在しています つまりルーターには二つのIPアドレスと二つのMACアドレスが存在するのです

jimihenn
質問者

お礼

どうもありがとうございます。

関連するQ&A

  • 異なるネットワークに、プライベートアドレスでpingが通る?

    現在、 WAN=ルータ1(192.168.1)=ルータ2(192.168.2)=PC という接続をしています。 自分のPCのIPアドレスが「192.168.2.3」として、そのPCから、「ping 192.168.1.3」のように上位のネットワークにプライベートIPアドレスでpingを通そうとしたら、応答が帰ってきたのですが、これはなぜなのでしょうか? グローバルIPアドレスか自分のネットワーク内のプライベートネットワークIPアドレスしか、通じないと思っていたのですが…。 よろしくお願いします。

  • IPアドレスとMACアドレス

    異なるネットワーク間でデータが、ホスト→ハブ→ルータ→ルータ→ハブ→ホストと流れるとき、それぞれの区間ではIPアドレスとMACアドレスのどちらを元にデータを送ってるのでしょうか? また、送信先のMACアドレスはどうやって知るのでしょうか?

  • グローバルIPとプライベートIPについて

    ソフトウェア開発技術者の平成20年春の問題をやっていて、腑に落ちないところがあります。 質問は二つです。 外出先のクライアントのPCからルータA(外出先からインターネットへつなぐためのもの)を通じて、インターネット経由で自宅のネットワークのルータBにアクセスをして、そこからアドレス変換をすることによりサーバにアクセス要求パケットを送信するという類のものなのですが…。 アクセス経路で、あるネットワーク内に存在するクライアントPCからそのPCをネットへつなぐためのルータにアクセスする時に送信元IPアドレスが「192.168.1.10」とクライアントPCのプライベートアドレスになっていました。   ところが、ルータAから別のネットワークのルータBにつなぐときは、送信元のIPアドレスが「61.xxx.42.94」とグローバルIPアドレスになっていました。 (1) 送信元IPアドレスのプライベートとグローバルIPアドレスが変わってくるのは何が原因なのでしょうか? 自分なりに考えてみると、別のネットワークにパケットを送るときは一旦プライベートアドレスからグローバルIPアドレスに変換する必要があるため。と解釈したのですが、正しかったでしょうか。 また、ホームネットワークのルータBに来て目的のサーバにパケットを送るときに、そのルータBから「そのネットワーク内の目的のサーバ」への送信元IPアドレスがパケットが送られてきたネットーワークのグローバルIPアドレスである「61.xxx.42.94」となっていました。 (2)しかし、ルータBは別のネットワークの中に属するものでありその送信元アドレスがなぜそう表示されるのかわかりません。 これは、目的のサーバからのパケットの応答がある場合に、ルータAからクライアントPCに帰るときも同様で、ルータBが存在する方のグローバルIPアドレスである「202.yyy.63.242」が使われていました。 以上二つです。二つともIPアドレスに関する質問です。よろしくお願いします。

  • ARPパケットの宛先(IP/MAC)アドレス

    ARPパケットの中身ですが アドレスタイプ/アドレス長/オペレーションコード/送信元MACアドレス/送信元IPアドレス/宛先MACアドレス/宛先IPアドレス 分類すると上記に分けられると思うのですが、このとき宛先MACアドレスと宛先IPアドレスには 何が入るのでしょうか? ARPパケットはブロードキャスト送信されるので宛先MACアドレスはそのネットワークの ブロードキャストアドレスが入り、宛先IPアドレスはIP/MACの対応が知りたいIPアドレスが入るのでしょうか? この場合だと宛先IPアドレスと宛先MACアドレスが異なるアドレスになりますが、 これはそういうものと捉えて良いのでしょうか。 少し説明文が分かりにくいかと思われますがご存知の方がいらしたらご教授願います。

  • ルーター配下のパソコンとネット上のサーバとの通信

    ルーターにはLANポートが複数ありそれぞれのLANポートにパソコンをつないでいます。 そのポートの1つである LANポート1につないでいるパソコンA(192.168.100.2/24)から デフォルトゲートウェイである ルーター(192.168.100.1)を経由して あるサーバー(74.125.235.95)にパケットを送り 戻りパケットがルーターからパソコンAに届くまで  について。 ルーターのIPマスカレードは  内側 192.168.100.2:4415 あて先 74.125.235.95:80 とします。 ○パソコンAからルーターまで 接続先が 192.168.100.0/24 のネットワークと異なる 74.125.235.95であることから パソコンAはデフォルトゲートウェイにパケットを送ろうとし パソコンAのデフォルトゲートウェイのIPアドレスをARPテーブルから割り出し 次にそのIPアドレスに基づいてARPテーブルからデフォルトゲートウェイのMACアドレスを割り出し そのMACアドレスを含んだMACフレームを送信する。 ルーターはMACフレーム内の送信先MACアドレスがルーター自身のMACアドレスであることから 自身で担当すべきMACフレームであると判断し、そのフレームの処理を引き受ける。 ○ルーターからパソコンAまで サーバーから戻りパケットを受け取ったルーターは、IPマスカレードに基づいて ルーターからそのパケットを送信すべき送信先のIPアドレスを 192.168.100.2 と判定する。 次に IPアドレス 192.168.100.2 に基づいてルーターのARPテーブルから MACアドレスを割り出す。 次に、そのMACアドレスに基づいて MACアドレステーブルから 送出先ポートであるLANポート1 を割り出し、LANポート1からパケットを送りだす。 ○パソコンAからルーターまで ○ルーターからパソコンAまで は上記の理解で合っていますでしょうか? 特に気になるのは、○ルーターからパソコンAまで において 送出先ポートを最終的に決めるのは IPアドレスではなく、 MACアドレステーブルが参照され、結果 MACアドレステーブルのMACアドレスによって決まるのかどうか という点です。

  • NATディスクリプタを挟んだ送信元のIPアドレス

    ルーターを挟んでネット上のあるサーバーとhttpで通信する時 (パソコン)-(ルータ)-(ネット上のあるサーバー) パソコンのプライベートIPアドレス 192.168.100.2 ルーターのプライベートIPアドレス 192.168.100.1 ルーターのグローバルIPアドレス 124.83.235.204 ネット上のあるサーバー のグローバルIPアドレス 74.125.235.119 とします。 1 パソコンからネット上のあるサーバーへパケットを送ったとき そのパケットを受け取った ネット上のあるサーバー上では、 そのパケットのIPヘッダーの送信元IPアドレスは 192.168.100.2、192.168.100.1 ではなく 124.83.235.204 2 ネット上のあるサーバーから応答パケットがパソコンへ戻ってきたとき そのパケットを受け取った パソコン上では、そのパケットのIPヘッダーの送信元IPアドレスは 124.83.235.204、192.168.100.1 ではなく 74.125.235.119 で正しいでしょうか?

  • なぜMACアドレスだけでなく、IPアドレスが必要なのか

    現在ネットワークについて勉強しております。 ・MACアドレスはNICに固定で、隣接区間でのデータリンク通信に必要。 ・IPアドレスはネットワークを越える、エンドツーエンドでのあて先・送信元指定に必要。 という点は理解しております。 ネットワーク超えの通信においても、ホストを特定するための要素はMACアドレスだけで十分では?という疑問が生じました。 上記のエンドツーエンドでのあて先・送信元指定にもMACアドレスを用いる事はできるはずです。 (IPパケットの中に最終的な宛先・送信元MACアドレスを書けばいいのでは?) なぜ「IPアドレス」という概念が必要なのでしょうか。 MACアドレスとIPアドレスという、似たような概念をあえて2つ作っている理由を教えてください。

  • ネットワーク上に存在しないIPアドレスにはUDPパケットが送信できない?

    はじめまして。よろしくお願いします。 Cでソケットプログラミング(WinXP,VC++6.0)を行っています。 やろうとしていることは、 ・UDPパケットを同じネットワークセグメントのIPアドレスに送信する ということです。 プログラムを作成し、本当に送信しているのかどうかをパケット キャプチャソフト(wireshark)を使って確認してみました。 すると、ネットワーク上に存在するIPアドレスにはパケットを送信 しているのですが、存在しないIP(つまり、電源を切っているPC)には パケットを送信していないことがわかりました。 ネットワーク上においてそのIPの存在に関係なく、パケット を送信することは出来ないのでしょうか? よろしくお願いします。

  • ネットワークを分けるとWindowsマシンが見えない

    WindowsマシンとMACマシンが混在したLAN環境で、これまで、一つのネットワーク環境(IPアドレス:192.168.0.XX)でしたが、最近、場所が2つに分かれたため、2つのネットワーク(IPアドレス:192.168.0.XX、192.168.1.XX)に分け、その間にルータを入れました。(それぞれに、WindowsマシンとMACマシンが混在しています。サブネットマスク:255.255.255.0に設定しています。ルータのIPIPアドレス:192.168.254.1、192.168.1.254)そうすると、一方のネットワークから、もう一方のネットワークのWindowsマシンがネットワークコンピュータから見えなくなってしまいました。MACは(WindowsからもMACからも)見えます。「検索」-「ほかのコンピュータ」で、「コンピュータ名」のIPアドレスを入れて検索すると見えますし、これをネットワークドライブに割り付けることもできるのですが、PC起動時に自動的に繋ぐようにするとエラーとなってしまいます。これは、そういうものなのでしょうか?それとも、ルータやPCの設定で、自動的に見えるように出来ないでしょうか?これと、関係するかどうかわからないのですが、PINGを行うと、最初の1,2回でタイムアウトになることが多く、また、時々、時間がかかる事が多く(通常、1,2msが数十ms)、不安定な状況です。

  • IPアドレスについて

    ネットワークを構築する際についてお伺い致します。 異なるネットワークアドレスのがネットワーク内にある場合に、ルータの設定で双方向に通信ができると聞きました。 PC1 192.168.2.2 255.255.255.0 PC2 192.168.10.1 255.255.255.0 PC1とPC2の間にルータを入れて、アドレス変換?を行えばPINGが通るようになると聞いたのですが、ルータにはどのような設定を行うのでしょうか。 また、PC1とPC2が全く同じIPアドレスであっても、ルータを間に入れれば、PINGも通ると聞いたのですが、全く同じIPアドレスであっても通信できるというのも、ルータにはどのような設定を行うのでしょうか。 原理のようなものが全くわからないので、概要などについても教えていただけたらありがたいです。 また参考となるようなHPありましたら、お教えくだい。