# 네트워크 : URL / URI

일반적으로 홈페이지 경로를 나타내는데 URL을 주로 사용했던 것 같은데, 이번에 Restful API를 공부하면서 URI이라는 개념에 대해 새롭게 알게되었다.

우선 URL에 대해서 간단하게 설명하자면,

URL (Uniform Resource Locator)

- 파일 식별자, 유일자원지시기, 자원
- 인터넷 상의 자원에 접근할 수 있는 경로
- 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약
https://ko.wikipedia.org/wiki/URL

그렇다면 URI는 무엇일까?

URI (Uniform Resource Identifier)

- 통합 자원 식별자
- 인터넷에 있는 자원을 나타내는 유일한 주소
- 인터넷에서 요구되는 기본 조건이며, 인터넷 프로토콜에 항상 붙어다니는 존재

실제 나타내는 의미의 크기를 비교하자면
URI > URL 이 되고, 좀 더 자세히 말하자면 URI = URL + URN 이다.
(URN에 대해서는 https://ko.wikipedia.org/wiki/URN을 참고하자)

쉽게 표현하자면 URI는 자원을 식별할 수 있는 문자열 이라고 표현할 수 있다.

다음의 예는 URL이면서 동시에 URI를 나타내는 내용을 보인다.

http://ko.wikipedia.org
- 위의 주소는 서버로 이동하는 경로와 서버 자체 주소를 의미한다.
- 그러므로 URL이면서 URI가 된다.

그렇다면 https://ko.wikipedia.org/wiki/URL 는 어떻게 될까?
- http://ko.wikipedia.org 주소 하위에 있는 wiki 디렉토리, 그리고 그 하위의 URL이라는 자원의 위치를 가리킨다.
- 그러므로 URL이면서 URI가 된다.

다음의 예는 URL은 아닌데, URI인 경우를 보인다.

https://www.blogger.com/blogger.g?blogID=7910522628685586466
- https://www.blogger.com는 HTTPS 프로토콜과 호스트 이름을 갖지만, 뒤에 있는 blogger.g?blogID=7910522628685586466의 경우에는 ?뒤에 있는 blogID 값에 따라 다양한 결과 값을 가져올 수 있다.
- 결국 URL은 https://www.blogger.com/blogger.g 까지가 되고, 위의 전체 주소는 URI가 되지만 URL은 될 수 없다.

추가로 위 글에 '자원'이라는 단어를 자주 사용하였는데, 이전에는 URL이 이름 그대로 '파일 리소스'의 기능을 갖고 있었지만 최근에는 Rewrite, Apache, IIS, Tomcat 등의 핸들러 등에 의하여 자원이라고 불린다고 한다.

p.s 참고 사이트는 다음과 같다.

댓글