Superbly Life & Development

URI vs URL

2019-09-03

trace


URI(Uniform Resource Identifier)

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

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

인터넷에 있는 자원을 나타내는 유일한 주소이다.

URI의 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에 항상 붙어다닌다.

URI의 하위 개념으로 URL, URN 이 있다.

  ex)  프로토콜 (HTTP 혹은 FTP) + : + // + 호스트이름 + 주소 -> 예 : http://naver.com

URI의 가장 보편적인 형태는 바로 웹페이지 주소인 URL인데 이것은 URI의 특별한 형태이자 부분집합으로 볼 수 있다.

대체로 아래와 같이 설명할 수 있다.

 (1) 자원에 접근하기 위해 사용되는 절차

 (2) 어떤 자원을 가지고 있는 특정한 컴퓨터

 (3) 컴퓨터 상의 유니크한 자원의 이름(파일명)

URL(Uniform Resource Locator)

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

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

예전에는 URL이 가리키는게 파일소스 였다.

하지만 요즘은 Rewrite 등의 Apache, IIS, Tomcat 등의 핸들러 때문에 자원 이라고 부른다.

즉, 웹 상에서 서비스를 제공하는 각 서버들에 있는 파일들의 위치를 표시하기 위한 것으로 접속할 서비스의 종류, 도메인명, 파일의 위치 등을 포함한다.

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

  • 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

URN(Uniform Resource Name)

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

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

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

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

  • urn:ietf:rfc:2141 - ‘RFC 2141’ 문서

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

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

URL의 한계란,

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

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

예를 들어, 구글 검색에 노출된 https://superbly.github.io/category 링크가 있다.

본인은 주소를 바꾸고 싶어 https://superbly.github.io/test/category 로 URL을 바꾸었다.

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

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

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

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

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

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


결론

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

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

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

그렇다는 건 모든 URI는 URL이라고 말할 수 없다.

trace

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

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

치명적으로 중요한 내용은 아니지만, URI와 URL 둘 사이의 관계에 대해 혼동이 있었던 것을 다시 정리 할 수 있어서 좋았다.


참고


Comments

Content