ネットマスクは、IP アドレスのビットマスクと考えることができます。
その場合(address1 & netmask) == (address2 & netmask)
、2 つの IP アドレスは同じサブネット上にあると見なされます。(この式はさまざまな方法で記述できます...)
ネットマスクは、ネットワークを「仮想的に」分割する方法にすぎません。ネットマスクは ip ヘッダーの一部ではなく、ネットワーク上で送信されません。デバイス自体を除いて、ネットワーク上のデバイスのネットマスクは誰も知りません。デバイスの tcp スタック内で内部的に使用され、基本的なルーティングの決定を行います。サブネットを定義する方法は他にもあることに注意してください。ネットマスクを使用しない場合もありますが、同じ結果が得られます: 複数のデバイスを「仮想」ネットワークにグループ化します。
デバイスが接続されているルーターは、この同じデバイスのネットマスクの定義が異なる場合さえあります。ルーターがパケットを正しくルーティングしている限り、それは問題ではありません。ネットマスクは、主に既知のアドレスを自動的に計算するために使用されます。たとえば、udp ブロードキャスト パケットに使用されるブロードキャスト アドレスは、デバイスの IP アドレスとそのネットマスクから計算されます。
あなたの特定のケースでは:
物理的なルーターはありませんが、コンピューターはルーターです (パケットを内部的にさまざまなネットワーク インターフェイスにルーティングします)。お使いのコンピュータには、特定のパケットがどの発信インターフェイスを使用する必要があるかを示すルーティング テーブルが含まれています(Windows では try route print
、Linux では root として try route
)。
通常、ルーティング テーブルは、ターゲット デバイスと同じサブネット上にあるインターフェイスにパケットが送信されるように設定されます。コンピュータは、各インターフェイスで上記の論理式を使用して、宛先がこのインターフェイスと同じサブネット上にあるかどうかを判断します。式が true の場合、パケットは送信されます。各エントリには、複数のルートが可能な場合に最適と思われるインターフェイスを選択できるパラメーター (メトリックと呼ばれる) があります。
ルーティング テーブルは動的であることに注意してください。特定のルートを追加するために手動で変更できます(たとえば、特定のデバイスがインターフェイス経由で到達可能であることがわかっているが、そのデバイスがこのインターフェイス ip とは関係のない IP アドレスを持っている場合)。アドレス/ネットマスク) . また、ルーティング情報をブロードキャストするローカル ネットワークで使用されるいくつかのプロトコル(arp、dhcp...)もあります。ルーティング情報はシステムによって自動的に処理され、ルーティング テーブルが変更されます。