URI와 해당 친구들을 알아보자

Updated:

URI(Uniform Resource Identifier)

  • Uniform : 리소스를 식별하는 통일된 방식
  • Resource : 자원,URI로 제한 없이 식별할 수 있는 모든 것을 말합니다.
  • Identifier : 다른 항목과 구별하는데 필요한 정보를 말합니다.

보통 통합 자원 식별자 라고 불립니다. 말이 어려우니 풀자면 서버의 자원을 가리키는 고유 식별자(id)라고 생각하면 될 거 같습니다. ”URI는 로케이터(locator),이름(name)또는 둘 다 추가로 분류 될 수 있다”

img

출처: 인프런 김영한님의 HTTP 웹 기본지식 PPT자료에서 발췌

해당 그림을 보듯이 URI 가장 큰 개념이고, 그 안에서 URL과 URN으로 나뉘는 모습을 보이고 있습니다.

그럼 URL과 URN은 또 뭘까요?

URL - locator

  • 리소스가 “여기에 있어요”(보통 웹 브라우저의 주소)
  • 일반적으로 사이트 도메인을 의미합니다.
  • 프로토콜을 포함(ex: http,https)

URN - Name

  • 프로토콜을 포함하지 않습니다.
  • 리소스 “이름 자체”(그냥 이름을 부여하는 것)라 URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않습니다.

보통 사용되는 것이 URL이니 URL을 좀 더 면밀하게 살펴보겠습니다.

예제 주소

https://www.google.com/search?q=code&hl=ko

URI 문법

  1. scheme

일반 URI는 다음과 같은 형태를 나타냅니다. 프로토콜을 구분하는 구분자 : 앞 부분을 scheme 라고 합니다.

**scheme:**//[user[:password]@]host[:port]][/path][?query][#fragment]
**https:**//www.google.com/search?q=code&hl=ko
  • 주로 프로토콜 사용
    • 프로토콜이란 어떤 방식으로 접근할 것인지에 대한 규약(ex: http,https 등등)
  • http는 80포트, https는 443포트를 주로 사용하며, 포트는 생략이 가능합니다.
  1. userinfo
scheme://**[userinfo@]**host[:port][/path][?query][#fragment]
https://www.google.com/search?q=code&hl=ko
  • URL에서 사용자 정보를 포함해서 인증하는 것으로 거의 사용되고 있지 않습니다.
  1. host
scheme://[userinfo@]**host**[:port][/path][?query][#fragment]
https://**www.google.com**/search?q=code&hl=ko
  • 호스트명과 도메인명(여기서는 www.google.com) 또는 IP 주소를 직접 사용이 가능합니다.
  1. port
scheme://[userinfo@]host**[:port]**[/path][?query][#fragment]
https://www.google.com/search?q=code&hl=ko(port생략)
  • 일반적으로 생략이 가능하며 생략시에는 http는 80, https는 443이 자동으로 트리거가 됩니다.
  1. path
scheme://[userinfo@]host[:port]**[/path]**[?query][#fragment]
https://www.google.com**/search**?q=code&hl=ko
  • 리소스의 경로를 말하며, 계층적인 구조로 되어있습니다.
  • 계층적구조?
    • /items
    • /items/ipad1 ⇒ items안에 ipad1에 도달
  1. query
scheme://[userinfo@]host[:port][/path]**[?query]**[#fragment]
https://www.google.com/search**?q=code&hl=ko**
  • key=value 의 형태로 되어있으며 ? 로 시작하고 & 로 추가가 가능합니다. (ex : ?키1=값1&키2=값2)
  • 쿼리 파라미터, 쿼리 스트링으로 불립니다.

출처

인프런 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식

개발자 아저씨들 힘을모아