ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • URL, URN, URI 차이 // URL의 구조
    IT/Web 2019. 5. 26. 21:46

    #개요

    일하다가 웹페이지에서 특정 링크의 주소를 보일때 해당 주소가 URL인지 URI인지에 대해서 혼동이 왔다.

    간단히 찾아보니 비슷한 개념인데 많은 사람들이 혼용을 하고, 그 혼용조차도 대부분 의심없이 받아들이고 사용하고 있다.

    그래서 찾아보다가 잘 설명된 글을 찾았다.

     

     

    출처http://hihoyeho.tistory.com/10

     

     

     

     

     


    1. URL, URN, URL

     

    1-1. URL ( Uniform Resource Locator )

    리소스의 위치다.

    https://www.naver.com 같은 우리가 흔히 알고있는 웹사이트를 가르키는 주소를 나타내는것이 일반적이지만,

    FTP주소 (FTP://xxx.xxx.xx.xxx), 메일주소(mailto:ldk2468@naver.com) 도 모두 URL이라고 할 수 있다.

     

     

    1-2. URN ( Uniform Resource Name )

    리소스를 가르키는 이름이다.

    URL의 경우 위치를 기반으로 두고 있기 때문에 해당 위치에 있는 자원이 없어지거나 할 경우 검색수단으로써 기능을 상실한다.

    이를 보안하고자 만들어 진것이 URN이다. URN은 리소스의 이름을 나타내는 것이다.

    URL이 리소스의 "위치"를 나타내는것이라고 하면 URN은 위치에 의존하는것이 아닌 리소스의 "이름" 그 자체를 지시하는것이기 때문에 영속성을 지닌다.

    사실 URN은 접할 기회가 많지 않기 때문에 이런 추상적인 설명만으로는 머리속에 이미지가 떠오르지 않는것이 사실이다.

    URN의 구조를 보며 더 자세히 알아보도록 하자.

     

    URN의 경우 다음과 같은 구조를 가진다.

    urn : isbn : 9788982814471

    URL이 http와 같은 프로토콜로 시작한다면, URN의 경우 urn으로 시작하여, 콜론(:)으로 구분하여 표현한다.

    위 예제에서 ISBN(International Standard Book Numbers)이란 국제표준도서번호를 말하고, 9788982814471은 연금술사(저자:파울로 코엘료)란 도서의 ISBN이다.

    즉 위 URN주소는 연금술사 도서를 가리키는 URN이다. 

     

     

    1-3. URI ( Uniform Resource Identifier )

    리소스를 가르키는 식별자이다.

    URL과 URN도 리소스를 가르키는 말이지만, URI는 더 넓은 의미이다.

    한마디로 그냥 모든 정보의 리소스를 가르키는 식별자.

     

    서로의 관계에 대해 간단히 정리하자면, URL은 URI의 부분집합이다. 그리고 URL과 같은 구조에 URN이 있다.

    원문 포스트에 있는 그림을 그대로 가져오자면 다음과 같다.

     

    즉 모든 URL은 URI이고, 또한 모든 URN은 URI이다.

    그렇기 때문에 우리가 흔히 인터넷 브라우저의 주소창에 입력하는 URL주소를 URI라고 불러도 틀린답은 아니다.

     

     

     

     

     

     


    2. URL의 구조

    URL의 구조를 해부해보자.

    URL 구조에 대해 이해하면 찾고자하는 URL의 주소를 정확히 기억하지 못하더라도 원하는 URL에 도달할 가능성이 높아지기 때문에 알아두면 매우 유용하다.

    아래과 같은 URL이 있다고 하자.

     

    http://www.xplant.co.kr/shop/item.php?it_id=1509170200

    개발자들의 머리를 정화시켜주는 예쁜 관엽식물의 판매 페이지이다.

     

     

    2-1. http - 프로토콜 ( protocol )

    정보를 교환할 때 필요한 약속이다. 

    사람끼리도 정보 교환 시 전화, 메일, 카톡(요즘엔 텔레그램(Telegram)으로 망명하고 있는 사람이 늘고 있지만..) 혹은 편지 등 다양한 방법으로 전달하듯이, 네트워크 간에도 어떤 정보를 요청하는 것인지 미리 정해진 약속이 있다.

    예를 들어 http나 https로 시작하면 "이것은 웹사이트의 URL주소이다!" 이고, mailto로 시작하면 "이것은 메일의 주소다!"로 해석될 수 있다.

    http 이외에 file, mailto, news 등이 여기에 속한다.

     

    http 프로토콜의 경우 보통 브라우저의 사용자인터페이스(UI)에서 지원하기 때문에 직접 입력하지 않아도 브라우저에서 자동으로 인식되어 진다.

    네이버에 접속할 때 "http://www.naver.com/"이라고 입력하지 않고 "www.naver.com"만 입력해도 잘 찾아가는 것처럼 말이다. 

     

     

    2-2. www - 호스트 ( host )

    연결할 서버의 주소를 말한다. 

    보통은 www(world wide web)를 사용하며, 간단히 줄여서 web이라고 부른다.

    www 이외에도 여러 관리서버를 가지고 있을 경우 다른이름으로 사용하기도 한다.

    ex. 다음맵의 경우 host명으로 map을 사용 (http://map.daum.net), 네이버뉴스의 경우 news를 사용(http://news.naver.com)

     

     

    2-3. xplant.co.kr - 도메인 ( 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/

    두개 중 어느 도메인으로 접근하여도 무방하다.

     

     

    2-4. :80 - 포트 ( port )

    포트번호는 콜론(:)으로 구분하며, 80 포트의 경우 컴퓨터의 TCP/IP 연결의 기본포트로 보통은 생략하는것이 일반적이다. 

    http://www.xplant.co.kr:80

    위 URL이 정상적으로 잘 찾아가는 것으로 보아 xplant은 기본포트를 80으로 사용한다는 걸 알 수 있다.

     

     

    2-5. shop/item.php - 경로 ( path )

    파일이름이나 디렉토리이름이 말한다. 

    너무 많은 정보가 있는 웹사이트의 경우 페이지나 디렉토리별로 분류해서 관리하지 않으면 뒤범벅이 되어버리기 때문에,

    그룹화하여 계층별로 관리하는 것이 일반적이다.

     

     

    2-6. it_id=1509170200 - 쿼리 ( query )

    해당 페이지 구성에 필요한 파라미터들이다.

    요즘 많이 웹사이트들이 RESTFul URL 구조를 많이 사용하면서, 위와 같은 방식으로 쿼리를 표현하지 않는 추세이다.

     

     

    ===========끗==========

    댓글

다치지 말고 운동하자.