URI 의 정의는 다음과 같다.
a uniform resource identifier (URI) is a string of characters used to identify a name or a resource
URL 의 정의는 다음과 같다.
A uniform resource locator, abbreviated URL, also known as web address, is a specific character string that constitutes a reference to a resource
URN 의 정의는 다음과 같다.
A Uniform Resource Name (URN) is the historical name for a Uniform Resource Identifier (URI) that uses the urn: scheme.
자 이 말장난 같은 개념들의 정리를 한번 해보자. 먼저 URI 의 정의에 따르면 URI는 리소스나 이름을 확인할 수 있는 특정 스트링을 말한다. 스택오버플로 답변을 참고하여 설명해보자면,
Roger Pate
라는 이름을 생각해보자. 이 이름은 어떤 사람을 구분해줄 수 있다. URI 의 역할이 이와 비슷한 거라 보면 된다. 하지만 여기에는 중요한 정보가 빠져 있는데, "Roger Pate" 라는 사람을 만나기 위한 정보가 없다는 것이다. 예를 들어 전화번호나 이메일주소, 또는 집주소 같은 것들 말이다. 이런 접근을 위한 위치 정보가 담겨 있으면 그것을 URL 이라 한다.
즉 URL 은 URI 이긴한데, 리소스를 접근할 수 있는 주소 정보를 포함하고 있는 것이다. (그러나 실제 URI 는 주어진 문법을 만족해야 하므로 "Roger Pate" 라는 스트링을 URI 라고 할 수 없다. 위의 비유는 개념 이해를 위해 예로 든 것이다.)
그럼 URN 은 무엇인가? URN 은 URI 의 옛날 명칭인데, 그냥 위의 "Roger Pate" 같은 이름이 URN 이다. 아래 그림을 보면 이해가 갈 것이다. 즉 어떤 URI 는 URL 이기도 하고, URN 이기도 하고 때로는 URL, URN 둘 다 이기도 하다. 아래 다이어그램을 보면 쉽게 이해가 간다.
URL 과 URN 은 중간에 교집합을 두고 있으며 이 둘의 전체 집합을 URI 라 부른다고 한다고 한다.ㅋ