Groo

URI & URL & URN 본문

프로그래밍 기초/Network

URI & URL & URN

김주엽 2020. 12. 1. 14:07

안녕하세요, 오늘은 인터넷 상의 용어로 평소에 자주 헷갈리고 궁금했던 내용에 대해
자세히 알아보고 정리하려고 합니다. URI & URL & URN의 의미와 각각의 차이점은 무엇일까요?

📬 URI란?

먼저 URI의 약자는 Uniform Resource Identifier이며 이를 해석하면 자원의 식별자라는 뜻을 가지고 있습니다. 즉 인터넷 상에서 어떤 자원을 식별하기 위한 문자열의 구성이라고 말할 수 있으며 이는 URL과 URN의 상위 개념으로서 이들을 포함하고 있습니다.

 

아래에서 추후 배울 URL과 URN은 URI에 포함되는 관계이며 이 둘의 차이는 자원을 식별하는 방식이 다르다는 것입니다. 즉 다시 한번 정리하자면 URL과 URN은 URI의 하위 개념이며 자원을 식별하는 목적은 같으나 서로의 식별 방식이 다르다고 할 수 있습니다.

 

URI는 URL과 URN의 상위 개념이기에 평소에 주변에서 흔히 보던 문자열의 주소가 대부분 URI에 포함될 것입니다. 그렇기에 URI의 하위 개념과 구별이 힘들 수도 있을 것 같아 위에서 말했었던 URI는 자원의 식별자라는 것을 잊지 말고 꼭 기억해주시기 바랍니다.

 

URI 예시 (1)

http://www.school.com/grade/2 
URI 예시 (2)

http://www.school.com/student?name=김주엽

📊 URL이란?

URI의 하위 개념 중 첫 번째 URL의 약자는 Uniform Resource Locator이며 이를 해석하면 자원의 위치라는 뜻을 가지고 있습니다. 즉 인터넷 상에서 어떤 자원을 식별할 때 자원의 위치를 활용하여 특정 자원을 식별하겠다는 것입니다. 아래의 예시를 보시죠!

 

URL 예시 (1)

http://www.school.com/grade/2
URL 예시 (2)

http://www.school.com/student?name=김주엽

위 예시의 특정 문자열 주소에서 URL은 위에서 보았던 URI와는 달리 포함 범위가 조금 더 짧은 모습을 볼 수 있습니다. 예시 1의 경우 grade 다음에 나오는 숫자에 따라 특정 자원의 결과가 다르게 나올 수 있기 때문에 이는 자원의 위치의 역할을 하는 URL보다는 자원의 식별자 역할을 하는 URI와 더욱 적합하기에 숫자 값 이전의 grade까지가 문자열 주소에서의 URL이라고 할 수 있는 것입니다.

 

위와 동일한 방식의 예시 2의 경우에도 student 다음에 나오는 쿼리 문인 name 값에 따라 특정 자원의 결과가 다르게 도출될 수 있기 때문에 이는 자원의 위치 역할을 한다기보다는 URI와 같이 자원의 식별자 역할을 하므로 name 이전까지가 URL인 것입니다.

 

아직도 URI와 URL의 범위 차이가 헷갈린다면 위의 그림을 통해 개념을 다시 한번 숙지하시기 바랍니다. URI와 같은 경우 문자열 주소 전체에 해당하지만 반면에 URL과 같은 경우는 Parameters 이전 Path To The File까지만 포함되는 것을 숙지하시기 바랍니다.

💬 URN이란?

URI의 하위 개념 중 두 번째 URN의 약자는 Uniform Resource Name이며 이를 해석하면 자원의 이름이라는 뜻을 가지고 있습니다. 즉 인터넷 상에서 어떤 자원을 식별할 때 자원의 이름을 활용하여 특정 자원을 식별하겠다는 뜻입니다. 여기서 자원의 이름은 특정 자원을 얻을 수 있는 위치 정보를 포함하지 않고 자원의 위치에 상관없이 고유한 이름만으로 특정 자원을 식별하려는 목적입니다.

 

URN 예시 (1)

urn : isbn : 1234567891234 (국제표준도서번호)
URN 예시 (2)

urn : uuid : 6e8bc430-9c3a-11d9-9669-0800200c9a66 (범용 고유 식별자)

👍 글을 마치며

오늘은 평소에 자주 헷갈리고 궁금했던 URI & URL & URN에 대해서 공부해보았습니다. 실제 프로그래밍 속 네트워크 통신을 할 때 URI와 URL에 대한 개념이 없다 보니 서버 통신 부분에서 힘든 부분이 존재했으며 공부의 필요성을 느꼈습니다. 어떤 분야든 기초가 중요하며 기본을 잘 다뤄야지 추후 어려운 내용을 배울 때 힘들지 않고 많은 도움이 될 것이라고 생각했습니다. 혹시나 오늘 제가 작성한 글에서 잘못된 내용이 있거나 다른 의견이 존재하신다면 댓글 남겨주시면 빠르게 확인해 답변하도록 하겠습니다. 감사합니다.

'프로그래밍 기초 > Network' 카테고리의 다른 글

네트워크 첫걸음  (0) 2020.08.13
REST API 방식의 이해  (0) 2020.04.16
Comments