アプリ版:「スタンプのみでお礼する」機能のリリースについて

宜しくお願い致します。初心者的質問でスイマセン。
色々とネットワークの実験をしています。

WAN
|
ブロードバンドルータ
192.168.0.1
|
[eth0]192.168.0.2
PC(1)

WAN
|
ブロードバンドルータ
192.1682.1.1
|
[eth0]192.168.1.2
PC(2)

という2台のPCを切り離して

PC(1)[eth0]─[eth0]PC(2)

と直接LANケープルで繋げた場合、どうして互いにpingが飛ばないのでしょうか?

例えばPC(1)から
$ ping -c3 192.168.1.2
としてpingした場合にはPC(1)は192.168.1.2宛のパケットのやり場所がわからないので
とりあえず自身のeth0から排出しますよね。
経路はケーブル1本なので必然的にPC(2)に届きますよね。
そして、PC(2)はそのパケットは一応は192.168.1.2宛なので受取らざる得ませんよね。
この192.168.0.2からのpingパケットなので192.168.0.2宛にレスポンスのパケットを送出しようとして同様にeth0から排出してPC(1)に返されると推測するのですが、、、
何か勘違いしてますでしょうか?

A 回答 (12件中1~10件)

「物理的に繋がっている」と「論理的に繋がっている」は別だからです。



物理的に繋がっていても、ネットワークアドレスが違うアドレスから来るパケットはNIC(LANカード)が自動的にスルーするようになって居ます。

電気的に信号が届いていても「無視する事になっています」ので、Pingの返答が来ないのは当たり前です。

ネットワークアドレスが異なる2つのネットワークを跨ぐ場合は、ゲートウェイを通す必要があります。

PC1
(192.168.0.2)

(192.168.0.1)
GW
(192.168.1.1)

(192.168.1.2)
PC2

ここで、PC1からPC2に向かってpingを飛ばすと
「取り敢えずの今の行き先は192.168.0.1で、最終的な行き先は192.168.1.2で、本当の発信者は192.168.0.2で、取り敢えずの発信者も192.168.0.2」
と言うパケットがPC1から投げられます。

GWの上側のポートがこのパケットをLAN上で拾うと
「取り敢えずの発信者が192.168.0.2で同じネットワーク内だし、取り敢えずの今の行き先は192.168.0.1だから俺のだ」
と、このパケットを取り込み
「最終的な行き先は192.168.1.2だから、下側のポートの192.168.1.1から投げよう」
と、パケットを
「取り敢えずの行き先と最終的な行き先は192.168.1.2で、本当の発信者は192.168.0.2で、取り敢えずの発信者は192.168.1.1」
と組み替えてから、下側のポートで投げます。

PC2は
「取り敢えずの発信者が192.168.1.1で同じネットワーク内だし、取り敢えずの今の行き先は192.168.1.2だから俺のだ」
と、このpingパケットを拾い上げます。

pingへの返答は、上記の逆の手順になります。

ここで重要なのは「取り敢えずの発信者が同じネットワーク内だし」の判定部分です。

この判定チェックは「サブネットマスク」と言うデータでIPアドレスと演算され、演算結果が一致した場合にのみ「同じネットワーク内」として判定され、パケットが無視されるのを防ぎます。

IPアドレス:192.168.0.1
サブネットマスク:255.255.255.0
の2つのアドレスの4つの数字をそれぞれAND演算すると
ネットアドレス:192.168.0.0
が求まります。

IPアドレス:192.168.0.2
のネットアドレスは
ネットアドレス:192.168.0.0
になり、
IPアドレス:192.168.1.2
のネットアドレスは
ネットアドレス:192.168.1.0
になります。

2つのネットアドレスは、3つ目の数字が異なる為「同じネットワーク内ではない」となります。

なので、ゲートウェイを入れずにPC1とPC2を直結すると
「取り敢えずの今の行き先は192.168.1.2で、最終的な行き先は192.168.1.2で、本当の発信者は192.168.0.2で、取り敢えずの発信者も192.168.0.2」
と言うパケットがPC1から投げられ、PC2は
「取り敢えずの発信者が192.168.0.2で違うネットワークだから無視」
と、パケットを拾いません。

