4
簡単な質問は私によく戸惑っています。IPアドレス(v4)は192.168.0.1/30と192.168.0.2/24の2つあります。同じネットワークセグメント2つのIPアドレスが同じネットワークセグメントに属しているかどうかを確認する方法
これはどのように判断されますか?
簡単な質問は私によく戸惑っています。IPアドレス(v4)は192.168.0.1/30と192.168.0.2/24の2つあります。同じネットワークセグメント2つのIPアドレスが同じネットワークセグメントに属しているかどうかを確認する方法
これはどのように判断されますか?
/24
は、アドレスのネットワーク部分を構成するビットの数を表します。この場合、24(または30)です。
最小のネットワーク部分のみを使用してIPアドレスをANDする場合、同一のネットワークには同じ値が含まれます。例えば
は、ここではCの実装(未テスト)である:
unsigned int ip1 = (192<<24) | (168<<16) | (0<<8) | (1);
unsigned int ip2 = (192<<24) | (168<<16) | (0<<8) | (2);
unsigned int nm1 = (-1) << (32 - 24);
ip1 &= nm1; // Note: we use nm1 as its the smallest number of bits in the network
ip2 &= nm1;
if (ip1 == ip2) { } // Same network
は技術的には、あなたの/ 30および/ 24は異なるネットワークあり、そして異なるアドレス(すなわち、到達するためにルータを使用します。/24はIPの1-254にルータを使用しませんが、/ 30はこれらのアドレスのほとんどにルータを使用します)。ただし、同じアドレス空間で重複します。
答えていただきありがとうございます。つまり、(ip1&subnet1の結果)==(ip2&subnet2の結果)なら、最終結果はsubnet1 == subnet2であってもOKです。私は正しい? – danspeed