サブネットマスクがネットワーク上の個々のコンピューターに関連するのはなぜですか?


48

サブネットマスクを使用してネットワークをサブネットワークに分割する方法を理解していますが、ネットワーク内のすべてのコンピューターがルーターだけでなくサブネットマスクを知る必要があるのはなぜですか?

各コンピューターが物理的に相互にワイヤーで接続されていれば理解できましたが、とにかくすべてのパケットがルーターを通過する必要があります。

192.168.0.0/255.255.255.0IPを持っているネットワーク上にコンピューターがあるとしましょう192.168.0.1

そのコンピューターがサブネットワーク外のコンピューターに到達しようとすると192.168.1.1、たとえば、ルーターにメッセージを送信し、ルーターはIPがサブネットワークのIP範囲外にあることを識別し、サブネットワークで送信するのではなくネットワーク、接続されているネットワーク(おそらく別のルーター)に送信します。


31
コンピューターは、ネットワークを形成するためにルーターを通過する必要はありません。
オーバーマインド

1
@Overmind:本当ですが、できます。ネットマスクは実際に厳密に必要なわけではなく、ルーターの作業を容易にするための最適化です。
–MSalters

3
if each computer were physically connected to each other with a wire-tcp / ipは実際にそうなった時に発明されたことを覚えておく必要があります。グーグル10-base-2。tcp / ipとは異なる動作をする他のプロトコルもありますが、過去20年間でIPv4がプロトコルの戦いに勝ちました。
-slebetman

あなたは、コンピュータネットワークがどのように機能するかについて誤解しているようです。次のビデオをご覧
v

@このような不気味な声のナレーターとのインターリンク?決して。
エリジウムをむさぼり食った

回答:


78

元の仮定が完全に正しいわけではありません。「ルーター」と呼ばれるものは、2つのデバイスを1つにまとめたものです。つまり、内部で複数ポートイーサネットスイッチに接続された2ポートルーターです。(の例を示します。)

これは、コンピューターレイヤー2で直接接続されており、ルーターコアを経由せずにパケットを相互に送信できることを意味します。スイッチチップによってポート間で単純に中継されます。(ルーターには、スイッチに独自の「ポート」があります。)

したがって、Wiresharkを使用してパケットを見ると、互いのMACアドレスを直接使用していることがわかりますが、「外部」パケットには常にルーターのMACが宛先としてあります。

