URL, URN, URI - 명확하게 이해하기

URL, URN, URI - 명확하게 이해하기

Tags
Computer Science
Network
Published
March 23, 2025
Author
Seongbin Kim
작성 중
 

서론

  • URL은 직관적이지만, 나머지 두 개념은 오래 전 정의되었고 평소 자주 접하지 않아 직관적으로 이해하기 어렵습니다. 이런 개념들이 왜 생겨났고, 정확히 어떤 표준이 존재하는지 간단히 정리해보았습니다.
 

URL

  • URL은 네트워크(HTTP, FTP 등) 상에서 자원을 지칭(식별)할 때 사용됩니다.
  • URL은 Uniform Resource Locator의 약자로, Uniform = ‘일관된, 통일된’의 의미입니다.
    • 번외로, ‘Universal’으로 선택하지 않고 ‘Uniform’ 같은 추상적인 어휘를 쓴 이유는 ‘어떻게 내가 감히’ 때문이라고 합니다..!
      • 참고:
  • URL 형식 = scheme + authority([username:password"@"] host [":" port]) + path + query + anchor
    • 특이하게 Authority라고 부르는 이유는 사용자 정보가 포함될 수 있기 때문입니다.
      • 다만 URL에 인증 정보가 노출되는 만큼 취약하기 때문에 실제로는 거의 사용되지 않습니다.
      notion image
      notion image
  • ‘권한’이 있는 경우 예시 (http):
    • 네트워크 상의 리소스 위치를 지정합니다.
    • https://user:password@www.example.com:8080/path?query=param#subtitle2
    • scheme = https
    • 구분자 :
    • 권한 //
    • id = username
    • 구분자 :
    • pw = password
    • 구분자 @
    • domain name = www.example.com
    • 구분자 :
    • port = 8080
    • path = /path
    • query = ?query=param
    • anchor = #subtitle2
  • ‘권한’이 있는 다른 예시:
    • ftp: ftp://user:pass@ftp.example.com/directory/file.txt
    • git: git://username@github.com:9418/user/repo.git
  • ‘권한’이 없는 경우 예시:
    • URL에서 // 을 생략합니다.
    • 네트워크 상의 리소스 위치를 지정하는 대신, 데이터 자체를 포함하거나 특정 기능을 실행하는데 목적이 있기 때문에 authority 부분이 필요하지 않습니다.
    • 파일: file:///home/username/example.txt
      • 로컬 시스템 내의 위치만 지정합니다.
    • 메일 주소: mailto:seongbin9786@gmail.com
    • 주소에 바이너리 데이터를 인라인: data:text/plain,Hello%20World
      • 별도의 서버 요청 없이 짧은 데이터를 직접 표시할 때 사용합니다. (이미지를 HTML에 인라인하는 등)
    • 주소에 JS를 인라인: javascript:alert('Hello');, javascript:void 0;
    • 전화번호: tel:+1234567890
      • 모바일 기기나 전화 연결 기능이 있는 애플리케이션에서 바로 전화를 걸 수 있게 합니다.
    • ISBN URN: urn:isbn:0451450523
  • 출처
 

URN

  • URN(Name)은 URL과 다르게 주소가 아닌 이름(Name)을 지정하는 것이 목적입니다.
  • URN 형식 = 네임스페이스 이름 + 리소스 고유 식별자
    • URL의 포맷에서 Authority(id + pw + host + port)가 없는 형태입니다.
      • 단, http scheme을 사용할 때가 아니라면 path, query, anchor를 사용하는 경우가 없습니다. 리소스 고유 식별자는 scheme마다 정의된 형식을 따라갑니다.
  • 주요 사용처는 ISBN, UUID, IETF RFC, ISSN 입니다.
    • (ex) urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8
    • (ex) urn:ietf:rfc:3986
    • (ex) urn:issn:0377-4929
 

URI

  • URI(Identifier)는 URL과 URN 등장 이후 이를 통합하고자 만든 개념입니다.
  • URI = scheme ":" ["//" authority] path ["?" query] ["#" fragment]
  • W3C 측의 주장
    • URL은 비공식적인 개념입니다. RFC 3986 상에 URL에 대한 정의가 없습니다.
    • "http:"는 URI 스킴입니다. http URI는 URL입니다.
    • URL은 유용하지만 비공식적인 개념입니다. URL은 다른 속성이 아닌 기본 액세스 메커니즘(예: 네트워크 "위치")의 표현을 통해 리소스를 식별하는 URI 유형입니다.
  • URI, URL 간에는 대립이 존재합니다. W3C는 URL, URN 개념을 표준화한 URI를 우선적으로 사용하고, WHATWG는 URL을 우선적으로 사용합니다.
    • Standardize on the term URL. URI and IRI are just confusing. In practice a single algorithm is used for both so keeping them distinct is not helping anyone. URL also easily wins the search result popularity contest.
  • 출처