인터넷을 이용하는 사람이라면 또는 개발자라면 URL이란 단어를 자주 접하고 들었을 것입니다.
URL은 많은 사람들이 흔히 웹 사이트 주소로 알고 있습니다.
그렇다면 이와 비슷한 URI라는 용어도 들어보셨나요?
구체적으로 무슨 뜻이며 이 둘 사이에 어떤 차이점이 있는지 알아보겠습니다.
URI 는 uniform Resource Identifier 라는 뜻으로 통합 자원 식별자 라고 합니다.
URI의 존재는 인터넷에서 요구되는 기본조건으로써 인터넷 프로토콜에 항상 붙어다니며,
URI의 하위 개념으로 URL과 URN이 있습니다.

만약에 인터넷이 큰 도서관이라면, 각 책마다 고유한 번호가 있는데 그것이 인터넷에서는
URI 라고도 합니다.
URL 은 uniform Resource Locater 의 약자로 네트워크 상에서 리소스의 위치를 나타내기 위한 규약 입니다.
쉽게 이야기 하자면 Resource의 정확한 위치 정보(파일의 위치)를 나타내며 URL을 통해 Resource가 어디에 있는지 어떻게 접근할 수 있는 지 알 수 있습니다.
특정 웹 페이지의 주소에 접속하기 위해서는 웹 사이트의 주소뿐만 아니라 프로토콜(https, http, sftp, smp 등)을 함께 알아야 접속이 가능한데, 이들을 모두 나타내는 것이 URL입니다.
프로토콜(protocol)이란, 리소스에 접근하는 방법을 지정하는 방식이며 http, https,ftp, file 등이 해당됩니다.

https://www.naver.com/ - 네이버의 URL
https://search.shopping.naver.com/best/today?rankedDate=20220922 - 네이버 쇼핑의 오늘의 베스트 카테고리 URL
https://www.youtube.com/feed/subscriptions - 유튜브의 구독한 목록 URL
URI와 URL를 쉽게 구분하는 방법은 URI 는 통합 자원 식별자로 주소에 식별자가 있으면 URI
URL은 리소스 주소를 나타내므로 리소스 위치까지만 나타내면 URL 입니다.
다음 예시를 통해 비교하며 이해해봅시다.
https://hstory0208.tistory.com/category
hstory0208.tistory.com 에서 category 라는 경로를 나타냅니다.
category는 리소스의 실제 위치이므로 이 주소는 URL 입니다.
https://hstory0208.tistory.com/category/12
hstory0208.tistory.com 에서 category 라는 자원의 경로를 나타내는 부분까진 URL 이지만
/12 는 식별자 이므로 https://hstory0208.tistory.com/category URL을 포함한 URI라고 할 수 있습니다.
https://hstory0208.tistory.com/category?page=12
위와 마찬가지로 https://hstory0208.tistory.com/category 까지는 자원의 실제 위치를 나타내기 때문에 URL이고, 뒤의 query ( ?page=12 ) 가 붙었으므로 https://hstory0208.tistory.com/category URL을 포함한 URI 입니다.

즉, URL은 어떻게 위치를 찾고 도달할 수 있는지까지 포함되어야 하기 때문에 프로토콜 + 이름(또는 번호)의 형태여야만 하며 URI 는 프로토콜을 제외하더라도 URI 라고 할 수 있습니다.
Scheme: 리소스에 접근하는 데 사용할 프로토콜. 웹에서는 http 또는 https를 사용
Host: 접근할 대상(서버)의 호스트 명
Path: 접근할 대상(서버)의 경로에 대한 상세 정보
Resource의 위치와 상관없이 식별 가능한 고유한 이름 역할을 합니다.
URN은 이름이 변하지 않는한, 리소스 위치가 변경되더라도 문제없이 동작합니다.
즉, 리소스 위치와 상관없이 이름만으로 식별할 수 있다는 개념입니다.
URN은 URL의 한계로 인해 생긴 것으로 아직까진 URL이 대중화가 되어 채택되지 못했습니다.