(私は、大きなネットワークを持っているでしょう。あなたが質問のこの種の一般的な原因である、ほとんどの家庭で見られる典型的な「無線ルータ」、話していると仮定している別のサブネットごとに1つのポートとルータを、数個別のスイッチ(おそらく、マスター1つとフロア/部屋ごとに1つ)、およびそれらのスイッチに接続された数十台のコンピューター。

Wi-Fiネットワークでもほぼ同じですが、「スイッチ」が「ワイヤレスブリッジ」または「アクセスポイント」に置き換えられます。どちらの場合も、接続されたコンピューターは、ルーターを経由せずに、レイヤー2で直接パケットを送信できます。


コメント:

私がルーターを述べたとき、私は実際にスイッチを意味しました。私の間違い。私の要点は、サブネットワーク内の各コンピューターが相互に接続されているのではなく、スイッチに接続されていることです。スイッチはパッケージを正しい宛先に渡すことができます。イーサネットフレームにはサブネットマスクが含まれていません。これは、スイッチがすでにこの知識を持っているため、正しいスイッチングを行うために必要ではないためです。

これもまた間違っています。スイッチにはこの知識がありません。スイッチングコアはレイヤー2で動作し、IPについては何も知りません。「宛先MACアドレス」フィールドのみに基づいてイーサネットフレームを転送します。

したがって、ホストは宛先として使用するMACアドレスを特定するためにサブネットマスクが必要です。

  • ピアが同じサブネット内にある場合、定義によりオンリンクであると想定されます。そのため、イーサネットフレームには宛先としてピアのMACが含まれます。

  • サブネットのピアの場合、イーサネットフレームにはゲートウェイの MACが宛先として含まれます。

(これはデフォルト設定に適用されます。一部の特殊なスノーフレークネットワークはこれを変更します。たとえば、ほとんどのオペレーティングシステムは追加のサブネットに追加の「オンリンク」ルートを追加できます。逆に、一部のスイッチは「オンリンク「トラフィックはゲートウェイを強制的に通過します。)


おかげで、リンクされた図は私にははっきりしませんでしたが、あなたの説明は理にかなっていて、私は何か新しいことを学びました。
アデレード

7
ARPキャッシュにないIPアドレスにパケットが送信されると、サブネットマスクを使用して次のことを決定します。元のパケット。または2.ルータのMACアドレスを元のパケットの宛先MACアドレスとして使用します。

6
@Orpedo:スイッチはIPを認識せず、サブネット構造について何も知りません。宛先MACフィールドに完全に依存しています。したがって、最初にイーサネットフレームに配置するMACアドレス(受信者のホスト)を特定するには、サブネットマスクが必要です。
grawity

2
@Orpedoスイッチは「イーサネットルーター」です。イーサネットアドレス(MACアドレス)を使用して、イーサネットパケットの送信先を特定します。IPパケットを送信する場所を特定するためにIPアドレスを使用するIPルーターとは対照的。
user20574

1
歴史的な理由で@Orpedoは通常IP over Ethernetを実行しているため、EthernetパケットのペイロードはIPパケットであり、Ethernetパケットの宛先アドレスは次のIPルーターのEthernetアドレスです。さらに上にも行きます。TorでIPを実行する場合、IPパケットのペイロードはTorパケット*であり、IPパケットの次のTorルーターの宛先アドレスです。(*動作する類推のために、TCPとTorを一緒にカウントする必要があります)
-user20574

32

宛先アドレスが別のサブネットと同じサブネットにあるかどうかをコンピューターはどのように知るのですか?

ローカルアドレスサブネットマスクを確認します

いくつかの例を確認しましょう。

コンピューターにIPが192.168.0.1あり、マスクがある255.0.0.0場合、192.0.0.0to からのアドレスはすべて192.255.255.255同じサブネット内にあることを意味します。他のすべてのコンピューターへのパケットはルーターを通過する必要はなく、直接送信できます。ARPパケットを送信して宛先コンピューターのMACアドレスを取得し、パケットを送信します。

しかし、私のコンピューターにIPが192.168.0.1あり、マスクが255.255.255.128同じサブネットにあるコンピューターは、IPアドレス192.168.0.0から192.168.0.127のみになります。それらは直接到達できます(ARPの送信、MACアドレスの検索など)。たとえば192.168.0.200、ルーターを通過する他のアドレスに到達する必要があります。


1
しかし、同じサブネットにあるかどうかを知る必要があるのなぜですか?これが実際の質問です。
-grawity

3
宛先が同じサブネットにある場合、コンピューターはパケットを直接送信します。そうでない場合、ルーターに送信します。それで全部です!!!!
-jcbermu

@jcbermuしかし、彼の質問は、ほとんどのホームネットワークでは、パケットはとにかくルーターを通過するという考えに基づいていました-パケットを外部に送信する必要があるときと、他のサブネットローカルにリダイレクトする必要があるときデバイス。
エリジウム

11

IPについて明白でないことは、すべてのIPデバイス自体がルーターであることです。

これは、コマンド「route print」を使用して通常のPCで確認できます。2つのネットワークに接続しています:ローカルイーサネットまたはwifiセグメント、およびlocalhostネットワーク。すべてのパケットは、どのネットワークに配置するかを決定する必要があります。

これは、「パブリック」ネットワークと「プライベート」ネットワークの2つのネットワークにコンピューターを配置した場合に明らかになります。これで、パケットを送信するネットワークを決定するために、サブネットマスクが必ず必要になります。

多くの人々は、単一のネットワーク接続を備えたPCが誤って設定されたサブマスクで動作する可能性があることを偶然発見します。彼らはすべてをゲートウェイに送信することになります。


1
彼のポイントは、すべてのデバイスがルーターである必要はないということです。ルーター以外のすべてのデバイスは、すべてをルーターに送信することができ、送信者と同じネットワーク上にある場合でも、ターゲットに転送します。
バーマー

@Barmarは、あなたが誰に何を返信しているかを引用してもらえますか?そこに書いたものは、コンテキストを見れば面白いかもしれません。コンテキストバーマーを提供できますか。
-barlop

1
@バーマーああ、まあ、それがあなたが対処されていないと思う点または質問であれば-..答えは階層を持つことです-スイッチ、ルーター、ルーターの負荷をレッスンします。しかし、質問者は、とにかくすべてのパケットがルーターに行くという誤った考えに戸惑い、それが問題の根本にありました。
-barlop

1
「iprouting」設定:転送をオフにできますが、オプションが「lo」と「eth0」のみの場合でも、送信パケットに使用するインターフェイスを知るためにルーティングテーブルが必要です。「すべてをルーターに送信」してください。共有レイヤー2ネットワークでは、これを行わないことの利点はより明確になりますが、誰も10base2を使用しなくなりました。
pjc50

1
@Barmar:「ルーター以外のすべてのデバイスは、すべてをルーターに送信することができ、送信者と同じネットワーク上にある場合でも、ターゲットに転送します。」何も間違っていません。それはそのようには機能しません。理論的には可能です。実際にはそうではありません。ルーターは、トラフィックの発信元と同じサブネットに向かうトラフィックを単に無視することにより、リソースを最適化しようとする場合があります。それは(少なくとも一部)のルータがどのように機能するかを実際にあるので、他のデバイスは、ルータにトラフィックを送信するのは時間の無駄、あるいは他のものを他のデバイスが通信できません右のだろうことを知って、十分に複雑でなければならない
TOOGAM

7

これは他のいくつかの回答で言及されていますが、より明確になる可能性があります:複数のネットワークインターフェースを備えたコンピューターでは、サブネットマスクを使用して、宛先IPアドレスに基づいてIPトラフィックを送信する物理インターフェースを自動的に決定することができます

インターフェイスの1つに接続されたLAN上のデバイスにパケットを送信する場合、どのインターフェイスで送信するかを知るために(明示的にルートを設定していない場合)、コンピューターはインターフェイスを確認して確認できますもしSUBNET_MASK&destination_ip == SUBNET_MASK&interface_ip(で&私が意味ビットごと-ととによって==、私は平等を主張することを意味)、そしてマッチがあります場合は、そのインターフェイスを選択します。

たとえば、次のようになっている場合:

  • 192.168.1.42/24のインターフェイスA
  • 10.0.0.15/24のインターフェイスB
  • 192.168.2.97/24のインターフェイスC

また、パケットを192.168.2.123に送信し、ルートが設定されていない場合、255.255.255.0&192.168.2.123 == 255.255.255.0&192.168.2.97であるため、インターフェースCを使用する必要があると判断できます。

サブネットマスクがわからない場合、これは不可能であるため、データを送信するIPアドレスごとにルートを設定する必要があります。


6

TCP / IPは、提案どおりに設計できます。リーフノードはすべてをルーターに送信し、送信者と同じサブネット上にあるターゲットに転送します。

ただし、次の2つの理由により、これは最適な設計ではありません。

  1. より多くの帯域幅を使用します。同じサブネット上のデバイス間のすべてのパケットを2回送信する必要があります。1回は送信者からルーターへ、もう1回はルーターから受信者へ。ルーターがネットワークスイッチでもあるネットワークでは、とにかくスイッチを通過するため、これは実際には余分な帯域幅ではありません。しかし、すべてのネットワークテクノロジーがそのように機能するわけではありません。当初のイーサネット設計は、中央のスイッチやリピーターのないバス技術でした。

  2. ルーターにより多くの負荷がかかります。ルーターがスイッチでもある場合でも、より単純なレイヤー2スイッチングではなく、レイヤー3ルーティングの実装に移行しているため、少し手間がかかります。

TCP / IPの設計を具体化する一般的な哲学は、エンドノードがインテリジェントデバイスであるため、エンドノードは作業の一部を実行できると想定されていることです。バックボーンルーターのように完全なネットワークトポロジを知る必要はありませんが、ローカル環境については十分に知っているため、最初のlocal-vs-remoteルーティングタスクを引き受けることができます。この単純な初期ルーティングを実装するのに多くのコードは必要ありません。

さらに、ルーター以外のデバイスは必ずしも1つのサブネット上にあるとは限りません。PCに複数のネットワークカードを簡単に搭載できます。多くの場合、イーサネットとWiFiの両方が搭載されています。そして、それらはそれぞれ異なるサブネットに接続でき、アドレスとサブネットマスクを使用して、使用するネットワークカードを決定します。仮想マシンを実行している場合、それらをホストシステムに接続する仮想サブネットが存在する可能性があります。


一方、ATMネットワークこのよう設計されたと思います(おそらく、回路指向の結果として)。ブロードキャストはなく、ルーターとスイッチの区別もありませんでした。ツリー/スタートポロジ。
-grawity

@grawity実際、70年代と80年代には、ネットワークを設計する際に通信事業者と学者の間で哲学に大きな違いがありました。通信事業者は、ダムエンドノード(電話など)を備えたスマートネットワークに使用され、コアによって管理される回線交換を使用してネットワークを設計しました。
バーマー

5

ルーティングテーブルを見ると(これはたまたま私のデスクトップマシンです):

IPルート

default via 172.20.25.1 dev eth1 
172.20.25.0/24 dev eth1 proto kernel scope link src 172.20.25.33 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1

ルート

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.20.25.1     0.0.0.0         UG    0      0        0 eth1
172.20.25.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

どちらのビューも同じ情報を伝えます。サブネットマスクは、そのネットワークで直接到達可能なホストを示し、他のホストはゲートウェイを使用して検出されます。特に、ゲートウェイが到達可能であることを知らなければなりません。そうでなければ、転送するためのパケットを送信できませんでした。

原則として、ゲートウェイホスト経由ですべてを送信できます。それは次のようになります

default via 172.20.25.1 dev eth1 
172.20.25.1 dev eth1 proto kernel scope link src 172.20.25.33 

または

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.20.25.1     0.0.0.0         UG    0      0        0 eth1
172.20.25.1     0.0.0.0         255.255.255.255 U     0      0      

試したことはありませんが、MAC-Forced Forwardingに使用できます。


後者の方法は、意図的に使用される場合があります。MAC強制転送を参照してください。
grawity

2

さて、ネットワークをサブネットワークに分割するためにサブネットマスクがどのように使用されるか理解していますが、私の質問は、ネットワーク内のすべてのコンピューターがルーターだけでなくサブネットマスクを知る必要があるのはなぜですか?

ルーターと呼ばれるデバイスは通常、単なるルーターではありません。したがって、NAPTルーター、ホームルーター、またはコンシューマルーターなどの用語を使用して、純粋にルーターではないことを示唆することがあります。ルーターだけではないことを示すために、これらのデバイスはNAPT(ルーティングではない)を実行でき、スイッチが組み込まれています(スイッチはブリッジングを行い、ルーティングではない-スイッチとブリッジの区別あまり明確に定義されていません-ブリッジには多くの場合2つのポートがあり、異なるネットワーク媒体(たとえば、イーサネットと非イーサネット)を接続しますが、スイッチには複数のポートと同じネットワーク媒体があります。スイッチはブリッジングを行います。

スイッチが「ルーター」から分離されている場合、実際にはより明確になります。IPアドレスが同じネットワーク上にある場合、パケット スイッチである物理的に次のものにケーブルを下って行き、最終的にネットワーク上の他のコンピューターに宛てられます(管理されたスイッチであり、telnetまたはhttpなどのスイッチに接続していて、スイッチが独自のIPを持っていた場合を除く) )、およびパケットは別のネットワーク宛てではないため、パケットはルーターに到達しません。別のネットワーク上のコンピューターを宛先とする場合、もちろんスイッチに移動しますが、その後ルーターに進みます(スイッチはパケットをルーターに送り、パケットの宛先MACアドレスをスイッチはルーターのMACアドレスでした)、ルートはルーターの正しいインターフェイスからルーティングします。

これらのことは通常ルーターと呼ばれ、内部にスイッチがあります(プロのスタイルのcisco / juniperルーターではありません)、スイッチは内部にあります。しかし、それはスイッチの場所にすぎません。同じネットワークの場合、パケットはルーターではなくスイッチにアドレス指定されます。そして、それはルーター内のスイッチにのみ行き、ルーターに到達しません。

各コンピューターがワイヤーで互いに物理的に接続されていれば、理解できました。

ここで何を意味しますか。ネットワーク全体のすべてのコンピューターが物理的にワイヤーで接続されている場合は、スイッチやルーターは必要ないと思います。あなたが説明しているものは、元のイーサネットのように聞こえます..それらがすべてワイヤで接続されている場合、それはおそらくそれほど大きなネットワークではないでしょう。とにかくあなたが慣れているようなワイヤーではありません。「タップ」で途中までコンピューターが接続されていました。だから、なぜあなたはその文をただ投げたのか分かりません。

ただし、すべてのパケットはルーターを通過する必要があります。

つまり、ルーターを使用せずにすべてのコンピューターをワイヤーで接続するという考えを脇に置くということです。

いいえ、家に設置しても、毎回ルーターを通過するわけではありません。「ホームルーター」でも、インターネットボックスと呼びます。彼らはそのスイッチに行きます。

IP 192.168.0.1を持つネットワーク192.168.0.0/255.255.255.0にコンピューターがあるとしましょう。

そのコンピューターがサブネットワーク外のコンピューターに到達しようとする場合、たとえば192.168.1.1の場合、ルーターにメッセージを送信し、

スイッチに、それからスイッチからそれはルータに行きます

ルーターは、IPがサブネットワークのIP範囲外にあることを識別し、サブネットワークで送信するのではなく、接続先のネットワーク(おそらく別のルーター)に送信します。

ルーターは、それが何のためのネットワークインターフェイスかを識別します。あるインターフェースから別のインターフェースに送信します。1つの違い-どのインターフェイスに加えて、ネットワークが直接接続されているかどうかです。スイッチに送信してから、コンピューターに送信できます。または、コンピューターに送信することもできます。または、ネットワークが直接接続されていない場合は、別のルーターに移動します。

最後の文章は

メッセージをルーターに送信し、

それから、何を書いたのですか?

ルーターは、IPがサブネットワークのIP範囲外にあることを識別し、サブネットワークで送信するのではなく、接続先のネットワーク(おそらく別のルーター)に送信します。

まあ、私はそのようにそれを置きません。ルーターの各インターフェイスには、異なるIP範囲があります。

ただし、コンシューマルーターまたはホームルーターでは、2つのインターフェイスを備えたルーターのようになります。一方のインターフェイスにはスイッチが接続されています。また、複数のポートはスイッチのポートです。

したがって、ルーターの部分で考えると、これはサブネットワークの内側にあり、これは外側にあるというわけではありません。潜在的に多くのネットワークがあります。各インターフェイスに1つあります。また、ルーターは、元のネットワークにルーターを送信しません。そもそもルーターに到達した理由は、スイッチ(最初に到達した)がMACアドレスを確認し、ルーターのMACアドレスではないことを確認したためです。

パケットを送信したコンピューターは、パケットの宛先IPがそれ自体のネットワーク上にあるのか同じネットワーク上にあるのかを確認し、それに基づいて関連するMACアドレスを選択します。宛先のコンピューターのMACアドレス(コンピューターが同じネットワーク上にある場合)。または(コンピューターがルーターの別のインターフェイス上にある場合)、ルーターのMACアドレスになります。コンピューターがサブネットマスクを知る必要がある理由については、質問のタイトルに非常に直接答えるかもしれないと思います。アドレス(例:イーサネット、MACアドレス)。


1
むしろ決定的な答えですが、大丈夫です。それが私の最後の文だと思うなら、あなたのブラウザはページ全体をロードしていない。
オルペド

@Orpedo OK気づかなかった。書き込みを停止するかどうかを尋ねる行を削除し、その段落の残りの部分を含めて返信しました。それは実にかなりおもしろい重要なパラグラフでした。それに対する答えはあなたの質問の主題を扱っています。
barlop

再:スイッチ対ブリッジ。通常、スイッチはトランスペアレントブリッジ、つまりMACとポートに関連するデータベース(Forwarding Information Base IIRC)を持ち、イーサネットフレームのソースMACからMACを学習してFIBを埋めるブリッジに使用されます。プロキシARPブリッジなど、他の種類のブリッジとは対照的。スイッチの別の意味はより一般的です。たとえば、L7スイッチはアプリケーションレベルのメタデータに基づいて接続をルーティングし、ルーターはL3スイッチとも呼ばれます。...</ lexicographic rant>
ninjalj

Re:発信元と同じネットワークに何かを送信していないルーター:実際には送信できます。また、「送信元はネットワーク内にあり、直接通信できます」という送信元にICMPリダイレクトを送信します。
-ninjalj

@ninjaljハブがルーターに接続されている場合、ルーターはそれが送信されたネットワーク宛てのパケットを受信すると思います。 )..その場合、パケットがそのスイッチを経由して元のネットワークに戻るように指定されている場合、スイッチはパケットをルーターに送信しません。そして当然のことながら、ルーターとスイッチを組み合わせた箱にはスイッチがあります。ルーターとハブを組み合わせたボックスはありません。
-barlop

