Yikes! Any byte value is allowed even . and \0? That's quite a surprise. It also means that the common foo.bar.com DNS notation is inadequate; you'd have to carefully define an escaping scheme so that any hostname can be written unambiguously.
What happens when one of these odd hostnames needs to be encoded in a URI? It is not enough to say 'just %-encode it' because that does not address the issue of '.' contained in a component.