URI
-
현재 동작하고 있는 Server에서
-
특정 리소스에 접근하기 위해 사용하는 Path를
-
통합 자원 식별자(Uniform Resource Identifier) 혹은 URI라고 부른다.
-
URI는 인터넷의 우편물 주소 같은 것으로
-
정보 리소스를 고유하게 식별하고 위치를 지정할 수 있다.
-
그리고 URI에는
-
URL과 URN의 두 가지 형태가 있다.
URL
-
통합 자원 지시자(Uniform Resource Locator, URL)는 URI의 가장 흔한 형태이다.
-
URL은 특정 서버안에서
-
해당 리소스에 접근할 수 있는
-
상대적인 위치를 나타낸다.
Example
-
http://naver.com - 네이버 사이트의 URL
-
http://img.naver.net/static/www/dl_qr_naver.png - 네이버 앱 QR 코드의 이미지에 대한 URL
한계
-
URL은 해당 리소스에 접근할 수 있는 상대적인 위치를 나타낸다.
-
즉 특정 시점에 어떤 리소스가
-
어느 곳에 위치한지 알려 줄 뿐이다.
한계 - Example
-
goodGid가 사는곳은 대한민국이다.
-
만약 goodGid가 현재는 대한민국에 살고 있지만
-
시간이 지나 대한민국이 아닌곳에서 살 수 있다.
-
그런데 계속해서 대한민국에서 goodGid를 찾는다면
-
원하는 결과를 얻지 못하게 된다.
-
위의 예시를 URL로 바꿔보면
-
구글 검색에 노출된 http://goodgid.github.io/URL-URI-URN/ 링크가 있다.
-
필자가 주소를 바꾸고 싶어
-
http://goodgid.github.io/web/URL-URI-URN/으로 URL을 바꾸었다.
-
그러면 이전 URL로 접근을 시도하면 페이지를 찾을 수 없게 된다.
-
즉 리소스가 옮겨지면
-
이전 URL은 더이상 유효하지 않게 된다.
-
이런 문제를 근본적으로 해결할 수 있는 방법은
-
객체의 위치와 상관없이
-
객체의 Unique함을 보장할 수 있는 값을 사용하는 것이다.
-
그렇게 되면 위치와 무관하게
-
리소스에 접근 할 수 있게 된다.
URN
-
URI의 두 번째 형태는
-
유니폼 리소스 이름(uniform resource name, URN)이다.
-
URN은 콘텐츠를 이루는 한 리소스에 대해
-
위치에 영향을 받지 않는 Unique함을 나타내는 키 역할을 한다.
-
URN은 리소스를 옮기더라도 문제없이 동작한다.
-
리소스가 그 이름을 변하지 않게 유지하는 한
-
여러 종류의 네트워크 접속 프로토콜로 접근해도 문제없다.
Example
-
인터넷 표준 문서인 ‘RFC 2141’의 URN 값이
-
urn:ietf:rfc:2141 라는 것을 알고 있다.
-
그렇다면 RFC 2141 리소스를 어느곳으로 옮겨도
-
클라이언트는 RFC 2141 리소스를 접근할 수 있다.
한계
-
URN은 URL의 한계로 인해 착수되었다.
-
하지만 URN은 아직 채택되지 않아 쉽게 접할 수 없다.
결론
-
URL과 URN은 URI의 종류이다.
-
그렇기 때문에
-
모든 URL은 URI이고
-
모든 URN 또한 URI이다.
-
역으로 생각하면
-
모든 URI는 URL이라고 말할 수 없다.
Case 1.
-
http://img0.gmodules.com/ig/images/korea/logo.gif
-
이와 같은 형식은 logo.gif 라는 인터넷상의 자원 위치를 의미 한다.
-
이는 URI이면서도 URL라고 말할 수 있다.
Case 2.
-
http://goodgid.github.io?name=gid
-
http://goodgid.github.io 서버에서
-
Query String인 name 값에 따라 여러가지 결과를 나타낸다.
-
여기서 URL은
-
http://goodgid.github.io 까지이다.
-
내가 원하는 정보에 도달 하기위해서는
-
?name=gid라는 식별자(Identifier)가 필요하다.
-
결국 위의 http://goodgid.github.io?name=gid Path는
-
URI이긴 하지만 URL은 아니다.