ホスト名を数値に設定して実行すると、hostname
次のようになります。
6592
しかし、実行すると、次のようなping 6592
結果が得られます。
connect: Invalid argument
関連確認しましたウィキペディアページ、そのようなホスト名が許可されていることが示されています(IIUC)。私は何を見逃していますか?
答え1
RFCが言う内容は、実際にはここでは重要ではありません。 RFC は DNS レベルで発生することを指定しますが、最初に ping が DNS クエリを実行しない限り意味がありません。 pingがすべて数値で構成されたパラメータを受信すると、それをIPアドレスとして解釈します。
IPv4アドレス技術的には32ビット数です。それらはほとんど常に次のように書かれています。ドットで区切られた10進表記、例えば、いわゆる「点四辺形」です127.0.0.1
。ただし、2130706433
10進数または16進数で1桁の数字で書くこともできます0x7f000001
。
$ ping 2130706433 # 127*2^24 + 1
PING 2130706433 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.027 ms
$ ping 0.0.25.192
connect: Invalid argument
0.0.0.0/8の範囲のアドレスは次のとおりです。予約済み放送でソースアドレスとして使用されます。彼らにパケットを送ることができないので、がconnect(2)
返されますEINVAL
。
ほとんどのping実装を含む多くのプログラムには、DNSルックアップを強制するオプションはありません。すべての数字で構成されたサブドメインでローカルネットワークを作成し、点線の四辺形のように見える有効なホスト名で終わると、同様の問題に直面します。
ローカルネットワークに名前がある場合はping 6592.mynetwork
使用できます。しかし、すぐにドメイン名を省略したいので、同様の問題に直面する可能性があります。ちょうど流れに従って始めに手紙を書いてください。