URL / URI / URN 차이점
우리가 브라우저를 통해 웹을 이용하게 된다면, URL 단어는 익숙할 것이다. 하지만 가끔 뭔가 비슷하면서도 다른 URI와 URN 이라는 단어를 사용하기도 하는데 이들 URL / URI / URN 링크 문자의 명확한 차이를 알아보도록 하겠다.
아래 그림에서 볼수 있듯이, URI는 URL과 URN을 포함하고 있다. 이들의 각 뜻은 다음과 같이 정의할 수 있다.
- URI - 자원의 식별자
- URL - 위치(Location)
- URN - 이름(Name)
URI / URL / URN 정의
URI (Uniform Resource Identifier)
- URI는 특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다. 웹 기술에서 사용하는 논리적 또는 물리적 리소스 자체를 식별하는 고유한 문자열 시퀀스이다.
- Uniform : 리소스를 식별하는 통일된 방식
- Resource : 자원, URI로 식별할 수 있는 모든 것
여기서 자원은 웹 브라우저의 파일만 뜻하는 게 아니라, 실시간 교통정보 등 우리가 구분할 수 있는 것은 모든 게 리소스가 된다. - Identifier : 다른 항목과 구분하는데 필요한 정보
- URI의 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에 항상 붙어 다닌다.
- URI의 하위개념으로 URL, URN 이 있다
URL (Uniform Resource Locator)
- URL은 흔히 웹 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약이다. URI의 서브셋이다.
- 즉, 컴퓨터 네트워크와 검색 메커니즘에서의 위치를 지정하는, 웹 리소스에 대한 참조이다.
- 흔히 우리는 URL을 웹 사이트 주소로만 알고 있지만, URL은 웹 사이트 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타내는 표기법이다.
- 그리고 해당 주소에 접속하려면 URL에 맞는 프로토콜(http, sftp, smp ..등)을 알아야 하고, 그와 동일한 프로토콜로 접속해야 한다.
URN (Uniform Resource Name)
- 통합 자원 이름(Uniform Resource Name)은 urn:scheme 을 사용하는 URI를 위한 역사적인 이름이다.
- URL이 리소스가 있는 위치를 지정한다면, URN은 리소스에 이름을 부여하는 것이다.
- URN은 영속적이고, 위치에 독립적인 자원을 위한 지시자로 사용하기 위해 1997년도 RFC 2141 문서에서 정의되었다.
- 하지만 리소스가 이름에 매핑되어 있어야 하기 때문에 이름으로 부여하면 거의 찾기가 힘들다. 그래서 대부분 URL만 쓴다. (즉 URN은 몰라도 된다)
URI / URL / URN 구분하기
위에서 URI / URL / URN 의 정의에 대해 알아보았지만, 아직도 모호하다.
인터넷 상의 자원의 위치(URL)와 자원의 식별자(URI)는 언뜻 보면 같은 것을 의미하는 듯 하다. 하지만 '자원의 위치'라는 것은 결국은 '하나의 파일 위치'를 나타내는 것이라고 생각해보자.
예를들어 다음과 같은 홈페이지 링크가 있다고 하자.
http://www.naver.com/index.html?page=1232950&id=776
http://www.naver.com/ 서버에 위치한 index.html 페이지는 query string인 page의 값에 따라 여러가지 화면 결과를 나타나게 된다.
이때 여기서 URL은 index.html의 위치를 표기한 http://www.naver.com/index.html 까지이다.
하지만 사용자가 원하는 정보에 도달 하기위해서는 ?page=1232950&id=776라는 식별자(Identifier)가 필요한 것이다.
따라서 엄격히 구분하자면 위의 http://www.naver.com/index.html?page=1232950&id=776 주소는 URI이고, 식별자가 빠진 http://www.naver.com/index.html를 URL이라고 하는 것이다.
이유는 URL은 자원의 위치를 나타내 주는 것이고 URI는 자원의 식별자인데, ?page=1232950&id=776 이 부분은 위치를 나타내는 것이 아니라 page값이 1232950이고 id가 776인 것을 나타내는 식별하는 부분이기 때문이다.
물론 통상적으로 대충 URL이라고 얘기를 하지만 엄격하게는 URI라고 하는 것이 맞다.
조금 억지스러운 예를 들면, 아래의 두 주소는 같은 URL이고 다른 URI라고 할 수 있다.
http://www.naver.com/index.html?page=1232950&id=776
http://www.naver.com/index.html?page=9923145&id=122
참고