인터넷을 이용하는 사람에게 URL이란 단어는 익숙하다.
URI, URL, URN이 무슨 정의와 차이점에 대해 알아보자.
URI, URL, URN의 정의
URI
Uniform : 리소스를 식별하는 통일된 방식
Resource : 자원, URI로 식별할 수 있는 모든 것
Identifier : 다른 항목과 구분하는데 필요한 정보
An individual scheme does not have to be classified as being just one
of "name" or "locator". Instances of URIs from any given scheme may
have the characteristics of names or locators or both, often
depending on the persistence and care in the assignment of
identifiers by the naming authority, rather than on any quality of
the scheme. ref- https://www.ietf.org/rfc/rfc3986
위의 그림과 IEFT에서 정의한 것 과 같이 URI는 URL(Locator), URN(Name) 또는 둘 다의 특성을 갖는 상위 개념이다.
URL
Uniform Resource Locator로 네트워크에서 리소스의 위치를 나타내는데 실제로 리소스를 가져오려면 웹 사이트 주소뿐 아니라 http 같은 프로토콜도 포함된다.
URN
Uniform Resource Name으로 리소스의 이름을 부여한다. URL과 달리 리소스의 이름만으로는 리소스를 가져올 수 없기 때문에 URN을 단독으로 사용하지 않는다.
많은 글들에 URI와 URL의 차이로 리소스 그 자체와 리소스의 위치의 같은 차이점으로 나타내는데 개념적으로는 맞지만 리소스의 이름과 리소스의 주소를 예시로 드는 글들이 많다. 이는 URI가 URN을 포함하고 있기 때문에 그러는 것 같은데 사실 이 차이는 URL과 URN의 차이로 봐야할 것 같다.
예를 들어 보자면
해당 URL로 이동하면 네이버 웹툰의 홈 페이지로 이동한다. 프로토콜(https)과 함께 정확한 리소스 위치이기 때문에 인터넷 브라우저는 해당 리소스를 가져올 수 있다.
하지만 URL 속의 comic, naver 등의 URN만 알아서는 해당 리소스를 불러 올 수 없다.
URL Scheme
scheme://[userinfo@]host[:port][/path][?query][#fragment]
scheme
주로 프로토콜을 사용하고 어떤 방식으로 자원에 접근할 것인가 하는 약속
프로토콜에 포트가 포함되어 있는 경우가 많아 이후 port 부분은 생략할 수 있다.
userinfo
URL에 사용자 정보를 포함해서 인증, 거의 사용 안함
host
호스트 명
도메인 명 또는 IP 주소를 직접 사용 가능, 도메인은 DNS가 반환해주는 IP로 변경
port
TCP 계층과 애플리케이션 계층 사이에서 사용할 애플리케이션을 위한 번호, 일반적으로 프로토콜에 포함되어 생략
path
리소스 경로
query
key=value의 형태
?로 시작하고 &로 추가하며 쿼리 스트링, 쿼리 파라미터로 불리고 문자 형태이다
fragment
html 내부 북마크에서 사용하며 서버로 전송되는 정보는 아님
참고
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
https://www.elancer.co.kr/blog/view?seq=74
https://www.charlezz.com/?p=44767