WeniVooks

검색

웹/네트워크/HTTP 베이스캠프

URI와 URL

URI, URL, URN? 대체 무슨 차이 일까요? 🤔

4.1 URI(Uniform Resource Identifier) : 통합 자원 식별자

  • URI는 위치(Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있습니다.
  • URI (Uniform Resource Identifier)
    • Uniform: 리소스 식별하는 통일된 방식
    • Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)
    • Identifier: 다른 항목과 구분하는데 필요한 정보
    • 예) urn:isbn:1234567890, http://example.com/page.html
  • URL (Uniform Resource Locator): 리소스가 있는 위치를 지정
    • 예) http://example.com/page.htmlftp://example.com/file.zip
  • URN (Uniform Resource Name): 리소스에 이름을 부여
    • 예)
      • urn:isbn:0-486-27557-4 (A 저자의 B 책 ISBN 예시)
      • urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 (A유저의 UUID 예시)

위치(주소)는 변할 수 있지만, 이름(URN)은 변하지 않는다!

Name: 위니브 / Locator: 제주 제주시 첨단로 330 ⇒ "택시 기사님 위니브로 가주세요!"라고 말하면 주소가 변해도 이쪽으로 갑니다.

4.2 URL(Uniform Resource Locator)

  • 웹 사이트를 표시하기 위해 입력하는 주소를 말합니다.
    • 웹 상에서는 실질적으로 주소가 아니라 이름 역할을 합니다.
    • /about.html로 접속했다고 해서 실제 불러온 값이 /about.html임을 보장하진 않습니다.
  • 자원이 어디 있는지를 알려주기 위한 규약입니다.
  • 흔히 웹사이트 주소로 알고 있지만, URL은 웹사이트 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타낼 수 있습니다.
WHATWG URL's origin property (https://nodejs.org/api/url.html#url)
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                              href                                              │
├──────────┬──┬─────────────────────┬────────────────────────┬───────────────────────────┬───────┤
│ protocol │  │        auth         │          host          │           path            │ hash  │
│          │  │                     ├─────────────────┬──────┼──────────┬────────────────┤       │
│          │  │                     │    hostname     │ port │ pathname │     search     │       │
│          │  │                     │                 │      │          ├─┬──────────────┤       │
│          │  │                     │                 │      │          │ │    query     │       │
"  https:   //    user   :   pass   @ sub.example.com : 8080   /p/a/t/h  ?  query=string   #hash "
│          │  │          │          │    hostname     │ port │          │                │       │
│          │  │          │          ├─────────────────┴──────┤          │                │       │
│ protocol │  │ username │ password │          host          │          │                │       │
├──────────┴──┼──────────┴──────────┼────────────────────────┤          │                │       │
│   origin    │                     │         origin         │ pathname │     search     │ hash  │
├─────────────┴─────────────────────┴────────────────────────┴──────────┴────────────────┴───────┤
│                                              href                                              │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
(All spaces in the "" line should be ignored. They are purely for formatting.)

0번 ~ 1023번: 잘 알려진 포트 (well-known port)
1024번 ~ 49151번: 등록된 포트 (registered port)
49152번 ~ 65535번: 동적 포트 (dynamic port)
WHATWG URL's origin property (https://nodejs.org/api/url.html#url)
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                              href                                              │
├──────────┬──┬─────────────────────┬────────────────────────┬───────────────────────────┬───────┤
│ protocol │  │        auth         │          host          │           path            │ hash  │
│          │  │                     ├─────────────────┬──────┼──────────┬────────────────┤       │
│          │  │                     │    hostname     │ port │ pathname │     search     │       │
│          │  │                     │                 │      │          ├─┬──────────────┤       │
│          │  │                     │                 │      │          │ │    query     │       │
"  https:   //    user   :   pass   @ sub.example.com : 8080   /p/a/t/h  ?  query=string   #hash "
│          │  │          │          │    hostname     │ port │          │                │       │
│          │  │          │          ├─────────────────┴──────┤          │                │       │
│ protocol │  │ username │ password │          host          │          │                │       │
├──────────┴──┼──────────┴──────────┼────────────────────────┤          │                │       │
│   origin    │                     │         origin         │ pathname │     search     │ hash  │
├─────────────┴─────────────────────┴────────────────────────┴──────────┴────────────────┴───────┤
│                                              href                                              │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
(All spaces in the "" line should be ignored. They are purely for formatting.)

0번 ~ 1023번: 잘 알려진 포트 (well-known port)
1024번 ~ 49151번: 등록된 포트 (registered port)
49152번 ~ 65535번: 동적 포트 (dynamic port)
4장 URL 개념과 활용4.2 실습