1

しかし、何のためにそれを必要としないのに、なぜクプター/デバイスにサブネットマスクが与えられるのですか?–オルペド3月22日13時45分

コンピューター/デバイス、IPブロードキャストアドレスを計算するためにサブネットマスクを使用します。

混合モードではないIPインターフェイスは、独自のIPアドレスと同様にIPブロードキャストアドレスに応答するように設定されます。


すでに回答をマークしましたが、これは実際には非常に短く有用な回答でした。
-Orpedo

1
これはほぼ間違いだと思います。ネットワークインターフェイスはIPについて何も知りません。MACアドレスに応答(および自動的に適用)します。ARPがあるのはそのためです。したがって、ローカルネットワーク上のマシンのIPアドレスがわかっている場合、そのMACアドレスを学習し、それを使用してマシンと通信できます。まあ、すべてのブロードキャストで使用されるブロードキャストMACアドレスがあります。ブロードキャストIPアドレスは、統一のためだけに存在しています。
Gマン

-1

他の人がサブネットマスクの役割を複雑にしていると思うので、これに答えるためだけにアカウントを作成しました。

サブネットマスクは、ホストが通信するネットワーク上の他のマシンを決定します。ホストがサブネットの外側にある場合、ゲートウェイを介してそのマシンと通信しようとします。そのホストがサブネット内にある場合、そのホストと直接対話します(ゲートウェイは不要です)。さらに、ホストのサブネット外のマシンがホストと通信しようとすると、それらのパケットは耳が聞こえなくなり、すぐにドロップされます。

