[WEB] URI, URL, URN
REST를 공부할 때에 URI란 단어를 처음 보았다. URL과의 차이점에 대한 혼돈이 있었는데 정확하게 알고 싶어
해당 내용을 학습한 내용을 정리합니다.
URI은 URL, URN을 포함하는 가장 큰 개념으로 리소스(자원)를 식별하는 방법이라 할 수있다.
URI(Uniform Resource Identifier)
URI는 로케이터(Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있으며
URI의 단어 뜻을 살펴보면
- Uniform : 리소스 식별하는 통일된 방식
- Resource : URI로 식별할 수 있는 모든 것을 뜻한다. EX) file, html파일 등
- Identifier : 다른 항목과 구분하는데 필요한 정보
단어의 뜻을 보면 명확하게 차이를 알 수 있는데
결국 리소스(자원)를 식별할 때 식별 기준이 자원의 위치면 URL, 자원의 이름이면 URN이 된다.
URL, URN의 단어 뜻도 살펴보면
URL : Uniform Resource Locator
- Locator : 리소스가 있는 위치를 표기하여 해당 위치에 리소스가 있음을 알 수 있다.
URN : Uniform Resource Name
- Name : 리소스에 이름을 부여하여 고유 이름으로써 리소스를 구분한다.
URN은 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되어 있지 않아 거의 사용하지 않는다.
(학습하면서 처음 봤다.)
중요한 건 주로 사용하는 URL이다.
URL 분석
URL의 전체 문법을 살펴보면 아래와 같다.
scheme://[userinfo@]host[:port][/path][?query][#fragment]
예시로
https://www.google.com/search?q=html 라는 URL을 통해 분석을 해보면
scheme
주로 프로토콜이 사용된다.
프로토콜 : 어떤 방식으로 자원에 접근할 것인가 하는 약속, 규칙
ex) https, http, ftp
userinfo
URL에 사용자 정보를 포함해서 인증
거의 사용하지 않는다.
host
www.google.com
호스트명 도메인명, IP 주소를 직접 사용 가능하다.
port
접속 포트 정보
일반적으로 생략하며 생략 시 http는 80, https는 443(기본 포트)을 사용한다.
path
리소스 경로(path)가 입력되며 주로 계층적 구조로 이루어져 있다.
ex) /file/image1.jpg, members/102
query(쿼리)
정식 이름은 쿼리이지만 주로 쿼리 파라미터, 쿼리 스트링으로 불린다.
이유는 웹서버의 전달하는 파라미터 정보, 문자로 구성돼있기 때문이다.
key=value 형태이며
?로 시작하고 &로 추가 가능하다.
fragment
html 내부 북마크 뜻한다.