웹개발 공부를 하면서 URL과 URI에 대해 자주 들었지만 둘 사이의 명확한 차이점을 알지 못해 정리를 해보게 되었다.
결론부터 말하면 URI가 URL의 상위개념이며 공부를 하며 느낀 점은 URL이라고 부르기보다 URI로 부르는 게 좀 더 정확하지 않을까라는 생각이 들었다.
아래는 URI에 대한 그림이다.
설명과 같이 URI는 URL과 URN을 포함하고 있다.
URI는 Uniform Resource Identifier
URL은 Uniform Resource Locator
URN은 Uniform Resource Name
의 약자이다.
자원의 식별자(URI), 위치(URL), 이름(URN)으로 유추해 볼 수 있다.
위의 그림을 통해 URI와 URL의 차이에 대한 나의 이해를 정리해보자면
(예가 정확하지 않을 수는 있지만 차이에 대한 나의 이해이다.)
예를 들어 http://opentutorials.org:3000/main?id=HTML&page=12 라고 되어있는 주소가 있다.
여기서 http://opentutorials.org:3000/main 여기까지는 URL이고(URI이기도 한)
http://opentutorials.org:3000/main?id=HTML&page=12 이 것은 URI라고 할 수 있다. (URL은 아닌)
이유는 URL은 자원의 위치를 나타내 주는 것이고 URI는 자원의 식별자인데
?id=HTML&page=12 이 부분은 위치를 나타내는 것이 아니라 id값이 HTML이고 page가 12인 것을 나타내주는 식별하는 부분이기 때문이다.
통상적으로 URL이라고 얘기를 하지만 정확하게는 URI라고 하는 것이 맞다고 생각한다.
인터넷 상의 자원의 위치와 식별자.
언듯 보면 같은 것을 의미하는 듯 하다.
하지만 '자원의 위치'라는 것은 결국은 '하나의 파일 위치'를 나타내는 것임을 명심하자.
http://img0.gmodules.com/ig/images/korea/logo.gif
이와 같은 형식은 logo.gif라는 인터넷상의 자원 위치를 의미 한다.
이는 URI이면서도 URL라고 말할 수 있다.
다음은 어떠한가.
http://endic.naver.com/endic.nhn?docid=1232950
http://endic.naver.com/란 서버에 위치한 endic.nhn파일은 query string인 docid의 값에 따라 여러가지 결과를 나타낸다.
여기서 URL은 endic.nhn의 위치를 표기한 http://endic.naver.com/endic.nhn 까지이다.
내가 원하는 정보에 도달 하기위해서는 ?docid=1232950라는 식별자(Identifier)가 필요한 것이다.
결국 위의 http://endic.naver.com/endic.nhn?docid=1232950 주소는 URI이긴 하지만 URL은 아니다.
또다른 예를 들면,
http://endic.naver.com/endic.nhn?docid=1232950
http://endic.naver.com/endic.nhn?docid=1232690
위 두 주소는 같은 URL이고 다른 URI라고 할 수 있다.
(이건 좀 억지긴 하지만 개념을 이해하기 바란다.)
출처: http://lambdaexp.tistory.com/39 [프로그래머 인생길..]
안녕하세요 글 잘봤습니다.
혼동 되는 점이 있는데 위키를 보면(https://ko.wikipedia.org/wiki/URL)
URL 스킴은 아래와 같습니다.
scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]
쿼리스트링을 포함하는 경우도 URL라고 하네요..