私は、サブネットマスクがネットワークをサブネットワークに分割するために使用される方法を理解していますが、なぜネットワーク内のすべてのコンピュータは、ルータだけでなく、サブネットマスクを知っている必要がありますか?
私はそれを理解することができました, 各コンピュータが物理的にワイヤーでお互いに接続されていた場合, しかし、すべてのパケットはとにかくルータを通過する必要があります
ネットワーク192.168.0.0/255.255.255.0
にIP192.168.0.1
を持つコンピュータを持っているとします
そのコンピュータがサブネットワーク外のコンピュータ、例えば 192.168.1.1
に到達しようとした場合、ルータにメッセージを送信し、ルータはIPがサブネットワークのIP範囲外にあることを識別し、サブネットワーク上で送信するのではなく、接続されているネットワーク(おそらく別のルータ)に送信します
49 None 2017-03-22
あなたの最初の仮定は完全に正しいわけではありません。あなたが “ルータ “と呼ぶものは、1つの2つのデバイスです – 内部的にマルチポートのイーサネットスイッチに接続された2ポートのルータ。(ここでは、diagramの例を示します。)
これは、コンピュータがレイヤー2で直接接続されており、ルータのコアを経由せずにお互いにパケットを送ることができることを意味します。(ルータはスイッチに独自の「ポート」を持っています)
つまり、Wiresharkを使ってパケットを見てみると、お互いのMACアドレスを直接使っているのに対し、「外部」のパケットは常にルータのMACが宛先になっていることがわかります
(私は、ほとんどの家庭で見られる典型的な “無線ルーター “について話していると仮定していますが、それはこの種の質問の通常の原因です。大きなネットワークは、サブネットごとに1つのポートを持つ別のルータを持っているだろう, といくつかの別々のスイッチ(おそらくマスター1プラスフロア/部屋ごとに1), とそれらのスイッチに接続されているコンピュータの数十
Wi-Fiネットワークと大体同じですが、「スイッチ」が「ワイヤレスブリッジ」、別名「アクセスポイント」に置き換えられています。どちらの場合も、接続されたコンピュータは、ルータを経由せずに、直接レイヤー2でお互いにパケットを送信することができます
Comments:
ルーターと言った時は スイッチのことだった私のミスです。私が言いたかったのは、サブネットワーク内の各コンピュータはお互いに接続されているのではなく、スイッチに接続されていて、スイッチは正しい宛先にパッケージを渡すことができるということです。イーサネットフレームにはサブネットマスクは含まれていません。スイッチはすでにこの知識を持っているので、正しいスイッチングを行うためには必要ありません
これもまた間違っています。スイッチはこの知識を持っていません。スイッチングコアはレイヤ2で動作し、IPについては何も知りません
したがって、ホストは、どのMACアドレスを宛先として使用するかを把握するために、サブネットマスクが必要です
ピアが同じサブネット内にある場合、定義上はオンリンクであると見なされます
サブネット外のピアの場合、イーサネットフレームはゲートウェイのMACを宛先として持つことになります
(これはデフォルトの設定に適用されます。いくつかの特殊なスノーフレークネットワークはこれを変更します – 例えば、ほとんどのオペレーティングシステムは、追加のサブネットのために余分な「オンリンク」ルートを追加することを許可しています; 逆に、いくつかのスイッチは、「オンリンク」トラフィックでさえゲートウェイを強制的に通過させるように、ARP応答を偽装するように構成されているかもしれません)
79 user1686 2017-03-22
宛先アドレスが別のサブネットにある場合、コンピュータはどのようにして知ることができますか?
ローカルのアドレスとサブネットマスクを確認します
いくつかの例をチェックしてみましょう
私のコンピュータのIPが192.168.0.1
でマスクが255.0.0.0
の場合、192.0.0.0
から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
はルータを経由して到達しなければなりません
32 jcbermu 2017-03-22
IPについて明らかでないことは、すべてのIPデバイスはそれ自体がルータであるということです
これは通常のPCでは “route print “というコマンドで確認することができます。あなたは2つのネットワークに接続されています: あなたのローカルイーサネットまたはwifiセグメントと、ローカルホストネットワークです。すべてのパケットは、どちらのネットワークに置くかの決定を受ける必要があります
これは、あなたのコンピュータを2つのネットワーク上に置く場合、より明らかになります。今、あなたは間違いなくパケットを送信するネットワークを決定するためにサブネットマスクが必要です
多くの人は、単一のネットワーク接続を持つPCが間違って設定されたサブマスクで動作する可能性があることを誤って発見するでしょう
12 pjc50 2017-03-22
ここの他の回答のいくつかで言及されているのを見ましたが、もっと明確にしてもいいと思います。複数のネットワークインターフェースを持つコンピュータでは、サブネットマスクは、自動的に宛先IPアドレスに基づいて、どの物理インターフェースにIPトラフィックを送信するかを決定するために使用されることがあります
あるインターフェイスに接続されたLAN上のデバイスにパケットを送る場合、どのインターフェイスにパケットを送るかを知るために(明示的にルートを設定していない場合)、コンピュータはインターフェイスを調べて、subnet_mask & destination_ip == subnet_mask & interface_ipかどうかを確認することができます(&
ではbitwis-andの意味であり、==
では平等性を主張することを意味する)、一致するものがあれば、そのインターフェースを選択する
そうすれば、例えば
- 192.168.1.42/24のインターフェースA
- 10.0.0.0.15/24のインターフェースB
- 192.168.2.97/24のインターフェイスC
そして、192.168.2.123にパケットを送信し、ルートを設定していない場合、255.255.255.255.0 & 192.168.2.123 == 255.255.255.255.0 & 192.168.2.97のため、インターフェイスCを使用すべきであると判断できます
これは、サブネットマスクが知られていなければ不可能なので、データを送信するIPアドレスごとにルートを設定しなければなりません
7 Jason C 2017-03-23
TCP/IPはあなたが提案するように設計されているかもしれません – リーフノードはすべてのものをルータに送信し、それは送信者と同じサブネット上にあるかもしれないターゲットに転送します
しかし、これは2つの理由から最適設計とは言えないでしょう
それはより多くの帯域幅を使用しています: 同じサブネット上のデバイス間のすべてのパケットは、2回送信する必要があります: 一度送信者からルータに, そして再びルータから受信機に.ルータもネットワークスイッチであるネットワーク上で, これは実際には余分な帯域幅ではありません, それはとにかくスイッチを通過しようとしていたので.しかし、すべてのネットワーク技術がそのように動作するわけではありません。元々のイーサネットの設計はバス技術であり、中央のスイッチや中継器はありません
ルータに負荷がかかります。ルータがスイッチでも、単純なレイヤ2のスイッチングではなく、レイヤ3のルーティング実装まで行かなければならないので、少し手間がかかります
TCP/IP の設計を具現化する一般的な哲学は、エンドノードはインテリジェントなデバイスであるため、彼らはいくつかの作業を行うことができると仮定されています。バックボーンルータのように完全なネットワークトポロジーを知る必要はありませんが、ローカル環境について十分に知っているので、初期のローカル対リモートのルーティングタスクの一部を引き受けることができます。この単純な初期ルーティングを実装するのに、それほどコードは必要ありません
さらに、ルーター以外のデバイスは、必ずしも1つのサブネット上にあるとは限りません。PCには簡単に複数のネットワークカードを入れることができます — 多くはイーサネットとWiFiの両方を持っています。そして、それらはそれぞれ異なるサブネットに接続することができ、どのネットワークカードを使用するかを決定するためにアドレスとサブネットマスクが使用されます。仮想マシンを実行している場合、仮想サブネットがホストシステムに接続されている可能性が高いです
6 Barmar 2017-03-24
ルーティングテーブルを見てみると(これはたまたま私のデスクトップマシンです)
ip route
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
route
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
or
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に使えます
5 Toby Speight 2017-03-22
さて, 私はサブネットマスクがネットワークをサブネットワークに分割するために使用される方法を理解していますが, 私の質問は, なぜネットワーク内のすべてのコンピュータは、ルータだけでなく、サブネットマスクを知る必要があるのでしょうか?
それ故に人々は時々、それが純粋にルータではないことを示唆するために、NAPT ルータ、または家庭用ルータ、またはコンシューマルータのような用語を使用します。ポイントを作るために、彼らはただのルーターではない、これらのデバイスはNAPTを行うことができます(ルーティングではありません)、そして、彼らは内蔵のスイッチを持っています(スイッチはルーティングではないブリッジングを行います – スイッチとブリッジの間の区別はそれほどよく定義されていないビットです – 1つは、スイッチが複数のポートと同じネットワーク媒体を持っているだろうのに対し、ブリッジはしばしば2つのポートを持っており、異なるネットワーク媒体(例えば、イーサネットと非イーサネット)を接続するだろうと言うかもしれません)。スイッチはブリッジングを行います
スイッチが「ルータ」から分離されていた場合、確かに、それはより明確になるでしょう…。IPアドレスが同じネットワーク上にある場合、パケットはに指示されたは、物理的にスイッチである次のものにケーブルを下って行き、最終的にネットワーク上のいくつかの他のコンピュータに運命づけられています(それが管理されたスイッチであり、あなたがスイッチに接続していた場合を除き、例えばtelnetやhttpとスイッチは独自のIPを持っていた)、パケットは別のネットワークのために運命づけられていないので、パケットは、ルータに到達しません。それが別のネットワーク上のコンピュータのために運命づけられているとき、それはもちろんまだスイッチに行きますが、その後、ルータに続いて、(スイッチはパケットをルータに指示し、スイッチに入ってくるパケットの宛先MACアドレスは、ルータのMACアドレスだっただろう)、ルートは、ルータの正しいインタフェースからそれをルーティングするだろう
一般的にルーターと呼ばれるものは、その中にスイッチが入っていて(プロフェッショナルスタイルのシスコやジュニパーのルーターではなく)、スイッチはその中にあります。しかし、それはスイッチの位置だけです。IPが同じネットワーク上にある場合、パケットの宛先はルーターではなくスイッチになります。そして、それはルータの中のスイッチにだけ行き、ルータには届きません
それぞれのコンピュータが物理的にワイヤーで接続されていれば、理解できる
どういう意味だ?ネットワーク上のすべてのコンピュータが物理的にワイヤで接続されている場合… スイッチやルータは必要ないと思います。あなたが説明していることは、オリジナルのイーサネットのように少し聞こえる…そして、それらがすべてワイヤで接続されている場合、それはおそらくそのような大規模なネットワークではないでしょう。そして、それはあなたが使用されているようなワイヤではありません。それは “タップ “でそれに沿って接続されたコンピュータを持っているだろう。なぜその文章を投げ込んだのかわからないわ
しかし、すべてのパケットはとにかくルーターを通過する必要があります
つまり、すべてのコンピュータがルーターなしで有線で接続されているという考えを脇に置いているということですね
そして、いや、あなたの家のセットアップでも、彼らは毎回ルータを通過しません。あなたの “ホームルーター “でも、それをインターネットボックスと呼んでください。彼らはそれのスイッチに行きます
私はネットワーク192.168.0.0.0/255.255.255.255.0、IP 192.168.0.1を持っているコンピュータを持っていることを言いましょう
そのコンピュータがサブネットワーク外のコンピュータに到達しようとすると、192.168.1.1と言うことができます、それは、ルータにメッセージを送信します
スイッチにそれからスイッチにそれはルーターに行きます
ルータは、IPがサブネットワークのIP範囲外にあることを識別し、サブネットワーク上でそれを送信するのではなく、それが接続されているネットワークにそれを送信します (おそらく別のルータ)
ルーターはどのようなネットワークインターフェースかを 識別しますそれは1つのインターフェイスから別のインターフェイスに送信します。1つの区別 – どのインターフェイスのほかに、ネットワークが直接接続されているかどうかになります。それは、スイッチに送信してからコンピュータに送信することができます。あるいは、コンピュータに送信することもできます。ネットワークが直接接続されていない場合は、別のルーターに送信することもできます
と最後の一文が
をルータに送信します
それにしても、急に書くのをやめようと思ったのか?
ルータは、IPがサブネットワークのIP範囲外にあることを識別し、サブネットワーク上でそれを送信するのではなく、それが接続されているネットワークにそれを送信します (おそらく別のルータ)
まあ、そんな風には言いませんが。ルーターのインターフェイスはそれぞれIP範囲が違います
しかし コンシューマルーターやホームルーターでは 何が起こるかというと 2つのインターフェースを持つルーターのようなものです 1つはあなたの側がそれに接続されたスイッチを持っていますそして複数のポートがスイッチのポートになっています
ルータの部分を考えてみると、これはサブネットワークの中にあって、これは外にあるというようなものではなく、潜在的に多くのネットワークがあるからです。それぞれのインターフェイスに一つずつあります。ルータはそれを元のネットワークに送り返すことはありません。なぜ最初にルータに届いたのかというと、スイッチがMACアドレスを見て、それがルータのMACアドレスではないことを知ったからです
パケットを送信したコンピュータは、パケットの宛先IPが自分のネットワーク上にあるか、同じネットワーク上にあるかをチェックし、それに基づいて関連するMACアドレスを選択します。コンピュータが同じネットワーク上にある場合はそのコンピュータのMACアドレスを選択します。または (コンピュータがルータの別のインターフェイス上にある場合), それは、ルータのMACアドレスになります. 私は、コンピュータがサブネットマスクを知る必要がある理由として、それがあなたの質問のタイトルにかなり直接的に答えるかもしれないと思います…TCP/IPシステムでは、それがどのように動作するか、コンピュータは関連するレイヤ2アドレスを選択します
2 barlop 2017-03-22
しかし、サブネットマスクは何のためにも必要ないのに、なぜ cuputer/device のために与えられるのでしょうか?- Orpedo Mar 22 at 13:45
コンピュータ/デバイスはIPブロードキャストアドレスを計算するためにサブネットマスクを使用します
プロミスモードではないIPインタフェースは、自分のIPアドレスだけでなく、IPブロードキャストアドレスにも応答するように設定されています
1 Joe Inwap 2017-03-27
これに答えるためだけにアカウントを作成しました。他の人がサブネットマスクの役割を複雑にしすぎていると思うので、これに答えるためだけにアカウントを作成しました
サブネットマスクは、ホストが通信するネットワーク上の他のマシンを決定します。ホストが私のサブネットの外側にある場合、私はゲートウェイを介してそのマシンと話そうとします。そのホストが私のサブネット内にある場合、私はそのホストと直接話をします(ゲートウェイは必要ありません)。さらに、ホストのサブネット外のマシンがそれと話そうとすると、それらのパケットは耳に入らず、すぐに落とされてしまいます
なぜそれがあなたに関係あるのですか?なぜなら、ネットマスクを使用しない場合、GoogleのDNSサーバ(8.8.8.8.8)と通信しようとすると、あなた(およびそれと通信する他のすべてのホスト)は、その物理アドレス(MACアドレス)を知る必要があるからです。これにより、あなたのコンピュータや他のすべてのホストは、あなたが通信するすべてのインターネットマシンのARPエントリを作成する必要があります。それはあなたのRAMを浪費し、マシンの物理アドレスが必要以上に遠くに渡されるので、すべてのネットワーキングを遅くするでしょう
-1 Szeraax 2017-03-24