- Uniform : 리소스 식별하는 통일된 방식
- Resource : 자원, uri로 식별할 수 있는 모든 것(제한 없음)
- Identifier : 다른 항목과 구분하는데 필요한 정보
URI 는 URL 과 URN의 부모이며, URI 의 뜻은 웹의 자원을 식별하는 방법입니다.
우리가 흔히 아는 웹의 사이트가 URL 이며 예를 들면 사람이 사는 주소 같은 곳입니다.
URN은 말 그대로 이름이며, 자이 아파트 같이 이름을 예를 들수 있습니다.
📌 비교하기
URL - Locator : 리소스가 있는 위치를 지정
URN - Name : 리소스에 이름을 부여
URN 이 생겨난 배경은 URL 의 주소가 변하면 우리는 찾을 수 없어서 Name을 지정해 주소가 변경되도 찾을 수 있도록 설계가 되었습니다.
참고 : 개발자들 사이에서 URI와 URL 은 같은 의미로 통용되고 있습니다.
📁 URL
scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=url+urn#url
📌 scheme
- 주로 프로토콜을 사용합니다.
- 프로토콜이란 어떤 방식으로 자원에 접근할 것인가 하는 약속 또는 규칙입니다. (ftp, http, https)
- http는 80포트, https는 443 포트를 주로 사용하며, 이 2개의 경우 생략 가능합니다.
📌 userinfo
- URL에 사용자 정보를 포함해야 될때 사용합니다. 하지만 실제로 거의 사용하지 않습니다.
📌 host
- 호스트명이라고 불리고, 도메인명 또는 IP 주소를 직접 적어서 사용합니다. (우리가 흔히 아는 주소)
📌 port
- 포트(port) 라고 불리며, 접속하는 포트를 지정합니다.
- 위에서 말했듯이 포트를 생략하면 http는 80, https는 443이 자동으로 붙습니다.
📌 path
- 리소스 경로를 말하며, 계층적 구조로 이루어져 있습니다
- / 단위로 나뉘어져 있으며, 예를 들어 /img/file.png 의 경우 img 안에 있는 file.png를 가져와라는 의미입니다.
📌 query
- key=value 형태이며, ? 로 시작하고 &로 추가가 가능합니다.
- 공식적으로 쿼리(query)이지만, 실제 개발자들 사이에서는 (쿼리)파라미터 또는 쿼리 스트링으로 많이 불립니다.
📌 fragment
- html 내부 북마크 등에 사용되며, 한 페이지에서 어디로 이동되게 하고 싶을때 사용합니다.
- 서버에 전송하는 정보가 아닙니다.