The History of the URL: Domain, Protocol, and Port
DNS was never ASCII only, and I&#x27;ve never seen DNS software make that assumption--that &quot;every piece of internet hardware from the last fourty years, including the Cisco and Juniper routers used to deliver this page to you [assumes ASCII]&quot;.<p>The essay links to RFC 1035 to support its claim of ASCII only, but RFC 1035 actually says is<p>&quot;However, future additions beyond current usage may need to use the full binary octet capabilities in names, so attempts to store domain names in 7-bit ASCII or use of special bytes to terminate labels, etc., should be avoided.&quot;<p>and<p>&quot;Although labels can contain any 8 bit values in octets that make up a label, it is strongly recommended that labels follow the preferred syntax described elsewhere in this memo, which is compatible with existing host naming conventions. &quot;<p>Indeed, some country TLD servers were (and maybe still are) supporting non-punycoded UTF-8 directly.<p>Lookups are supposed to be case-insensitive, but it&#x27;s always been verboten to actually modify the case of names in a DNS packet. A query reply is supposed to include the identical question name in an 8-bit clean manner. Indeed, some DNS clients will arbitrarily randomize the case of names to add an element of randomness to thwart DNS spoofing attacks. (If the answer isn&#x27;t the same 8-bit name, you ignore it just as if it came from a different IP address then you sent it to.) Unfortunately there exist enough broken DNS proxies out that software like Firefox or Chrome can&#x27;t do this without headaches, but I&#x27;ve never encountered such broken software myself (at least, not that I knew about). At worst I&#x27;ve seen query responses which lack the question portion altogether, and this can cause timeouts (rather than immediate failures) for software which enables anti-spoofing measures. But I&#x27;ve also seen responses which lack the same QID, too. There&#x27;s always broken software; the threshold for when you can ignore it is highly context dependent.