なお、PC1、PC2のサブネットマスクを
サブネットマスク:255.255.255.0
ではなく
サブネットマスク:255.255.0.0
に変更すると、AND演算の結果がどちらも同じになり
ネットアドレス:192.168.0.0
となって、直結で通信出来るようになります。

また、直結の時はクロスケーブルを使うか、HUBを間に入れてストレートケーブルで繋いで下さい。

この回答への補足

詳細なご説明誠に有り難うございます。

> 物理的に繋がっていても、ネットワークアドレスが違う
> アドレスから来るパケットはNIC(LANカード)が自動的に
> スルーするようになって居ます。
ネットワークアドレスはインターネット層の格納されてるんですよね?
という事はNICカードっていうのはインターネット層のデータを解釈できるんですね。。

補足日時:2006/03/08 20:09
    • good
    • 0
この回答へのお礼

遅くなりましてスイマセン。
有り難うございました。
お陰さまで大変参考になりました。

お礼日時:2006/10/10 12:44

PC(1) のルーティングテーブルをいじればできますよ。



その前に、まさか、DHCP の自動取得になってたところをケーブルはずしたために、IPアドレスが無効になったとかそんなオチはないですよね?
    • good
    • 0
この回答へのお礼

遅くなりましてスイマセン。
有り難うございました。
お陰さまで大変参考になりました。

お礼日時:2006/10/10 12:48

クロスケーブルでつないであるとしても、


ネットワークアドレスが異なるので直接は通信できません。
いったんルータを経由する必要があります。
    • good
    • 0
この回答へのお礼

遅くなりましてスイマセン。
有り難うございました。
お陰さまで大変参考になりました。

お礼日時:2006/10/10 12:47

こんばんは、疑問はつきませんね。



さてご質問の件ですが、私もネットワークのことは勉強中なので、回答をつけることは出来ないのですが。6番の方7番の方4番の方の回答を読んで、もしおわかりでならないようでしたら、もう少し勉強する必要があるかと思います。「階層モデル」はネットワークの基本ですから、理解する必要があると思います。「物理層」「データーリンク層」「ネットワーク層」あたりですかね。

頑張ってお勉強お励みください
    • good
    • 0
この回答へのお礼

遅くなりましてスイマセン。
有り難うございました。
お陰さまで大変参考になりました。

お礼日時:2006/10/10 12:47

サブネットマスクはいくつできっていますか?


24ビットできっていれば、別ネットワーク扱いなのでつながりません。
今回の場合16ビットにしてあげればpingは帰ってくると思います。
icmpが有効になっていることが前提ですが。
    • good
    • 0
この回答へのお礼

遅くなりましてスイマセン。
有り難うございました。
お陰さまで大変参考になりました。

お礼日時:2006/10/10 12:43

この仕組みを理解するには「デフォルトゲートウェイ(参考URL)」を理解する必要があります。


パケット送信の手順は下記のとおりです
(1)PC1から192.168.1.2へパケットを送信する命令を出す
(2)PC1は192.168.1.2は自分のネットワークではないため、デフォルトゲートウェイ(192.168.0.1)宛にパケットを送信する
(3)192.168.0.1が見つからないのでping失敗←現在この状態
実験的にPC1にPC2のアドレスをデフォルトゲートウェイに、PC2にPC1のアドレスをデフォルトゲートウェイに設定すればpingが成功すると思います。
ただし、この設定をしてしまうとPC1とPC2は、それぞれ2台のパソコン間しか通信ができません。(デフォルトゲートウェイが固定されているためインターネットにも出られない)
    • good
    • 0
この回答へのお礼

遅くなりましてスイマセン。
有り難うございました。
お陰さまで大変参考になりました。

お礼日時:2006/10/10 12:41

基礎のところをが理解されていません



まず、IPアドレスで通信する場合も、
IPアドレスの前に相手MACアドレスと自分のMACアドレスを付加してから送出します
受信する場合も自IPアドレス宛を受信するのではなく、自MACアドレス宛を受信します
(IPアドレスは、自MACアドレス宛を受信した後に解釈されます)

