Neden 127.1'e ping atabilirim?


11

IPv6'nın ardışık sıfırların atlanmasına izin verdiğini biliyorum. Peki IPv4'e ne dersiniz? İnternette Wikipedia ve RFC 791 - İnternet Protokolü de dahil olmak üzere herhangi bir referans bulamadım . Bu belge , bir IPv4 adresinde "Baştaki sıfırların atlanabileceğini" gösteriyor ('atlandı' terimini arayın). Yeterince spesifik değil.

Bu kabuk oturumuna göz atın:

[~]$ ping -c 1 127.1
PING 127.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.040 ms

--- 127.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.040/0.040/0.040/0.000 ms
[~]$ ping -c 1 127.0.1
PING 127.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.044 ms

--- 127.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.044/0.044/0.044/0.000 ms
[~]$ ssh 127.1 :
The authenticity of host '127.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is 04:48:fa:f2:ef:95:7c:35:46:39:2e:d3:89:dd:cd:87.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.1' (ECDSA) to the list of known hosts.
alex@127.1's password: 

Açıkça, hem ping hem de ssh, 127.1 ve 127.0.1'in 127.0.0.1 ile aynı olduğunu anlamaktadır. Bu nerede belirtilir?


7
Bu Yığın Taşması gönderisine bağlanan bu kılavuz sayfası sokaktan yukarı doğru olabilir.
nerdwaller

1
Bu eski bir gösterim stili, ama evet: işe yarıyor :-)
Sander Steffann

1
@nerdwaller: Lütfen cevap olarak gönderin. (Nedenini ping 0.0.0.0ping 0
anlarsanız

Yanıtlar:


14

Yaklaşık bir yıl önce benzer bir şey soran bir Stack Overflow yazısı var ( bu yazı ).

Bunun ana nedeni, inet_aton()( man sayfası ) sekizlilerin ikili adrese nasıl dönüştürülmesidir.

abcd

Dört sayısal bölümden her biri adresin bir baytını belirtir; ikili adres üretmek için baytlar soldan sağa doğru atanır.

ABC

A ve b kısımları ikili adresin ilk iki baytını belirtir. Bölüm c, ikili adresin en sağdaki iki baytını tanımlayan 16 bitlik bir değer olarak yorumlanır. Bu gösterim B Sınıfı ağ adreslerini belirtmek (modası geçmiş) için uygundur.

ab

Bölüm A, ikili adresin ilk baytını belirtir. Bölüm b, ikili adresin en sağdaki üç baytını tanımlayan 24 bitlik bir değer olarak yorumlanır. Bu gösterim, Sınıf C ağ adreslerinin belirtilmesi (modası geçmiş) için uygundur.

bir

A değeri, herhangi bir bayt yeniden düzenlemesi olmadan doğrudan ikili adrese depolanan 32 bitlik bir değer olarak yorumlanır.

Bu POSIX tarafından tanımlanmamıştır. Ancak - oldukça yaygın bir şekilde kullanılabilir.


1
Harika, ayrıca Stack Overflow'da bağlandığınız yayını da kontrol ettim. Farklı sayı sistemlerinin nasıl kullanılabileceğine dair harika bilgiler vardı. @grawity Wikipedia , 0.0.0.0/8'in mevcut ağ olduğunu söylüyor. 0.0.0.0/32 mevcut ana bilgisayar olması gerektiğini ve ping sadece / 32 "ağlar" beklediğini varsayalım. Yine de açık bir referans bulamadım.
Alexandre de Verteuil

2
@AlexandredeVerteuil: ping ağları değil ana bilgisayarları bekliyor ... yani evet, / 32 IPv4 için.
user1686

3

Klasik adreslemenin eski günlerinden kalma bir kalıntı. 127.1127, ev sahibi anlamına gelir 1. (Ve evet, 127.257yasaldır çünkü ağ 127256'dan fazla ana bilgisayara sahip olabilir.


127.257 özellikle 127.0.1.1, Windows 8.0 üzerinde çalışan eski KMS sunucu aktivatörü üzerinde gördüğüm bir adres
Paul Stelian
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.