Soru IPv4 adresinin bir sıfıra ayarlanmış olması geçerli midir?


Kullanıcının IP adresine göre kimlik doğrulaması yapan bir Java EE uygulamasında bir değişiklik üzerinde çalışıyorum. ServletRequest.getRemoteAddr. Bir veritabanında IP adres aralıklarını (FROM_IP ve TO_IP) saklarız ve sistem yalnızca bir kullanıcının IP adresi bir aralıkta düşerse kimlik doğrulaması yapar.

Şimdi, testçiler, FROM_IP ve TO_IP değerlerinde (herhangi bir yerde) 0 rakamına (sıfır) izin verilmemesi gerektiğini belirttiler. Bunun İnternet'e dönük bir uygulama olduğunu ve bu nedenle yalnızca genel IP adreslerini alacağımızı unutmayın.

Testçiler doğrulamayı önermekte haklı mı? Neden 167.23.0.1 - 167.23.255.255 gibi aralık değerinde sıfır değerine sahip olamıyoruz?


36
2017-07-15 23:00


Menşei


Ve işte zorunlu bağlantı Alt sayfalar nasıl çalışır? soru. - kce
Bir IPv6 adresi bir düzine 0 içerdiğinde, testçilerinizin bunu ortaya çıkarmasını şaşırtıcı buluyorum. Not; IP adresi alanınızın IPv6 adreslerini çok geç değilse gerçekten yapmalısınız. Kendinizi gelecekte baş ağrısı olacak. - Mark Henderson♦
127.0.0.1 iki sıfır var mı? - John Smith
Bu arada, kendi IP adresim gösteriliyor whatismyipaddress.com içinde 0 var (67.xx.0.xx) - Ritesh
Burada benzer bir soru: X.Y.Z.0 geçerli bir IP adresidir? - splattne


Cevaplar:


Hayır, tamamen yanlış.

Aslında bu geçerli bir IP adresidir: 192.168.24.0

Olduğu gibi 167.23.0.1.

IP adresinin noktalı bölümlere ayrılması, görüntülenmek için tamamen insan rahatlığıdır. Hatırlanması çok daha kolay 192.168.1.42 göre 3232235818.

Bilgisayarlar için önemli olan ayrılıktır (netmask). Tamamen 0 veya 1 olarak ayarlanmış adresin ana bilgisayar bölümüne sahip bir ana bilgisayar adresi olması geçerli değildir.

Yani, netemk, ana kısımda bazı bitlerin ayarlanacağı şekilde 192.168.24.0. Aşağıdaki hesaplara bakınız:


michael@challenger:~$ ipcalc 192.168.24.0/16
Address:   192.168.24.0         11000000.10101000. 00011000.00000000
Netmask:   255.255.0.0 = 16     11111111.11111111. 00000000.00000000
Wildcard:  0.0.255.255          00000000.00000000. 11111111.11111111
=>
Network:   192.168.0.0/16       11000000.10101000. 00000000.00000000
HostMin:   192.168.0.1          11000000.10101000. 00000000.00000001
HostMax:   192.168.255.254      11000000.10101000. 11111111.11111110
Broadcast: 192.168.255.255      11000000.10101000. 11111111.11111111
Hosts/Net: 65534                 Class C, Private Internet

Bu durumda, adres kısmının (sağ taraf) 2 bit kümesi vardır. Bu, 192.168.0.0/16 alt ağında geçerli bir ana bilgisayar adresidir.


michael@challenger:~$ ipcalc 192.168.24.255/16
Address:   192.168.24.255       11000000.10101000. 00011000.11111111
Netmask:   255.255.0.0 = 16     11111111.11111111. 00000000.00000000
Wildcard:  0.0.255.255          00000000.00000000. 11111111.11111111
=>
Network:   192.168.0.0/16       11000000.10101000. 00000000.00000000
HostMin:   192.168.0.1          11000000.10101000. 00000000.00000001
HostMax:   192.168.255.254      11000000.10101000. 11111111.11111110
Broadcast: 192.168.255.255      11000000.10101000. 11111111.11111111
Hosts/Net: 65534                 Class C, Private Internet

Bu durumda, adres kısmının 10 bit seti ve 6 bit unset'i vardır. Bu, aynı alt ağdaki başka bir geçerli ana bilgisayar adresidir.


