3.1 Scheme Component
Just as there are many different methods of access to resources, there
are a variety of schemes for identifying such resources. The URI syntax
consists of a sequence of components separated by reserved characters, with
the first component defining the semantics for the remainder of the URI
string.
Scheme names consist of a sequence of characters beginning with a lower
case letter and followed by any combination of lower case letters, digits,
plus ("+"), period ("."), or hyphen ("-"). For resiliency, programs
interpreting URI should treat upper case letters as equivalent to lower case
in scheme names (e.g., allow "HTTP" as well as "http").
[...]
6 URI Normalization and Equivalence
In many cases, different URI strings may actually identify the
identical resource. For example, the host names used in URL are actually case
insensitive, and the URL <http://www.XEROX.com> is equivalent to
<http://www.xerox.com>. In general, the rules for equivalence and definition
of a normal form, if any, are scheme dependent. When a scheme uses elements
of the common syntax, it will also use the common syntax equivalence rules,
namely that the scheme and hostname are case insensitive and a URL with an
explicit ":port", where the port is the default for the scheme, is equivalent
to one where the port is elided.