Todas las respuestas anteriores cubren diferentes aspectos de la diferencia. Mi respuesta es algo que escribí para mi propio beneficio, tratando de explicar la diferencia desde la perspectiva de un laico.
Un URI (Identificador Uniforme de Recursos) es una etiqueta que se puede usar para nombrar o localizar un recurso en Internet. [1] Una analogía en el mundo real podría ser la información de contacto de una persona. Esta información incluye el nombre de una persona, así como diferentes formularios para ponerse en contacto con esa persona: sus números de teléfono, dirección, correo electrónico, etc.
Siguiendo esa analogía, una URL (Localizador Uniforme de Recursos) es una de esas formas de ponerse en contacto con esa persona. La URL también especifica de qué manera (un esquema o protocolo) comunicarse al contactar a esa persona. Ejemplos de esquemas son http, ftp, file, mailto. Siguiendo esa definición, una URL es una clase de URI , que está en línea con lo que el usuario de Quora dice en su respuesta.
- ¿Cuál es la diferencia, si hay alguna, entre el servidor DNS y el servidor de nombres?
- ¿ARP es un protocolo de capa 3? En caso afirmativo, ¿por qué no es un protocolo de capa 2?
- ¿Qué debo saber antes de diseñar mi propio protocolo de comunicación?
- ¿Qué es el protocolo de datagramas de usuario?
- ¿Qué es el protocolo MT103 SPP para transferir fondos? ¿Por qué la mayoría de los bancos no lo admiten?
Como se mencionó anteriormente, el nombre también es parte de la información de contacto de alguien. Su contraparte URI se llama acertadamente URN (nombre uniforme de recurso) y, al igual que el nombre de una persona, no incluye información sobre cómo contactar a ese recurso, solo su nombre. Los URN definen espacios de nombres, que en mi analogía son como alias. Una persona puede tener diferentes nombres en diferentes contextos, por lo que la URN especifica el contexto con un identificador de espacio de nombres. Ejemplos de estos identificadores son isbn, isan, mpeg.
Como lo describe Eric Kow, hay una diferencia entre la definición original del W3C y lo que la gente usa actualmente. Originalmente, los URI estaban destinados a tener muchas más clases posibles debajo de ellos, pero hoy solo existen URL, URI y URC (características uniformes de recursos) [2]. Nunca hubo soporte para otras clases adicionales y el uso regular realmente no requería su creación.
Lectura adicional, aunque ya se incluye en las otras respuestas anteriores:
[1] Artículo de Wikipedia sobre URI: http://en.wikipedia.org/wiki/Uni…
[2] RFC3305 del W3C sobre URI: http://www.ietf.org/rfc/rfc3305