1. n-i-e

    No comment

    n-i-e
Changes in body
Source | HTML | Preview
@@ -1,130 +1,130 @@
#DNS
例えば「``www.example.com``」という文字列全体をFQDNと呼びますが、これに対して、ピリオドで区切られた「``www``」「``example``」「``com``」一つ一つの部分をラベルと呼びます。
字数は、__ラベルの長さは1字以上63字以内__(ラベル長0バイトはroot domainを表す)、__FQDNの長さは253字以内__です。255字ではなく253字なのには理由があり、これは[JPNICの「ドメイン名のしくみ」というページ](https://www.nic.ad.jp/ja/dom/system.html)の※1のところに解説があります。
ラベルに使える字種は、英字(A~Z)、数字(0~9)、ハイフン(-)です。ただし、ラベルの先頭文字と末尾文字は英字か数字でなければなりません。英字は大文字小文字を区別しませんので、``abc``と``ABC``は同じと見なされます。
-RFC的な話としては、RFC1034, RFC1035では先頭文字数字は不可でした。しかし、[RFC1123 Section 2.1](https://tools.ietf.org/html/rfc1123#section-2.1) ([Google翻訳](http://rfcs.web.fc2.com/rfc1123.html))で先頭文字数字が解禁され、``7andi.jp``などのドメイン名が登録されて使われています。
+RFC的な話としては、RFC1034, RFC1035では先頭文字数字は不可でした。しかし、[RFC1123 Section 2.1](https://tools.ietf.org/html/rfc1123#section-2.1) ([Google翻訳](https://rfcs.web.fc2.com/rfc1123.html))で先頭文字数字が解禁され、``7andi.jp``などのドメイン名が登録されて使われています。
FQDNはこれにラベルの区切り文字ピリオド(.)が加わります。ピリオドはあくまでラベルの区切り文字という位置づけのため、FQDNでピリオドを2連続させることはできません(「``www..example.com``」は不可。)
###リファレンス
DOMAIN NAMES - CONCEPTS AND FACILITIES
-https://tools.ietf.org/html/rfc1034 ([Google翻訳](http://rfcs.web.fc2.com/rfc1034.html))
+https://tools.ietf.org/html/rfc1034 ([Google翻訳](https://rfcs.web.fc2.com/rfc1034.html))
DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
-https://tools.ietf.org/html/rfc1035 ([Google翻訳](http://rfcs.web.fc2.com/rfc1035.html))
+https://tools.ietf.org/html/rfc1035 ([Google翻訳](https://rfcs.web.fc2.com/rfc1035.html))
Clarifications to the DNS Specification
-https://tools.ietf.org/html/rfc2181 ([Google翻訳](http://rfcs.web.fc2.com/rfc2181.html))
+https://tools.ietf.org/html/rfc2181 ([Google翻訳](https://rfcs.web.fc2.com/rfc2181.html))
Domain Name System (DNS) Case Insensitivity Clarification
-https://tools.ietf.org/html/rfc4343 ([Google翻訳](http://rfcs.web.fc2.com/rfc4343.html))
+https://tools.ietf.org/html/rfc4343 ([Google翻訳](https://rfcs.web.fc2.com/rfc4343.html))
JPNIC
ドメイン名のしくみ
https://www.nic.ad.jp/ja/dom/system.html
#LLMNR
LLMNRの字数・字種制限はDNSと同じです。
###リファレンス
Link-Local Multicast Name Resolution (LLMNR)
-https://tools.ietf.org/html/rfc4795 ([Google翻訳](http://rfcs.web.fc2.com/rfc4795.html))
+https://tools.ietf.org/html/rfc4795 ([Google翻訳](https://rfcs.web.fc2.com/rfc4795.html))
#NetBIOS
-NetBIOSのRFCとしては[RFC1001](https://tools.ietf.org/html/rfc1001) ([Google翻訳](http://rfcs.web.fc2.com/rfc1001.html)) と[RFC1002](https://tools.ietf.org/html/rfc1002) ([Google翻訳](http://rfcs.web.fc2.com/rfc1002.html)) がありますが、NetBIOS名の字種・字数仕様は詳述されておらず、16バイトとしか書いてありません。
+NetBIOSのRFCとしては[RFC1001](https://tools.ietf.org/html/rfc1001) ([Google翻訳](https://rfcs.web.fc2.com/rfc1001.html)) と[RFC1002](https://tools.ietf.org/html/rfc1002) ([Google翻訳](https://rfcs.web.fc2.com/rfc1002.html)) がありますが、NetBIOS名の字種・字数仕様は詳述されておらず、16バイトとしか書いてありません。
他の文献によると、最後の1バイトは特別な意味を持つため、NetBIOS名に使えるのは__15字まで__です(ここはIBMの実装とMicrosoftの実装で違うようですが、2017年時点でIBMの実装に触れる機会は少ないと思うので、気にしなくてよいでしょう)。
字種に関しては、英大文字小文字の区別はなく、英小文字は自動的に英大文字に変換されます。記号はかなりフリーダムで、不具合を恐れなければ大抵の文字が設定可能なようです。手元のWindows 10で試してみたところ、日本語やUTF-8絵文字までもがNetBIOS名に設定できました。日本語漢字は7文字まで、絵文字は15文字まで入ります。世の中どうなっているんでしょうか。
###リファレンス
NetBIOS サフィックス (NetBIOS 名の 16 番目の文字)
https://support.microsoft.com/ja-jp/help/163409/netbios-suffixes-16th-character-of-the-netbios-name
#/etc/hosts
Ubuntu 16.04LTSで実験したところ、/etc/hostsの字数・字種はかなりフリーダムのようです。
300字のホスト名を登録したら通りました。
```bash
$ ping host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990
PING host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990 (192.168.0.1) 56(84) bytes of data.
64 bytes from host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990 (192.168.0.1): icmp_seq=1 ttl=64 time=16.0 ms
64 bytes from host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990 (192.168.0.1): icmp_seq=2 ttl=64 time=7.75 ms
64 bytes from host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990 (192.168.0.1): icmp_seq=3 ttl=64 time=7.94 ms
64 bytes from host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990 (192.168.0.1): icmp_seq=4 ttl=64 time=2.73 ms
```
また、UTF-8で入力すれば、日本語のホスト名も通ります。
```bash
$ ping 日本語ホスト名
PING 日本語ホスト名 (192.168.0.1) 56(84) bytes of data.
64 bytes from 日本語ホスト名 (192.168.0.1): icmp_seq=1 ttl=64 time=6.97 ms
64 bytes from 日本語ホスト名 (192.168.0.1): icmp_seq=2 ttl=64 time=3.36 ms
64 bytes from 日本語ホスト名 (192.168.0.1): icmp_seq=3 ttl=64 time=8.10 ms
```
大文字・小文字の区別はありません。
#hostnameコマンド
これもUbuntu 16.04LTSで実験しました。hostnameコマンドで設定できるホスト名は、/etc/hostsほどフリーダムではないようです。
アンダースコア(_)やプラス記号(+)は通りません。
```bash
$ sudo hostname host_name
hostname: the specified hostname is invalid
$ sudo hostname host+name
hostname: the specified hostname is invalid
```
日本語もダメです。
```bash
$ hostname 日本語
hostname: the specified hostname is invalid
```
先頭文字は数字でも大丈夫です。
```bash
$ sudo hostname 0hostname
$ hostname
0hostname
```
ただし、末尾文字にハイフンはダメです。これはDNSと同じです。
```bash
$ sudo hostname hostname-
hostname: the specified hostname is invalid
```
字数のほうは、63字が上限です。これはDNSのラベルの字数制限と同じです。
```bash
$ sudo hostname host0000011111111111222222222233333333334444444444555555555566666
hostname: name too long
$ sudo hostname host000001111111111122222222223333333333444444444455555555556666
$ hostname
host000001111111111122222222223333333333444444444455555555556666
```
全体として、DNSの字数字種制限に合わせてあるようです。
#考察
今からホスト名をつける場合は、字種はDNSの字種制限に準拠(ただし全部数字は勧めません)、字数は15字以内を推奨します。それ以外のホスト名を既につけてしまった場合は。。。幸運を祈ります。