なぜそれがあなたに関係があるのですか?ネットマスクを使用しなかった場合、GoogleのDNSサーバー(8.8.8.8)と通信しようとすると、物理アドレス(MACアドレス)を知る必要があります(それと通信する他のすべてのホスト)。これにより、お使いのコンピューターと他のすべてのユーザーが、通信するすべてのインターネットマシンのARPエントリを作成する必要が生じます。マシンの物理アドレスが必要以上に渡されると、RAMが無駄になり、すべてのネットワークの速度が低下します。


以前に、ネットマスクを使用しない場合に何が起こるかを意味するときに、ネットワークとゲートウェイを使用しない場合に何が起こるかについて述べました。ゲートウェイとネットワークを使用しなかった場合...インターネットは巨大なフラットネットワークになり、GoogleのDNSサーバーと通信するには、インターネット全体にパケットをブロードキャストし、Googleが応答するかどうかを確認する必要があります。インターネットは、そのような種類のブロードキャストトラフィックを行うすべての人とすぐに中断します。
-Szeraax

1
サブネットマスクなしで動作する2つのモードがあります。ホストがL2のすべてに直接アクセスしようとするか、すべてにL3ゲートウェイを使用します。前者が唯一の選択肢であると想定していますが、それは真実ではありません。元の質問と他のすべての回答は、一部のネットワークで実際に使用される後者のモードに関するものです。
-grawity
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.