우선
URL은 Uniform Resource Locator
URI는 Uniform Resource Identifier
이다.
그냥 단어의 뜻대로 해석하자면 예전에는 URL이 가리키는게 파일리소스 였는데
요즘은 Rewrite 등의 Apache , IIS, Tomcat 핸들러 때문에 자원 이라고 부른다.
즉 웹사이트 주소가 (http://test.com/adultdisease/diabetes) 라고 했을 때
요청하는 주소가 파일이라기 보다는 구분자로 보는 것이다.
실제로 해당 웹사이트의 adultdisease/diabetes 라는 파일은 없다.
요약하자면 URL 은 다음과 같다.
http://test.com/work/sample.pdf
test.com 서버에서 work 폴더안의 sample.pdf 를 요청하는 URL.
URI(통합 자원 식별자) 의 예는 다음과 같다.
1) rewrite 기술을 사용하여 만든 의미있는 식별자
http://test.com/company/location
2) REST 서비스 (url로 실행되는 서비스)
3) Web-oriented architecture (웹 기반의 구조문법)
kakaotalk://sendmsg?text=hello! (이 uri는 kakaotalk 프로토콜을 해석할 수 있는 프로그램이 핸들링한다. 해당프로그램은 sendmsg 라는 식별자를 해석하고 동작한다.)
facebookmsg://like?url=mysite.com (이 uri는 facebookmsg 프로토콜을 해석할 수 있는 프로그램이 핸들링한다. 해당프로그램은 like 라는 식별자를 해석하고 동작한다.)
이해하기 쉽게 동물로 표현하자면.
URI(동물) 가 좀더 상위 개념이라서 URL(강아지), URN(다람쥐) 등의 하위 개념을 포함한다.
URI 와 URL 이 아예 다른게 아니라 포함관계라서
모든 URL 는 URI 이다. 가 성립힌다. (TRUE)
URI = URL + URN
URI 가 URL과 URN을 포함하는데 URN은 Uniform Resource Name 의 약자이다.
URN 문법은
urn:isbn:0451450523
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
이런건데 isbn이나 uuid를 해석가능한 프로그램이 있어야 동작합니다.
예를 들어서 urn을 만들어보자면
urn:laelbe:blog-61
을 쓰고 laelbe 해석 프로그램을 만든다음에 https://blog.lael.be/post/61 으로 매칭하도록 짤수 있겠다.
[출처] URL과 URI의 차이점|작성자 이회장