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=koscheme
://[userinfo@]host[:port][/path][?query][#fragment]
주로 프로토콜이 사용된다.
- 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 에 대한 약속 규칙
- e.g. http, https, ftp 등
http
는80
,https
는443
포트를 주로 사용한다. (생략가능)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 웹 기본 지식, 인프런 김영한 강사님