URL과 URI의 의미와 차이점 (Difference between URL & URI)

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 20 comments

https://blog.lael.be/post/61

2011년 작년, 지인이 나에게 물어봤다.

지인은 인터넷 관련 대기업에 면접을 본 후였고 면접 내용에 대해서 말해주었다.

“URL이 무슨 약자인지 물어봤는데 대답을 못했어.”

 

라엘이의 대답은

“Uniform Resource Locator 의 약자인데 말 그대로 정형화 된 리소스 위치표시 라는 뜻이지.”

“그리고 면접관이 실무자가 아니었나본데 요즘은 URL이라는 용어를 잘 안쓰고 URI라고 써”

 

외국 사이트들의 트랜드를 봤을 때

요즘은 URL보다는 URI라는 용어를 사용하는 것을 알 수 있다.

 

우선

URLUniform Resource Locator

URIUniform 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/

20 Comments

  1. 웹 기반 구조문법에서 http가 아닌 다른 프로토콜을 해석할 수 있는 프로그램이 핸들링한다고 하셨는데, 그 프로그램이 어디에 위치하고 있는 건가요?

    1. 따로 해석하는 프로그램을 설치하셔야 합니다.
      – 예를 들어 다음의 URI Schema (storylink://) 를 사용하면 카카오스토리 앱이 실행되면서 해석하고 동작합니다.

      http://www.kakao.com/services/api/story_link

      – 요즘 가장 많이 쓰이는 것은 아이폰 앱스토어 및 안드로이드 앱스토어 링크입니다.
      http://developer.android.com/distribute/tools/promote/linking.html

  2. 알기 쉽게 잘 설명해주셨네요. 잘 이해 되었습니다.

  3. 이해하기 쉽게 잘 설명해주셨네요. 감사합니다. 좋은 정보라서 제 블로그로 담아갑니다.
    http://blog.naver.com/playdad/220796139262

    1. 네. 저도 가끔씩 제 글을 읽어보면서 “더 쉽게 설명하는 방법 없을까” 고민하고 수정하고는 합니다.

  4. 좋은글 감사합니다.

  5. 정말 좋은 정보 감사합니다. 저도 좋은 정보가 있어서 이 글좀 인용하겠습니다 ㅎㅎ

  6. 좋은 정보 감사합니다. 제블로그에 담아가도될까요.

  7. 이해하기 쉽게 잘 정리해주셔서 너무 감사합니다 😀

    1. 캄솨합니다! 기본 지식은 알고 있는게 좋아요.

  8. 좋은 정보감사합니다.
    안드로이드 개발을 하면서 url 과 uri 를 쓰고있었지만 둘의 개념과 약자도 모른 상태로 사용만 하고있었는데 이번기회에 이해가 갔습니다. 감사합니다 ^^

    1. 멋진 안드로이드앱을 만들어주세요! 또한 개발하다가 알게된 팁은 티스토리나 워드프레스 블로그로 만들어서 적어주세요!

  9. 좋은 설명 감사합니다

  10. 좋은 설명 감사합니다!

  11. 좋은 설명 감사합니다.!!

  12. 좋은 내용 너무 감사합니다

  13. 도움많이 되었어요 감사합니다

  14. 쉽게 설명해주셔서 잘 이해하고 갑니다

HYEONG HWAN, MUN에 답글 남기기 응답 취소

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*