URL과 URI의 의미와 차이점 (Difference between URL & URI)
2011년 작년, 지인이 나에게 물어봤다.
지인은 인터넷 관련 대기업에 면접을 본 후였고 면접 내용에 대해서 말해주었다.
“URL이 무슨 약자인지 물어봤는데 대답을 못했어.”
라엘이의 대답은
“Uniform Resource Locator 의 약자인데 말 그대로 정형화 된 리소스 위치표시 라는 뜻이지.”
“그리고 면접관이 실무자가 아니었나본데 요즘은 URL이라는 용어를 잘 안쓰고 URI라고 써”
외국 사이트들의 트랜드를 봤을 때
요즘은 URL보다는 URI라는 용어를 사용하는 것을 알 수 있다.
우선
URL은 Uniform Resource Locator
URI는 Uniform Resource Identifier
이다.
그냥 단어의 뜻대로 해석하자면 예전에는 URL이 가리키는게 자원(파일) 위치 였는데
요즘은 Rewrite 등의 Apache , IIS, Tomcat 핸들러 때문에 자원 식별자 이라고 부른다.
즉 요즘에는 웹사이트 주소가 (http://test.com/company/location) 라고 했을 때
요청하는 주소가 파일의 위치를 말하는 것(Location)이기 보다는 구분자(Identifier)로 보는 것이다.
실제로 해당 웹사이트의 company/location 라는 파일은 없다. (아마도 company 클래스의 location 메소드를 호출할 것이다. 이렇게 구분자(Identifier)로 보는 것이 URI 이다.)
요약하자면 URL 은 다음과 같다.
http://test.com/work/sample.pdf
test.com 서버에서 work 폴더안의 sample.pdf 를 요청하는 URL.
URI(통합 자원 식별자) 의 예는 다음과 같다.
1) rewrite 기술을 사용하여 만든 의미있는 식별자
http://test.com/company/location
2) REST 서비스 (url로 실행되는 서비스)
http://service.com/tv/turn/on
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
#내용추가 . 13.07.15
위키백과 보고 조금 더 추가합니다.
요즘 URI를 쓰는이유가 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 으로 매칭하도록 짤수 있겠군요.
#내용추가 : 20.09.28
유명한 클라우드 컴퓨팅 업체 Amazon Cloud 에서는 Resource를 지정할 때 URN을 확장한, ARN 을 사용합니다.
arn:aws:kms:ap-northeast-2:888869365995:key/679f76c9-a93d-4144-8163-9319e9d9cd18
이런 형태인데, 해석하자면 arn 문법이고, aws 클라우드의, kms 서비스이고, ap-northeast-2(서울) 지역의, 888869365995 사용자의, key/679f76c9-a93d-4144-8163-9319e9d9cd18 리소스를 말합니다.
요즘, 이러한 URN 형태의 문법을 다양한 분야에서 사용하고 있으니, 당황하지 마시고, “리소스를 지칭하는 것이구나! URI의 한 종류이구나!“라고 기억하시기를 바랍니다.
http://javapapers.com/servlet/uri-and-url-difference/
웹 기반 구조문법에서 http가 아닌 다른 프로토콜을 해석할 수 있는 프로그램이 핸들링한다고 하셨는데, 그 프로그램이 어디에 위치하고 있는 건가요?
따로 해석하는 프로그램을 설치하셔야 합니다.
– 예를 들어 다음의 URI Schema (storylink://) 를 사용하면 카카오스토리 앱이 실행되면서 해석하고 동작합니다.
http://www.kakao.com/services/api/story_link
– 요즘 가장 많이 쓰이는 것은 아이폰 앱스토어 및 안드로이드 앱스토어 링크입니다.
http://developer.android.com/distribute/tools/promote/linking.html
알기 쉽게 잘 설명해주셨네요. 잘 이해 되었습니다.
감사합니다.
이해하기 쉽게 잘 설명해주셨네요. 감사합니다. 좋은 정보라서 제 블로그로 담아갑니다.
http://blog.naver.com/playdad/220796139262
네. 저도 가끔씩 제 글을 읽어보면서 “더 쉽게 설명하는 방법 없을까” 고민하고 수정하고는 합니다.
좋은글 감사합니다.
넹 감사합니당!
정말 좋은 정보 감사합니다. 저도 좋은 정보가 있어서 이 글좀 인용하겠습니다 ㅎㅎ
좋은 정보 감사합니다. 제블로그에 담아가도될까요.
이해하기 쉽게 잘 정리해주셔서 너무 감사합니다 😀
캄솨합니다! 기본 지식은 알고 있는게 좋아요.
좋은 정보감사합니다.
안드로이드 개발을 하면서 url 과 uri 를 쓰고있었지만 둘의 개념과 약자도 모른 상태로 사용만 하고있었는데 이번기회에 이해가 갔습니다. 감사합니다 ^^
멋진 안드로이드앱을 만들어주세요! 또한 개발하다가 알게된 팁은 티스토리나 워드프레스 블로그로 만들어서 적어주세요!
좋은 설명 감사합니다
좋은 설명 감사합니다!
좋은 설명 감사합니다.!!
좋은 내용 너무 감사합니다
도움많이 되었어요 감사합니다
쉽게 설명해주셔서 잘 이해하고 갑니다