pingでも何でも、相手IPアドレスで送出する前に、そのIPアドレスがLAN上に存在するかどうかをarpプロトコルで送信します
(この時、宛先が他サブネットの場合、そのサブネット接続のゲートウェイもしくはデフォルトゲートウェイ宛に送信します、ゲートウェイ宛の場合、ゲートウェイのIPアドレスでarpを送信します)

自分宛のarpを受け取ると、自分のMACアドレスを付けて返信します

arpでMACアドレスを受け取ったら、そのMACアドレス宛にpingやその他IPプロトコルのデータを送信します

LAN上で使用されるアドレスはMACアドレスです、IPアドレスの付いたデータはMACアドレスで包装されて伝送されるイメージです

ここまでで、質問のping応答が返らない原因がお判りのことと思います

詳しくは階層モデルを勉強してください
    • good
    • 0
この回答へのお礼

遅くなりましてスイマセン。
有り難うございました。
お陰さまで大変参考になりました。

お礼日時:2006/10/10 12:40

Pingの対象が同一ネットワークアドレス内に無い場合、とりあえずはゲートウェイに送られます。

でゲートウェイがきちんとルーティングしてくれるなら届きます。また自分と同じネットワーク内なら直接送信されます。
今回は同一ネットワークでない所に出そうとしているので、ゲートウェイが目標となりますが、ゲートウェイがないなら返ってきませんし、あるいはそもそもゲートウェイが設定されていないなら信号が出ることもありません。
    • good
    • 0
この回答へのお礼

遅くなりましてスイマセン。
有り難うございました。
お陰さまで大変参考になりました。

お礼日時:2006/10/10 12:38

> 例えばPC(1)から


> $ ping -c3 192.168.1.2
> としてpingした場合にはPC(1)は192.168.1.2宛のパケットの
> やり場所がわからないので
> とりあえず自身のeth0から排出しますよね。
 ここが違う。パケットのやり場所が分らないので「誰かに頼む」のだ。で、頼む相手がeth0の先に見つかったからeth0へ出すのだ。意味もなくeth0へ出す訳ではない。今回はeth0の先に頼む相手が居ないのでpingは戻ってこない。

 「あて先の分らないパケットはとりあえずここに出す」、いわゆるデフォルトゲートウェイは、今回のケースではeth0の192.168.0.2と同じサブネットに無いといけない。

 デフォルトゲートウェイは「eth0」ではなく、「192.168.0.254」などのIPアドレスなのだね。
 今回のケースは、クロスケーブルで接続された1つの「物理ネットワーク」に192.168.0.0/24と192.168.1.0/24という2つの「論理ネットワーク」が存在するという事を覚えておいていただきたい。

 図が描けないとちょっと説明しづらい内容なので、わかりづらいかとは思うが、ネットワークインタフェース層とインターネット層の話を切り分けて考えないといけないのです。

この回答への補足

ご回答有り難うございます。

PC(1)のルーティングテーブルのデフォルトゲートウェイが192.168.0.1[eth0]
のままになっているから192.168.1.2宛のパケットはこのeth0から仕方なく送出されるのかと思ってました(送出すらもされないんですね)。
ルータを接続してた状態からケーブルを切り離してクロスケーブルでPC同志を直結した時点でarp(というパケット)が飛んでPC(1)のeth0の先には192.168.0.1ではなく得たいのしれない192.168.1.2というノードが存在するみたいだと悟るのですね。
私はPC(1)を騙くらかしてPC(1)で192.168.1.2宛のパケットをeth0から送出させれるのだとばかり思ってました。
私の思惑はarpでばればれになってしまうのですね(恐るべし)。
因みにarpはケーブルの抜き差しの時に伝播されるのですね。

補足日時:2006/03/08 20:07
    • good
    • 0
この回答へのお礼

遅くなりましてスイマセン。
有り難うございました。
お陰さまで大変参考になりました。

お礼日時:2006/10/10 12:36

ようは


ルーターなしで直結ってことですか??

まずハード面では
ケーブルのタイプはあってますよね?
直結ならクロスケーブルです。

またネットワークアドレスというのはサブネットで分かれています。
    • good
    • 0
この回答へのお礼

遅くなりましてスイマセン。
有り難うございました。
お陰さまで大変参考になりました。

お礼日時:2006/10/10 12:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!