CS/Network

URI

oxdjww 2023. 10. 2. 17:30
728x90
반응형

Intro

본 포스팅에서는 URI에 대해 다룬다.

URI? URL? URN?

다양한 용어들이 있다.
이 용어들을 다음과 같이 정리가능하다.

| "URI는 Locater, Name 또는 둘다 추가로 분류될 수 있다."

ref : https://www.ietf.org/rfc/rfc3986.txt - 1.1.3. URI, URL, and URN

다이어그램으로 나타내면 다음과 같다.



URI(Uniform Resource Identifier) : 리소스를 식별할 수 있는 개념
URL(Uniform Resource Locator) : 위치를 통해 리소스를 식별할 수 있는 것
URN(Uniform Resource Locator) : 이름을 통해 리소스를 식별할 수 있는 것

ref : https://www.ietf.org/rfc/rfc3986.txt

URI의 정의

  • Uniform: 리소스 식별하는 통일된 방식
  • Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)
  • Identifier: 다른 항목과 구분하는데 필요한 정보

URL, URN의 정의

  • URL : 리소스가 있는 위치를 지정
  • URN : 리소스에 이름을 부여
  • 위치는 변할 수 있지만, 이름은 변하지 않는다.
    • urn:isbn:8960777331 (어떤 책의 isbn URN)
  • URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않았다.

URL 분석


https://www.google.com/search?q=hello&hl=ko
scheme://[userinfo@]host[:port][/path][?query][#fragment]


([]이 붙은 것은 optional)

프로토콜명(scheme) : https
호스트명 : www.google.com
포트번호 : 443
path : /search
쿼리 파라미터 : q=hello&hl=ko

scheme


https://www.google.com/search?q=hello&hl=ko
scheme://[userinfo@]host[:port][/path][?query][#fragment]


주로 프로토콜이 사용된다.

  • 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 에 대한 약속 규칙
    • e.g. http, https, ftp 등
  • http80, https443 포트를 주로 사용한다. (생략가능)
  • https = http + 보안성(ssl/tls)

userinfo


https://www.google.com/search?q=hello&hl=ko
scheme://[userinfo@]host[:port][/path][?query][#fragment]


URL에 사용자 정보를 포함하여 인증할 때를 일컫는다.
거의 사용하지 않는다.

host


https://www.google.com/search?q=hello&hl=ko
scheme://[userinfo@]host[:port][/path][?query][#fragment]


호스트명이다.
도메인명 / IP주소를 직접 입력 가능하다.

port


https://www.google.com/search?q=hello&hl=ko
scheme://[userinfo@]host[:port][/path][?query][#fragment]


접속하는 포트 번호이다.
일반적으로 생략 가능하다. 생략 시 해당 프로토콜의 디폴트 포트값으로 입력된다

  • http : 80, https : 443

[About Port](https://oxdjww.tistory.com/entry/Port)

path


https://www.google.com`/search`?q=hello&hl=ko
scheme://[userinfo@]host[:port][/path][?query][#fragment]


리소스의 경로이다. 계층적 구조로 이루어져 있다.

e.g.
/home/file1.jpg
/members
/members/100
/items/iphone15

query


https://www.google.com/search`?q=hello&hl=ko`
scheme://[userinfo@]host[:port][/path][?query][#fragment]


  • key=value 형태로 이루어져 있다.
  • ?로 시작하고, &로 쿼리를 추가할 수 있다.
  • query parameter, query string등으로 불린다. 웹 서버에 제공하는 파라미터이고, 문자형태이다.
  • 위의 예제에서는 다음과 같이 해석 가능하다.
    • q라는 key값에 value를 무언가를 주면 입력받은 value를 검색한다.
    • hl라는 key값에 value를 무언가를 주면 입력받은 value의 언어를 기반으로 데이터를 검색해줄게.
    • 이런 key=value에 대한 규칙은 서비스마다 다르다. 위의 규칙은 google의 규칙.

fragment


https://docs.spring.io/spring-boot/docs/current/reference/html/getting-
started.html#getting-started-introducing-spring-boot**
scheme://[userinfo@]host[:port][/path][?query**][#fragment]


html 내부 북마크 등에 사용된다.
서버에 전송하는 정보가 아니다.

감사합니다.

Ref

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

728x90
반응형

'CS > Network' 카테고리의 다른 글

HTTP의 기본  (0) 2023.10.03
웹 브라우저 요청 흐름  (0) 2023.10.02
DNS  (0) 2023.10.02
Port  (0) 2023.10.02
TCP, UDP  (0) 2023.10.02