Post

URI & URL

▶ 웹 개발에서 자주 사용되는 URI와 URL은 종종 혼동되기 쉬운 개념입니다. URI는 더 넓은 범주로 모든 유형의 리소스 식별자를 포함하며, URL은 그 하위 개념 중 하나로 특히 위치를 지정하는 데 중점을 둡니다. 오늘은 이 두 개념의 차이에 대해 알아보도록 하겠습니다.

1. URI(Uniform Resource Identifier)

▶ URI는 인터넷 자원을 식별하는 통일된 방법을 제공하는 문자열입니다. 즉, URI는 특정 리소스를 식별할 수 있고 그 리소스의 위치나 접근 방법에 관한 정보를 제공할 수도 있습니다.

URI의 특징

  1. 스킴(Scheme)
    URI의 첫 부분으로, 리소스에 접근하는 방법을 정의합니다. 예) http, https, ftp, mailto 등.
  2. 경로(Path)
    리소스의 위치를 나타냅니다. URL에서는 도메인 뒤에 오며, URN에서는 식별자를 나타냅니다.
  3. 쿼리(Query) (선택 사항)
    리소스에 대한 추가적인 데이터를 제공할 수 있는데, 주로 키-값의 쌍으로 이루어집니다. 예) ?query=example.
  4. 프래그먼트(Fragment) (선택 사항)
    리소스 내의 특정 부분을 가리킬 수 있습니다. 예) #section1.

URI의 구성요소 - URL & URN

(1) URL 예시
1
https://www.example.com/path/to/resource?query=example#section1
  • https는 스킴
  • www.example.com은 호스트
  • /path/to/resource는 경로
  • ?query=example는 쿼리
  • #section1은 프래그먼트
(2) URN 예시
1
URN: urn:isbn:0451450523
  • urn은 스킴
  • isbn:0451450523은 고유 식별자
  • 즉 예시의 URN은 특정 책을 식별합니다.

2. URL(Uniform Resource Locator)

▶ URL은 URI의 하위 개념으로 리소스의 위치를 가리키고 그 위치에 어떻게 접근할지를 설명합니다. 즉, URL은 인터넷에서 리소스를 찾는 주소를 제공하는 것입니다.

URI의 특징

  1. 스킴(Scheme)
    리소스에 접근하는 방법을 정의합니다. 예) http, https, ftp.
  2. 호스트(Host)
    리소스를 호스팅하는 서버의 주소입니다. 예) www.example.com.
  3. 포트(Port) (선택 사항)
    리소스에 접근하는 데 사용되는 네트워크 포트입니다. 기본적으로 HTTP는 80, HTTPS는 443을 사용합니다. 예) :8080.
  4. 경로(Path)
    서버 내의 리소스 위치를 나타냅니다. 예) /path/to/resource.
  5. 쿼리(Query) (선택 사항)
    리소스에 대한 추가적인 데이터를 제공할 수 있습니다. 예) ?query=example.
  6. 프래그먼트(Fragment) (선택 사항)
    리소스 내의 특정 부분을 가리킬 수 있습니다. 예) #section1.

3. URI와 URL의 차이점

(1) 포괄성과 구체성

  • URI: 더 포괄적인 개념으로, 리소스를 식별할 수 있는 모든 문자열을 포함합니다. URN과 URL을 모두 포함합니다.
  • URL: URI의 하위 개념으로, 리소스의 위치와 접근 방법을 구체적으로 설명합니다.

(2) 식별과 위치

  • URI: 리소스를 식별할 수 있는 방법을 제공하며, 꼭 리소스의 위치를 포함할 필요는 없습니다. 예: URN.
  • URL: 리소스의 위치를 가리키며, 해당 리소스에 접근하는 방법을 포함합니다.

(3) 사용 예시

  • URI: urn:isbn:0451450523와 같은 식별자. 이 URN은 책의 고유한 식별자를 나타냅니다.
  • URL: https://www.example.com/path/to/resource와 같은 위치. 이 URL은 특정 웹 페이지의 주소를 나타냅니다.


이렇게 오늘은 URI과 URL에 대해 알아봤는데요,
헷갈리기 쉬운 개념인만큼 면접에서도 충분히 나올 수 있는 질문이기 때문에 미리 공부해두면 좋을 것 같네요! 그렇다면 저는 다음에 또다른 면접에 대비한 내용을 들고오도록 하겠습니다 😁!

This post is licensed under CC BY 4.0 by the author.