티스토리 뷰
URI와 URL,URN
네트워크 리소스를 나타내는 용어중에는 URL, URI, URN 이 있다.
그게 그거같고 이게 이거같아 보여 많이 혼동해서 사용하는 용어 중에 하나라고 생각하여, 한번 정리해 보고자 한다.
1. URL (Uniform Resource Locator)
리소스(resource)의 위치를 나타내는 것이다.
http://www.google.com 같은 우리가 흔히 알고 있는 웹사이트를 가리키는 주소를 나타내는 것이 일반적이지만 웹사이트 주소뿐만이 아니라 메일주소나 FTP주소 등도 여기에 포함된다. (ex. mailto:hihoyeho@gmail.com)
URL에서 중요하게 짚고 넘어가야할 부분이 URL의 구조이다. 다음 단락에서 URL구조에 대해 알아보자.
2. URN (Uniform Resource Name)
URL의 경우 위치를 기반으로 두고 있기 때문에 해당 위치에 있는 자원이 없어지거나 할 경우 검색수단으로써 기능을 상실한다. 이를 보안하고자 만들어 진것이 URN이다. URN은 리소스의 이름을 나타내는 것이다. URL이 리소스의 "위치"를 나타내는것이라고 하면 URN은 위치에 의존하는것이 아닌 리소스의 "이름" 그 자체를 지시하는것이기 때문에 영속성을 지닌다.
사실 URN은 접할 기회가 많지 않기 때문에 이런 추상적인 설명만으로는 머리속에 이미지가 떠오르지 않는것이 사실이다. URN의 구조를 보며 더 자세히 알아보도록 하자.
URN의 경우 다음과 같은 구조를 가진다.
URL이 http와 같은 프로토콜로 시작한다면, URN의 경우 urn으로 시작하여, 콜론(:)으로 구분하여 표현한다.
위 예제에서 ISBN(International Standard Book Numbers)이란 국제표준도서번호를 말하고, 9788982814471은 연금술사(저자:파울로 코엘료)란 도서의 ISBN이다. 즉 위 URN주소는 연금술사 도서를 가리키는 URN이다.
참고로 현재 IETF에서 URN의 표준규격을 업데이트하고 있다.
3. URI (Uniform Resource Identifier)
리소스를 가리키는 식별자이다. URL과 URN도 리소스를 가리키는 말이나 URI는 더 넓은 의미이다.
한마디로 표현하자면 모든 정보의 리소스를 가리키는 식별자이다. (더 간단히 말하자면 "두목"격이다)
URI 구성표의 확인을 원한다면 IANA에서 공식적으로 등록하고 관리하는곳인 Uniform Resource Identifier (URI) Schemes를 참조하기 바란다.
서로의 관계에 대해 간단히 정리하자면, URL은 URI의 부분집합이다. 그리고 URL과 같은 구조에 URN이 있다.
(발로 그린) 그림으로 간단히 표현하자면 다음과 같다.
즉 모든 URL은 URI이고, 또한 모든 URN은 URI이다.
그렇기 때문에 우리가 흔히 인터넷 브라우저의 주소창에 입력하는 URL주소를 URI라고 불러도 틀린답은 아니다.
URL의 구조
URL의 구조를 해부해보자. URL 구조에 대해 이해하면 찾고자하는 URL의 주소를 정확히 기억하지 못하더라도 원하는 URL에 도달할 가능성이 높아지기 때문에 알아두면 매우 유용하다.
아래과 같은 URL이 있다고 하자.
http://www.smartchoice.or.kr:80/smc/smartreport/smarttalkview.do?sm_Seq=1596&searchType=tc&searchKeyword=&pg=2
프로토콜 (protocol)
정보를 교환할 때 필요한 약속이다.
사람끼리도 정보 교환 시 전화, 메일, 카톡(요즘엔 텔레그램(Telegram)으로 망명하고 있는 사람이 늘고 있지만..) 혹은 편지 등 다양한 방법으로 전달하듯이, 네트워크 간에도 어떤 정보를 요청하는 것인지 미리 정해진 약속이 있다. 예를 들어 http나 https로 시작하면 "이것은 웹사이트의 URL주소이다!" 이고, mailto로 시작하면 "이것은 메일의 주소다!"로 해석될 수 있다.
http 이외에 file, mailto, news 등이 여기에 속한다.
http 프로토콜의 경우 보통 브라우저의 사용자인터페이스(UI)에서 지원하기 때문에 직접 입력하지 않아도 브라우저에서 자동으로 인식되어 진다. 티스토리(Tistory)에 접속할 때 "http://www.tistory.com/"이라고 입력하지 않고 "www.tistory.com"만 입력해도 잘 찾아가는 것처럼 말이다.
호스트 (host)
연결할 서버의 주소를 말한다.
보통은 www(world wide web)를 사용하며, 간단히 줄여서 web이라고 부른다. www 이외에도 여러 관리서버를 가지고 있을 경우 다른이름으로 사용하기도 한다. (ex. 다음맵의 경우 host명으로 map을 사용 (http://map.daum.net), 네이버뉴스의 경우 new를 사용(http://news.naver.com))
도메인 (domain)
도메인은 네트워크상에 존재하는 위치를 말한다. 음.. 현실세계에 비유하자면 주소정도 일까? (다른 정확한 표현이 있을수도 있지만 생각이 나지 않는다.)
도메인은 URL을 구성하는 가장 기본적인 요소라고 할 수 있다.
보통 조직이름+조직특성+국가 혹은 지역이름로 이루어져 있는것이 일반적이며, 나름의 명명규칙이 존재한다.
보통 com(commercial)은 영리목적의 기업, org(organization)는 비영리단체, net은 IT 관련, gov는 정부 도메인, co.xx 같은 경우 각 나라의 약자가 붙게 된다. (ex. 한국:kr, 일본:jp, 영국:uk)
규칙에 맞게 도메인을 생성할 경우 웹사이트에 접근하는 사용자가 그 사이트의 목적 및 용도에 대해 이해가 편하기 때문에 목적에 맞는 도메인을 생성하면 좋겠으나 이건 강제적인 것은 아니다. 개인웹사이트에 .com을 사용하였다고 하여 경찰이 출동하거나 하거나 하지는 않는다.
여담으로 .com으로 등록 된 가장 오래된 도메인은 1985년 03월 15일 등록 된 http://www.symbolics.com/이라고 한다.
도메인은 도메인 이름, IP주소 중 하나로 표현이 가능하다. 예를 들어 로컬호스트에 접근하고자 할 때
1. http://localhost/
2. http://127.0.0.1/
두개 중 어느 도메인으로 접근하여도 무방하다.
포트 (port)
포트번호는 콜론(:)으로 구분하며, 80 포트의 경우 컴퓨터의 TCP/IP 연결의 기본포트로 보통은 생략하는것이 일반적이다.
아래 URL에 접근하여 보자. 정상적으로 잘 찾아가는 것으로 보아 daum은 기본포트를 80으로 사용한다는 걸 알 수 있다.
경로 (path)
파일이름이나 디렉토리이름이 말한다.
너무 많은 정보가 있는 웹사이트의 경우 페이지나 디렉토리별로 분류해서 관리하지 않으면 뒤범벅이 되어버리기 때문에, 그룹화하여 계층별로 관리하는 것이 일반적이다.
쿼리 (query)
해당 페이지 구성에 필요한 파라미터들이다. 요즘 많이 웹사이트들이 RESTFul URL 구조를 많이 사용하면서, 위와 같은 방식으로 쿼리를 표현하지 않는 추세이다.
슬래시(/)에 관하여
일반적으로 파일이름으로 끝나는 URL에는 마지막에 슬래시를 붙이지 않는다.
예를 들어
1) http://www.imaso.co.kr/?doc=v2/index.php
2) http://www.imaso.co.kr/?doc=v2/index.php/
1번과 같은 URL은 올바른 표현이지만 2번은 같은 URL은 잘못된 표현이다.
확실한 이해를 위해 위 URL들을 직접 브라우저 주소창에 입력해 보고 어떤 반응이 일어나는지 보자.
반대로 디렉토리명으로 끝나는 URL도 한번 입력해보고 정상적으로 찾아가는지도 보자.
퀴즈풀이
한번 본 내용에 대해 머리속으로만 이해하고 넘어가면 정작 중요할 때 기억이 나지 않는 경우가 많다.
때문에 퀴즈풀이를 통해 아하! 올타쿠나!하고 반복학습하면 좋을것 같아서 간단한 문제들을 준비해보았다.
1. http://www.mozilla.or.kr/community/promote/
위와 같은 URL이 있다고 하자. 이 URL의 포트(port)는 몇번일까?
2. URI, URL, URN의 관계에 대해 설명한 것 중 옳은 것은?
① URI > URL > URN
② URI = URL < URN
③ URI = URN < URL
④ URI > URL = URN
⑤ 사랑하는 사이
3. 다음 보기 중 정상적이지 않은 URL은 무엇인가? (즉, 접속 시 에러가 발생할만한 URL을 찾아보자.)
① http://www.itworld.co.kr/t/61023/%EA%B0%9C%EB%B0%9C%EC%9E%90/90176
② https://stackoverflow.com/users/login
③ http://metroui.org.ua/index.html/
④ https://algospot.com/judge/problem/list/
⑤ http://www.okjsp.net/bbs?act=FIRST_MAIN
끝마치며
이상 URI와 URN, URL에 대해서 간단히 정리해 보았다.
미묘하게 이해되지 않는 부분도 많았고 해석의 실수가 있을수도 있지만, 일단 이 정도까지만 정리하고 넘어가는 걸로하고 차후에 깊이 있는 지식이 필요할 때에는 더 심도있게 공부해서 보안을 해야 겠다.