네트워크

URI URL URN 개념정리

다시 보는 2023. 11. 6. 17:47
728x90

읽어보시기에 앞서, URI에 대한 인터넷표준인 RFC 3986 에서는 아래와 같이 권고하고 있습니다. 

향후 사양 및 관련 문서에서는 제한적인 용어인 "URL" 및 "URN" 대신 일반 용어인 "URI"를 사용해야 합니다.

 

하지만 저 문서가 작성될 당시였던 2005년에 비해 지금에 와서 URI와 URL을 구분하는 것은 큰 의미가 없어졌습니다.

URI 혹은 URL 둘 다 동의어처럼 쓰거나, 실생활에서는 '링크'라고 부르는 상황에서 굳이 구분해서 외워둘 필요가 있을까 싶지만.. 알아둬서 나쁠 건 없으니 정리해두려고 합니다.    

 

 

URI URL URN 관계

 

URI(Uniform Resource Identifier)

우리말로 통합 자원 식별자입니다.

 

Uniform은 통일된 특정 방식을 의미하고,

Resource는 뜻 그대로 자원(웹 파일, 영상, 기타등등)을 의미하며,

Identifier는 다른 자원과 구분되는 정보입니다.

 

종합하면 URI는 인터넷에 있는 특정한 리소스 자체를 식별하는 문자열입니다.

 

 

URI 구성요소

 

  • 스키마 : 리소스에 접근하는데 필요한 프로토콜을 의미합니다. 
  • 호스트 : 리소스를 호스팅하는 서버의 도메인이나 IP 주소를 적습니다.
  • 포트 : 선택사항으로, 해당 리소스에 접근할 수 있는 호스트의 특정 포트를 적습니다.
    • 적지 않으면 기본 포트(443,80)으로 적용됩니다.
  • 경로 : 선택사항으로, 리소스가 위치한 호스트의 특정 디렉터리와 리소스 이름을 나타냅니다. 
  • 쿼리 파라미터 : 선택사항으로, 경로 뒤에 적으며 ? 기호 뒤에 적습니다. 
  • 조각 식별자(Fragment Identifier) : 선택사항으로, 웹페이지의 특정 섹션을 나타냅니다.

 

아래 나올 URL, URN은 리소스를 식별하는 문자열이므로 URI라고 부를 수 있습니다.

반대로 URI를 URL이라고 부른다면 사전적으로는 틀릴 수 있습니다.

예를 들면,

"어제 새로 생긴 민트초코 우동 가게 민동민동에서 저녁을 먹었어"

이 말은 전세계에 유일한(Identifier) 민트초코 우동 가게 민동민동에 대한 정보(resource)를 담고 있으므로 URI입니다.

하지만 어떻게 가는지를 설명하지 않았기 때문에 URL이 아닙니다.

 

즉 아래와 같은 데이터 URI라고 할 수 있습니다.  

data:text/plain;base64,SGVsbG8gV29ybGQh

 

   

URL(Uniform Resouce Locator)

통합 자원 지시자 입니다.

 

Locator라는 단어의 뜻처럼, 위치를 나타내는 특정 URI입니다.

 

웹페이지에 접속하기 위한 표준화된 형식이며, 우리가 가장 많이 접하는 체계입니다.

 

URI 구성요소

 

다시 사진에서 보면 Path라고 표시된 부분까지, 즉 ? 앞까지가 URL입니다.

 

? 에 대해 조금 더 정리하면 자원 식별 방식 중에서 Query Parameter 방식입니다.

물음표 뒤에 조건을 걸어서 리소스를 필터링하는 형태입니다.

구글이나 네이버, 다음에 검색을 하면 아래와 같이 주소창에서 쉽게 볼 수 있습니다. 

https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EC%9E%91%EC%9D%80%EC%A3%BC%EB%A8%B8%EB%8B%88

 

다른 방식으로는 여기 Tistory에서 사용하는 Path Variable 방식이 있습니다.

ID 값을 가지고 자원을 식별하는 방식입니다.

https://small-pocket.tistory.com/5
https://small-pocket.tistory.com/6
https://small-pocket.tistory.com/7

 

 

만약 이 Path Variable 방식을 Query Parameter 방식으로 변경하면 아래와 같이 바뀌겠죠.

https://small-pocket.tistory.com?id=5
https://small-pocket.tistory.com?id=6
https://small-pocket.tistory.com?id=7

URN(Uniform Resouce Name)

 

통합 자원 이름 입니다.

 

URL이 특정 리소스 위치를 나타냈다면, URN은 특정 리소스 이름을 나타냅니다.

 

철수가 url urn에 대한 포스트를 열심히 작성해서 블로그에 업로드했습니다.

포스트의 주소는 철수가 지정한 카테고리에 따라 https://small-pocket.tistory.com/network/url-urn 가 되었습니다.

영희가 이 글이 마음에 들어서 나중에 다시 보려고 즐겨찾기로 등록했습니다.

그런데 철수가 블로그 개편을 하면서 이 포스트를 다른 카테고리로 옮겼고, 아래와 같은 주소로 바뀌게 됐습니다.

https://small-pocket.tistory.com/web/url-urn 

영희가 다시 즐겨찾기를 클릭해서 이 포스트를 찾으려고 하지만 브라우저는 404 에러를 뱉어버립니다.

 

위와 같은 일은 URN에서는 발생하지 않습니다.

network 디렉토리에 있든 web 디렉토리에 있든 url-urn 포스트의 이름을 식별하기 때문입니다.

또한 이 이름은 시간이 지나도 변하지 않는 영구 식별자입니다.

그래서 일반적으로 학술 논문, 디지털 서적과 같이 장기간 지속성과 일관된 식별이 필요한 리소스에 사용됩니다.

 

urn 구성요소

  • URN: 식별자가 URN임을 나타냅니다.
  • 네임스페이스: URN을 정의하고 관리하는 고유한 네임스페이스 또는 식별자 시스템을 나타냅니다. 
    • 식별자의 고유성을 보장합니다.
    • ISBN(국제 표준 도서 번호), ISSN(국제 표준 일련 번호) 등이 있습니다.
  • 식별자: 지정된 네임스페이스 내에서 리소스를 고유하게 식별하는 문자열입니다. 식별자 자체는 리소스의 위치나 액세스 방법에 대한 정보를 전달하지 않습니다.

 

그러나, 현재 인터넷을 통해 URN으로 특정 자원에 접근하는 방식은 표준화되거나 제대로 구현되지 않았습니다.

그래서 URN을 접할 수 없으므로 개념적으로만 정리했습니다.

 

 

Point

1. 모든 URL은 URI 이다.

2. 모든 URN은 URI 이다.

728x90