michael@challenger:~$ ipcalc 192.168.24.0/24
Address:   192.168.24.0         11000000.10101000.00011000. 00000000
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111
=>
Network:   192.168.24.0/24      11000000.10101000.00011000. 00000000
HostMin:   192.168.24.1         11000000.10101000.00011000. 00000001
HostMax:   192.168.24.254       11000000.10101000.00011000. 11111110
Broadcast: 192.168.24.255       11000000.10101000.00011000. 11111111
Hosts/Net: 254                   Class C, Private Internet

Bu durumda, adres kısmının sıfır bit kümesi vardır. Bu, 192.168.24.0/24 ağında geçerli bir ana bilgisayar adresi değil.


70
2017-07-15 23:19



Ek bir nokta eklemek için doğru olan bu cevaba atlayacağım: IP adresleri için "noktalı dörtlü" biçim, kanonik ise tek gösterim biçimi değil. Komutu dene ping 2130706432veya ping 017700000001 (Evet, Windows'ta bile). Sonuçlarla kendinizi şaşırtabilirsiniz. - BMDan
1076000524 :) - jweyrich
Burada söylenenler gerçek olsa da, ne yazık ki, önek uzunluğuna bakılmaksızın, bir izleyen sıfırın (veya 255) kötü olduğunu düşünen çok sayıda kullanıcı arabirimi olması da söz konusudur. - Theobroma Cacao
192.168.0.257 yanlış, ama 192.168.257 doğru bir temsilidir 192.168.1.1 (olduğu gibi 192.11010305). Görmek inet_aton(3). - BMDan
@Raffael: subnet zero, aslında sınıf yönlendirme günlerinden bir borç oldu. Bir B Sınıfı ağınız olduğunda (129.97.0.0/16), sıfır alt ağı, 17 → X hepsi sıfır olarak ayarlanmış (X'in alt ağın uzunluğudur) olduğu herhangi bir ağ olacaktır. Böylece ağ 129.97.0.0/24 sıfır alt ağ olur ve ilk günlerde izin verilmez. Bugünlerde (minnetle) CIDR kullanıyoruz ve bunun için endişelenmeyin. - MikeyB


Yanlış anlamadığım sürece, testçileriniz yanlış öldü. Geçerli IP adreslerinin kesinlikle içinde 0 olabilir.


16
2017-07-15 23:20





Genel olarak: Hayır, adreste 0 bulunup bulunmadığı önemli değildir.

Ancak, testçilerinizin söylediği şeylerin bir gerçekliği vardır. Bazı durumlarda, eski veya bozuk ağ ekipmanı, son kullanımda 0 olan adreslerde doğru şekilde çalışmayacaktır. Bu eski sınıf yönlendirme kuralları nedeniyle. Sınıf yönlendirmesinde, ağ maskesini adresin ilk sekizliğinden öğrenebilirsiniz. Ekipmanın hala sınıf yönlendirme kurallarını takip etmesi durumunda, yanlış bir şekilde 200.100.1.0/16 gibi bir adresi ele alması muhtemeldir.


12
2017-07-16 00:22





Bir aralıkta 510 IP adresine ihtiyaç duyduğunuzu ve ağ adresinizin 192.1.1.0 olduğunu, ana bilgisayar IP adresinizin bir .0 IP adresi olduğu bir / 23 alt ağınız olduğunu, .0 adresiyle testçilerinizin yanlış olduğunu varsayalım bir ana bilgisayar adresidir. Eğer bir 24 ağınız varsa, yanlış olduğunu söylemek doğru olur.


3
2017-07-16 00:00





Çok basit bir yanıt vermek için: Bir ip adresindeki bir veya daha fazla sıfır, bu adresler ağ veya yayın adresi olmadıkça ana bilgisayar adresleri için mükemmel şekilde geçerlidir.

Ağ ve yayın adresleri geçerli ip adresleridir, sadece ana bilgisayarlar tarafından kullanılamazlar.


2
2017-07-16 02:11



X.Y.0.255'in yayın adresi nedir? - Random832
Cevabımı değiştirdim. Teşekkürler onu yakalamak. - joeqwerty
Bir ev sahibi için ağ adresini kullanabilir ve bunu yaptığınızda bir kez "leetness" ın ortak bir testi yapıldı. Neyse ki, bu yana, vogue iyi düşmüş beri. Benzer bir şekilde, RFC 3021 hem "yayın" kullanımını sağlar ve "ağ" adresleri, 31. sayfadaki terimlerle başlıyor, ancak sadece iki ana bilgisayarla uğraşırken şartlar tartışılmaz bir şekilde uygulanamaz. - BMDan