サブネットマスクを使用してネットワークをサブネットワークに分割する方法は理解できますが、ネットワーク内のすべてのコンピュータがルーターだけでなくサブネットマスクを認識する必要があるのはなぜですか。
各コンピュータがワイヤで物理的に互いに接続されていても、すべてのパケットがとにかくルータを通過する必要がある場合、私はそれを理解できました。
IPアドレスが192.168.0.0/255.255.255.0
のネットワーク192.168.0.1
にコンピューターがあるとしましょう。
そのコンピュータがサブネットワーク外のコンピュータにアクセスしようとした場合、192.168.1.1
とします。メッセージはルーターに送信されます。ルーターは、IPがサブネットワークのIP範囲外にあることを識別します。ネットワーク、それはそれが接続されているネットワーク(おそらく他のルータ)にそれを送信します。
元の仮定は完全に正しいわけではありません。 「ルーター」と呼ばれるものは、2つのデバイスを1つにまとめたものです。つまり、内部的に複数ポートイーサネットスイッチに接続された2ポートルーターです。 (例は 図 です。)
つまり、コンピューターはレイヤー2に直接接続され、相互にパケットを送信できるなしルーターコアを通過–スイッチチップによってポート間で単純に中継されます。 (ルーターには、スイッチに独自の「ポート」があります。)
したがって、Wiresharkを使用してパケットを見ると、互いのMACアドレスを直接使用していることがわかりますが、「外部」パケットには常にルーターのMACが宛先としてあります。
(この種の質問の通常の原因である、ほとんどの家庭で見られる典型的な「無線ルーター」について話していると仮定します。より大きなネットワークでは、separateサブネットごとに1つのポートと、いくつかの個別のスイッチ(おそらく、フロア/部屋ごとに1つと1つのマスター)、およびそれらのスイッチに接続された数十台のコンピューターを備えたルーター)
Wi-Fiネットワークでもほぼ同じですが、「スイッチ」が「アクセスポイント」とも呼ばれる「ワイヤレスブリッジ」に置き換えられます。どちらの場合も、接続されたコンピューターは、レイヤー2でパケットを直接直接送信できますwithout。
コメント:
私がルーターを述べたとき、私は実際にスイッチを意味しました。私の間違い。私の要点は、サブネットワーク内の各コンピューターが相互に接続されているのではなく、スイッチに接続されていることです。スイッチはパッケージを正しい宛先に渡すことができます。イーサネットフレームにはサブネットマスクが含まれていません。これは、スイッチがすでにこの知識を持っているため、正しいスイッチングを行うために必要ではないためです。
これもまた間違っています。スイッチにはこの知識がありません。スイッチングコアはレイヤー2で動作し、IPについて何も何も知らない–「宛先MACアドレス」フィールドのみに基づいてイーサネットフレームを転送します。
したがって、ホストは宛先として使用するMACアドレスを特定するためにサブネットマスクが必要です。
ピアが同じサブネット内にある場合、定義によりon-linkであると想定されます。したがって、イーサネットフレームには宛先としてピアのMACがあります。
ピアoutsideサブネットの場合、イーサネットフレームにはgateway'sMACがあります宛先として。
(これはデフォルトの構成に適用されます。一部の特別なスノーフレークネットワークはこれを変更します。たとえば、ほとんどのオペレーティングシステムは追加のサブネットに余分な「オンリンク」ルートを追加できます;逆に、一部のスイッチはスプーフィングを構成できます「オンリンク」トラフィックでさえゲートウェイを強制的に通過させるようなARP応答。)
宛先アドレスが別のサブネット上の同じサブネットにあるかどうか、コンピュータはどのようにしてわかりますか?
ローカルアドレスとサブネットマスクを確認します。
いくつか例を確認しましょう。
私のコンピュータのIPアドレスが192.168.0.1
で、マスクが255.0.0.0
の場合、192.0.0.0
から192.255.255.255
までのアドレスはすべて同じサブネット内にあります。他のすべてのコンピュータへのパケットはルータを通過する必要はなく、直接送信することができます。宛先コンピュータのMACアドレスを取得するためにARPパケットを送信してから、パケットを送信します。
しかし、私のコンピュータのIPアドレスが192.168.0.1
で、マスクが255.255.255.128
の場合、同じサブネット内のコンピュータはIPアドレス192.168.0.0
から192.168.0.127
のみです。それらは直接届くことができます(ARPを送ってください、MACアドレスを見つけるなど)。他のアドレス、たとえば192.168.0.200
はルーターを通過して到達する必要があります。
IPについて不明瞭な点は、すべてのIPデバイス自体がルーターであるということです。
これは、コマンド "route print"を使って通常のPCで見ることができます。あなたは2つのネットワークに接続しています:あなたのローカルイーサネットまたはwifiセグメントとlocalhostネットワークです。すべてのパケットは、どのネットワークにパケットを送信するかに関する決定を受ける必要があります。
これは、「パブリック」と「プライベート」という2つのネットワークにコンピュータを接続した場合に、より明白になります。どのネットワークにパケットを送信するかを決めるために、サブネットマスクが必要になりました。
多くの人が誤って、単一のネットワーク接続を持つPCが間違って設定されたサブマスクで動作する可能性があることを発見するでしょう。
私はここで他の答えのいくつかで言及されているのを見ますが、私はそれがより明確であると思うと思います:サブネットマスクは自動的に送信する物理インターフェースを決定するために使用されるかもしれません宛先IPアドレスに基づくIPトラフィック。
どちらかのインターフェースに接続されたLAN上のデバイスにパケットを送信する場合、どのインターフェースに送信するかを知るために(明示的に経路を構成していない場合)、コンピューターはインターフェースを調べて確認します。 ifsubnet_mask&destination_ip == subnet_mask&interface_ip(&
によって bitwise-and によって、そして==
によって等価を意味します)一致するものがあれば、そのインタフェースを選択してください。
あなたが持っているならそのように、例えば。
そして、あなたは192.168.2.123にパケットを送り、ルートが設定されていないのであれば、255.255.255.0&192.168.2.123 == 255.255.255.0&という理由でインターフェースCを使うべきだと判断できます。 192.168.2.97。
サブネットマスクがわからない場合、これは不可能です。そのため、データを送信したIPアドレスごとにルートを設定する必要があります。
TCP/IPはあなたが提案するように設計されているかもしれません - リーフノードはすべてをルーターに送信し、それはターゲットに送信するでしょう、そしてそれは送信者と同じサブネット上にあるかもしれません。
しかし、これは最適な設計ではありません。2つの理由があります。
より多くの帯域幅を使用します。同じサブネット上のデバイス間のすべてのパケットを2回送信する必要があります。1回は送信者からルータへ、もう1回はルータから受信者へです。ルータがネットワークスイッチでもあるネットワークでは、スイッチを通過することになるので、これは実際には余分な帯域幅ではありません。しかし、すべてのネットワーク技術がそのように機能するわけではありません。当初のイーサネット設計は、中央のスイッチやリピータを持たないバス技術でした。
それはルータにより多くの負荷をかけます。ルータがスイッチでもあるとしても、それはより単純なレイヤ2スイッチングよりもむしろレイヤ3ルーティング実装に上がっているのでそれはもう少し仕事です。
TCP/IPの設計を具体化する一般哲学は、エンドノードがインテリジェントデバイスであるということです。そのため、それらはいくつかの仕事をすることができると思われます。バックボーンルーターのように完全なネットワークトポロジを知る必要はありませんが、初期のローカル対リモートルーティングタスクを実行するのに十分なローカル環境については十分に知っています。この単純な初期ルーティングを実装するのに多くのコードは必要ありません。
さらに、非ルーターデバイスは必ずしも1つのサブネット上だけにあるとは限りません。あなたは簡単にPCに複数のネットワークカードを持つことができます - 多くはイーサネットとWiFiの両方を持っています。そしてそれらのそれぞれを異なるサブネットに接続することができ、アドレスとサブネットマスクを使用してどのネットワークカードを使用するかを決定します。仮想マシンを実行している場合は、それらをホストシステムに接続する仮想サブネットがある可能性があります。
ルーティングテーブルを見ると(これは私のデスクトップマシンです):
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強制転送 に使用できます。
さて、私はサブネットマスクを使ってネットワークをサブネットワークに分割する方法を理解していますが、ネットワーク内のすべてのコンピュータがルーターだけでなくサブネットマスクを知る必要があるのはなぜなのでしょうか。
ルーターとして参照するデバイスは、通常ルーターだけではありません。したがって、NAPTルーター、ホームルーター、またはコンシューマールーターなどの用語を使用して、純粋にルーターではないことを示すことがあります。要は、ルータではないということです。これらのデバイスにはNAPT(ルーティングではない)を実行できます。また、スイッチが組み込まれています(スイッチはブリッジで、ルーティングではありません - スイッチとブリッジの違いブリッジには2つのポートがあり、異なるネットワーク媒体(イーサネットと非イーサネットなど)を接続することが多いのに対して、スイッチには複数のポートと同じネットワーク媒体があることがよくあります。スイッチはブリッジングを行います。
スイッチが「ルーター」から切り離されている場合は、実際にはもっと明確になります。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アドレス。
しかしそれが何のためにもそれを必要としないとき、なぜサブネットマスクはそれからcuputer/deviceに与えられますか? - オルペド3月22日13時45分
コンピュータ/デバイスはIPブロードキャストアドレスを計算するためにサブネットマスクを使用します。
無差別モードになっていないIPインタフェースは、IPブロードキャストアドレスとそれ自身のIPアドレスに応答するように設定されています。