127.1にpingできるのはなぜですか?


11

IPv6では連続するゼロを省略できることを知っています。しかし、IPv4はどうでしょうか?ウィキペディアやRFC 791 -Internet Protocol など、インターネット上でこれに関する言及は見つかりませんでした。このドキュメント は、IPv4アドレスで「先行ゼロは省略できる」ことを示唆しています(「省略」という用語を検索してください)。具体的ではない。

このシェルセッションを確認してください。

[~]$ 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: 

明らかに、pingとsshはどちらも127.1と127.0.1が127.0.0.1と同じであることを理解しています。これはどこに指定されていますか?


7
このStack Overflowの投稿にリンクされているこのmanページは、まさにあなたの路地にあるかもしれません。
nerdwaller 2013

1
それは古代の表記スタイルですが、はい:機能します:-)
Sander Steffann 2013

1
@nerdwaller:回答として投稿してください。(ボーナスポイントは、あなたが、なぜ把握場合ping 0.0.0.0またはping 0同じように動作します...)
user1686

回答:


14

約1年前のStack Overflowの投稿に似たような質問があります(この投稿)。

主な理由は、inet_aton()manページ)オクテットをバイナリアドレスに変換する方法です。

あいうえお

4つの数値部分はそれぞれ、アドレスのバイトを指定します。バイトは左から右の順に割り当てられ、バイナリアドレスが生成されます。

ABC

パートaとbは、バイナリアドレスの最初の2バイトを指定します。パートcは、バイナリアドレスの右端の2バイトを定義する16ビット値として解釈されます。この表記は、(旧式の)クラスBネットワークアドレスを指定するのに適しています。

ab

パートaは、バイナリアドレスの最初のバイトを指定します。パートbは、バイナリアドレスの右端の3バイトを定義する24ビット値として解釈されます。この表記は、(旧式の)クラスCネットワークアドレスを指定するのに適しています。

a

値aは、バイトを再配置せずにバイナリアドレスに直接格納される32ビット値として解釈されます。

これはPOSIX.anythingでは定義されていませんが、かなり広く利用可能です。


1
素晴らしかった。スタックオーバーフローでリンクした投稿もチェックした。さまざまな数のシステムをどのように使用できるかについて、すばらしい洞察がありました。@grawity Wikipediaによると、0.0.0.0 / 8 が現在のネットワークです。0.0.0.0/32が現在のホストである必要があり、pingは/ 32 "ネットワーク"のみを想定していると思います。明示的な参照は見つかりませんでした。
Alexandre de Verteuil 2013

2
@AlexandredeVerteuil:pingはネットワークではなくホストを期待ます...そうです、IPv4では/ 32です。
user1686 2013

3

昔ながらのクラスのアドレス指定の遺物です。127.1ネットワーク127、ホストを意味します1。(そして、127.257ネットワーク127は256を超えるホストを持つことができるので、はい、合法です。


127.257は特に127.0.1.1を意味します。Windows8.0で動作する古いKMSサーバーアクティベーターで実際に表示されるアドレスです
Paul Stelian
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.