As pessoas falam de URLs, URIs, e **URN***s como se elas'são coisas diferentes, mas parecem iguais a olho nu.
Quais são as diferenças distinguíveis entre eles?
De RFC 3986:
Um URI pode ser ainda classificado como um localizador, um nome, ou ambos. O O termo "Uniform Resource Locator" (URL) refere-se ao subconjunto de URIs que, além de identificarem um recurso, proporcionam um meio de localização do recurso através da descrição do seu mecanismo de acesso primário (por exemplo, a sua "localização" de rede). O termo "Uniform Resource Name" (Nome do Recurso Uniforme) (URN) tem sido usado historicamente para se referir a ambos os URIs sob a esquema de "urna" [RFC2141], que são exigidos para permanecer globalmente únicos e persistente mesmo quando o recurso deixa de existir ou se torna indisponível, e a qualquer outro URI com as propriedades de um nome.
Então todos os URLs são URIs (na verdade não exatamente - veja abaixo), e todos os URNs são URIs - mas URNs e URLs são diferentes, então você não pode dizer que todos os URIs são URLs.
EDIT: Eu já tinha pensado anteriormente que todas as URLs são URIs válidas, mas de acordo com os comentários:
**Não*** "todos os URLs são URIs". Depende da interpretação da RFC. Por exemplo, em Java o analisador URI não gosta de
[
ou]
e isso é porque a especificação diz "não deve" e não "não deve".
Para que as águas fiquem mais lamacentas, infelizmente.
Se você ainda não leu a resposta de Roger Pate, eu aconselharia fazer isso também.
Eles são a mesma coisa. Uma URI é uma generalização de uma URL. Originalmente, URIs eram planejadas para serem divididas em URLs (endereços) e URNs (nomes), mas então havia pouca diferença entre uma URL e URI e URIs http eram usadas como namespaces, mesmo que não localizassem nenhum recurso.
A Wikipédia dará toda a informação que você precisa aqui. Citação a partir de http://en.wikipedia.org/wiki/URI:
Um URL é um URI que, além de identificar um recurso, fornece meios de agir ou obter uma representação do recurso, descrevendo seu mecanismo de acesso primário ou "localização" da rede.