Herkes onu RFC'ler, IP sınıfları ve benzeri ile aşırı karmaşıklaştırıyor. ping
Komutun IP girişini kullanıcı tarafından nasıl ayrıştırdığını görmek için birkaç test yapın.
> ping 1
Pinging 0.0.0.1 with 32 bytes of data:
> ping 1.2
Pinging 1.0.0.2 with 32 bytes of data:
> ping 1.2.3
Pinging 1.2.0.3 with 32 bytes of data:
> ping 1.2.3.4
Pinging 1.2.3.4 with 32 bytes of data:
> ping 1.2.3.4.5
Ping request could not find host 1.2.3.4.5. Please check the name and try again.
> ping 255
Pinging 0.0.0.255 with 32 bytes of data:
> ping 256
Pinging 0.0.1.0 with 32 bytes of data:
Gördüğünüz gibi, ping
komut (Windows'ta) farklı IP adres biçimlerini kullanmanızı sağlar. Bir IPv4 adresi şu şekilde dört bölüme (“noktalı”) ayrılabilir : A.B.C.D
ve ping
komut, varsayılanı 0
aşağıdaki gibi doldurarak bazılarını bırakmanıza izin verir :
1 part (ping A) : 0.0.0.A
2 parts (ping A.B) : A.0.0.B
3 parts (ping A.B.C) : A.B.0.C
4 parts (ping A.B.C.D) : A.B.C.D
Yalnızca tek bir parça tedarik ediyorsanız, 255'in altındaysa (bir oktet için maksimum), yukarıdaki gibi bir oktet gibi işlem görür, ancak 255'ten büyükse, o zaman dönüştürülür ve bir sonraki alana devirilir (yani, mod 256
).
Dörtten fazla parçanın çalışması gibi gözükmeyen birkaç vaka var (örneğin, ping'in google.com
IP'si ya 0.74.125.226.4
da için çalışmıyor 74.125.226.4.0
).
Onaltılık gösterimi hem noktalı dörtlü hem de düz formda da kullanabilirsiniz, ancak 0x
her bir oktete önceden bekleterek biçimlendirmeniz gerekir .
Bu nedenle, bir (IPv4) IP adresini temsil etmenin birçok yolu vardır. Düz veya noktalı-dört (veya noktalı-üçlü, noktalı-çift veya hatta noktalı-tek) formatı kullanabilir ve her biri için ondalık, sekizli ve onaltılık kullanabilirsiniz. Örneğin google.com
, aşağıdaki şekillerde ping yapabilirsiniz :
google.com
(alan adı)
74.125.226.4
(noktalı ondalık)
1249763844
(düz ondalık)
0112.0175.0342.0004
(noktalı sekizlik)
011237361004
(yassı sekizli)
0x4A.0x7D.0xE2.0x04
(noktalı altıgen)
0x4A7DE204
(düz altıgen)
74.0175.0xe2.4
(ಠ_ಠ)
(İkili gösterim desteği eklenmemiş olması çok şükür!)
Uygulama :
Sizin durumunuzda, ping 192.168.072
yukarıdaki tabloda ( A.B.0.C
) üçüncü biçimi kullanıyor , bu yüzden aslında ping yapıyorsunuz 192.168.0.072
. Ayrıca, son kısımda baştaki sıfır değerine sahip olduğunuz için, ondalık sayı 58 olan sekizlik olarak kabul edilir.
Gizem çözüldü.
Windows ping
komutunun girdi için çok çeşitli biçimlere izin vermesine ve standart olmayan biçimleri görüldüğü gibi yorumlamasına rağmen, bu biçimleri her yerde kullanabileceğiniz anlamına gelmez. Bazı programlar sizi noktalı dörtlü parçanın dört parçasını da sağlamaya zorlayabilir, diğerleri ondalık ve sekizli vb. Karıştırmaya ve eşleştirmeye izin vermeyebilir.
Ayrıca, IPv6 adresleri ayrıştırma mantığını ve giriş formatı kabul edilebilirliğini daha da karmaşıklaştırır.
Zeyilname :
syss , sayılardan birinde geçersiz bir karakter kullanırsanız (örneğin, an 8
veya 9
sekizli g
modda, veya altıgen modunda vb.) kullanırsanız ping
, bunu tanıyacak ve onu bir dize olarak (-al?) yorumlayacak kadar akıllı olduğunu belirtti. -ic?) Sayısal IP adresi yerine URL.
(Veri değerlerinin üssel olarak patlayan sayıda permütasyona uyum sağlamak için sözde “basit” kod yazmaya çalışan çok sayıda anevrizması ve kalp krizi geçiren biri olarak, tüm girdi değişkenlerinin doğru bir şekilde işlendiğini kabul ediyorum; durumda, en az 3 1 +3 2 +3 3 +3 4 = 120 varyasyon.)
Belirterek süre Yani, 010.020.030.040
ping 8.16.24.32
beklendiği gibi yoldan geçen 010.020.030.080
etmek ping
bir URL yerine IP adresi benzeri gibi muamele edilecektir foo.bar.baz.com
olabilir (ama ne yazık ki değil) mevcut. Başka bir deyişle, 010
alt 020
etki alanına, etki alanı üzerindeki alt etki 030
alanında en üst düzey etki alanında ping işlemi yapmaya çalışır 080
. Ancak, 080
geçerli bir TLD değil (gibi .com
, .net
ve bunların arkadaşları), bağlantısı şu ilk adımda başarısız olur.
Aynı şey 090.010.010.010
, geçersiz karakterin farklı bir sayı grubunun olduğu yerde olur . Aynı şekilde, 0xf.0xf.0xf.0xf
ping 15.15.15.15
, ancak 0xh1.0x1.0xg0.0f
başarısız olur.
Pekala, sanırım birden fazla bazda akıcı olmamanın sebebi bu.
Her zaman 4 noktalı dörtlü (“40q”? “Dörtlü dört”? “Cutie-q”?) Adreslerini kullandığınızdan emin olmak muhtemelen daha kolay ve daha güvenlidir.
Öyleyse dışarı çık ve bazı sayı tabanlarını öğren . Partilerin yaşamını gösterip, onun hayatını gösterebileceksiniz ve dedikleri gibi, 10 tip insan var: ikili olan ve olmayanlar.
IPv6 adreslerini bile düşünmeyelim ; Bence 111 mühürden biri !!!