Приснится же такое
2015-07-29 12:24Снилось мне, что я участвую в расследовании какой-то сетевой атаки. И то ли нам слали, то ли мы запрашивали что-то с IP-адресов, каких в принципе не может быть. И эти запросы проходили и давали какие-то нежелательные последствия.
Ну и ключевой инсайт, после которого картинка сложилась, был в духе «123.456.78.90 не может быть IP-адресом, значит, это DNS-имя».
Забавно, что наяву две разные версии спецификации URI разрешают эту неоднозначность грамматики по-разному. RFC 2369 §3.2.2:
[…]The rightmost domain label of a fully qualified domain name will never start with a digit, thus syntactically distinguishing domain names from IPv4 addresses[…]
The syntax rule for host is ambiguous because it does not completely distinguish between an IPv4address and a reg-name. In order to disambiguate the syntax, we apply the “first-match-wins” algorithm: If host matches the rule for IPv4address, then it should be considered an IPv4 address literal and not a reg-name.
и ниже:
IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255
Таким образом, по более новому RFC 123.456.78.90 — это действительно доменное имя (а в старом — таки IPv4-адрес).