A Uniform Resource Identifier (URI) is a compact string of characters for identifying an abstract or physical resource. See IETF RFC2396 at http://www.ietf.org/rfc/rfc2396.txt?number=2396
URL and URI are different concepts. A URL gives you information on how you can access a resource, whereas a URI merely identifies a resource and does not in general give you any information on how you might access it (or even imply that you can access it in any meaningful way). For example,
urn:schemas-microsoft-com:office:excelis the URI for the XmlNameSpace for some exchange format to do with MicrosoftExcel and this URI is not an URL.
Many have the form:
[protocol]:[//][hostname][:port]/[path/information][?query=[...]][&...]protocol is one of http https file mailto news telnet gopher ftp plus some more obsolete protocols.
hostname is an IP address in decimal or decimal dotted form, or the name of a host on that can be resolved to an IP address.
port is the internet port to connect to. If absent, the default port for the given protocol is used (e.g., port 80 for http). The hostname and port combo must end with a /.
path/information is somewhat dependent on the protocol, and sometimes is not present. It's typically hierarchical. The last part of the path is often used to indicate the type of data and what the client might do to it. For example ".txt" indicates normal preformatted ASCII text and ".html" HTML.
?query= is the non-hierarchical segment, typically used as command arguments.
Actually, it's not that simple, and people shouldn't be writing URI parsers if under the impression that it is. SeeDanBarlow
Expect this page to have a high lapse rate as the details get straightened out. URIs often only partially understood.