If the // is absent, then the URI is considered non-hierarchical, and the interpretation of all data after the scheme: is left up to the handling client. In practice, most clients follow the conventions used for hierarchical URIs.
The //, @, #, and ? are separators. Thus, for example, http://example.com&foo=bar@167772161/actually points to 10.0.0.1 (in decimal format), with example.com&foo=bar being interpreted as a username to be used for any prospective authentication!
According to the relevant RFC, the host must be either a valid domain name or canonical IPv4 or (bracket enclosed) IPv6 address. However, most parsing libraries will accept decimal, octal, hexadecimal, and even mixed-format IP addresses!
While the query string is typical represented as a series of &-delimited key/value pairs, this is actually an arbitrary string whose interpretation is left up to the server.
The fragment is also an arbitrary string, but whose interpretation is left up to the client (and is not supposed to be sent to the server).