• URI vs URL vs URN :: 마이구미
    HTTP 2017. 3. 25. 17:43
    반응형

    이번 글은 URI, URL, URN 을 다뤄본다.

    URI와 URL은 아직도 많이 혼동되고 있다.

    우리는 대부분 URL이라는 표현을 하고 있다.

    우리가 보고 있고, 사용하고 있는 대부분이 사실 URL이기 때문이다.


    1. URI, URL, URN 개념
    2. URL의 한계(URN 나온 이유)
    3. URI URL 차이점

     

    URI와 URL은 같다고 주장도 있고, 다르다는 주장도 있다.

    이러한 말들이 이번 글의 목적이기도하다.


    먼저 URI, URL, URN에 대해 알아보자.


    서버 리소스 이름은 통합 자원 식별자(uniform resource identifier) 혹은 URI라고 불린다.

    URI는 인터넷의 우편물 주소 같은 것으로, 정보 리소스를 고유하게 식별하고 위치를 지정할 수 있다.

    그리고 이 URI에는 두 가지 형태가 있는데 이것이, URL, URN이라는 것이다.


    통합 자원 지시자(uniform resource locator, URL)는 URI의 가장 흔한 형태이다.

    URL은 특정 서버의 한 리소스에 대한 구체적인 위치를 서술한다.

    URL은 리소스가 정확히 어디에 있고 어떻게 접근할 수 있는지 분명히 알려준다.

    예를 들자면 아래와 같다. (우리가 흔히 보는 바로 그것이다)


    • http://naver.com - 네이버 사이트의 URL
    • http://img.naver.net/static/www/dl_qr_naver.png - 네이버 앱 QR 코드의 이미지에 대한 URL
    • http://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=104 - 네이버 뉴스에서 분류 중 "세계" 주제의 기사에 대한 URL


    URI의 두 번째 형태는 유니폼 리소스 이름(uniform resource name, URN) 이다.

    URN은 콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할을 한다.

    이 위치 독립적인 URN은 리소스를 여기저기로 옮기더라도 문제없이 동작한다.

    리소스가 그 이름을 변하지 않게 유지하는 한, 여러 종류의 네트워크 접속 프로토콜로 접근해도 문제없다.

    예를 들어, 다음의 URN은 인터넷 표준 문서 'RFC 2141'가 어디에 있거나 상관없이 그것을 지칭하기 위해 사용할 수 있다.


    • urn:ietf:rfc:2141 - 'RFC 2141' 문서


    URN은 아직 채택되지 않아, 접할 기회가 없었을 것이다.

    URN은 URL의 한계로 인해 착수되었다.


    URL의 한계란,

    URL은 주소이지 실제 이름이 아니다.

    이 뜻은 특정 시점에 어떤 것이 위치한 곳을 알려준다는 것이다.


    예를 들어, 구글 검색에 노출된 http://mygumi.tistory.com/19 링크가 있다.

    본인은 주소를 바꾸고 싶어 http://mygumi.tistory.com/test/19 로 URL을 바꾸었다.

    다른 사람이 노출된 검색 콘텐츠에 접근 시 노출된 페이지는 찾을 수 없게 된다.

    이러한 단점으로 리소스가 옮겨지면 해당 URL을 더는 사용할 수 없다는 것이다.

    그리고 그 시점 기존 URL이 가지고 있던 객체를 찾을 방법이 없어진다.


    이런 문제를 예방할 수 있는 이상적인 방법은, 객체의 위치와 상관없이, 그 객체를 가리키는 실제 객체의 이름을 사용하는 것이다.

    그렇게 되면, 위치가 바뀌더라도 리소스의 위치를 찾을 수 있게 된다.

    (URL 또한 PURL을 사용하면 URN 기능을 제공할 수 있다)


    이미 URL이 대중화되었고, 그 외 많은 이유로 아직까지는 표준이 되지 않았다.

    하지만 언젠가는 표준이 되지 않을까한다.


    결론적으로 요약하자면, URL과 URN은 URI의 종류이다.

    그렇기에 모든 URL은 URI이고, 또한 모든 URN은 URI이다.

    그리고 위에서 언급했듯이, URL과 URN은 다르다.

    그렇다는 건 모든 URI는 URL이라고 말할 수 없다. (URI는 URL과 같다는 주장에 대한 오류)


    So all URLs are URIs (actually not quite - see below), and all URNs are URIs - but URNs and URLs are different, so you can't say that all URIs are URLs.


    이것은 다이어그램을 만들어보면 아래와 같다.

    다이어그램을 보면 쉽게 이해할 수 있다.



    URI, URL, URN



    단순하게 말하자면, URI는 규약이고, URL은 규약에 대한 형태라고 생각하면 혼동되지 않을 것이다.

    수학적으로 말하자면, URL과 URN은 부분집합이라고 생각할 수 있다.

    치명적으로 중요한 내용은 아니지만, URI와 URL이란 걸 다시 한번 알기에 좋은 기회가 될 것이라 생각한다.


    잘못된 내용이 있다면 댓글을 통해 남겨주면 감사하다.


    관련 책 - HTTP 완벽 가이드

    http://book.naver.com/bookdb/book_detail.nhn?bid=8509980


    stackoverflow - URI, URL, URN 차이점

    http://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn

    반응형

    댓글

Designed by Tistory.