July 1, 2023 ˑ 5min read
인터넷 상 리소스에 접근하려면 URI, URL, URN와 같은 식별자가 필요합니다. 비슷한 이름이지만 이들간에는 어떠한 차이가 있을텐데요. 그래서 개념을 명확하게 알고 넘어가면 좋겠다는 생각이 들었습니다. 이번 글에서는 각 식별자가 어떻게 생겨나게 되었는지, 어떤 차이가 있는지 찾아본 내용을 정리해보았습니다.
1990년대 초 WWW(World Wide Web)을 제안한 팀 버너스 리는 웹이 점차 발전하게 되면서 더 많은 정보, 리소스에 접근할 필요가 생기게 되었으며 이를 위한 식별 체계에 대한 필요성을 제기했습니다. 이후 RFC 1630 - Universal Resource Identifiers in WWW 를 통해 URI(Uniform Resource Identifier) 라는 체계를 처음 제안하게 되었습니다.
맨 처음 등장한 URI는 다음과 같은 형태였는데요.
http://info.cern.ch/hypertext/WWW/TheProject.html
음.. URL과 같은 형태로 보이는데 어떤 차이가 있는걸까요? 사실 URI는 URL와 동일한 형태로 탄생했습니다. 이후에 URN이 등장하기 전까지는 말이죠.
URI의 등장 이후 위치 정보가 아니더라도 특정 리소스를 고유하게 식별할 수 있어야 한다는 필요성이 제기되었습니다. 리소스의 위치가 변하더라도 변하지 않는 이름으로 대상을 식별하고자 했던 것이죠. 예를들면, 도서관에서 책이 있는 책장의 위치가 아니라 책의 이름을 통해 책을 식별할 수도 있는 것 처럼요.
이렇게 탄생한 URN(Unified Resource Name)은 아래와 같은 구조로 생겼습니다.
URN:<namespace identifier>:<namespace-specific string>
모든 URN은 urn:
으로 시작합니다. 바로 뒤에는 Namespace Identifier(NID) 가 따라오는데요. isbn
, uuid
, doi
와 같이 네임스페이스를 특정하는 값이 사용될 수 있습니다.
그 뒤에는 네임스페이스 별로 리소스를 식별할 수 있는 고유한 문자열이 따라옵니다. 이 문자열은 네임스페이스 마다 다른 형태를 갖습니다.
실제 사용되는 URN의 예시를 보면 아래와 같아요.
URN | 설명 |
---|---|
urn:isbn:0451450523 | ISBN 번호(도서 고유 식별자) |
urn:uuid:123e4567-e89b-12d3-a456-426614174000 | UUID(범용 고유 식별자) |
urn:doi:10.1000/182 | DOI(디지털 객체 식별자, 연구 논문 등) |
urn:ietf:rfc:3986 | IETF RFC 문서 (RFC 3986) |
URN은 도서(ISBN), 논문(DOI), 표준화 문서(RFC) 등 고유한 식별이 필요한 경우 주로 사용됩니다.
URN의 등장 이후 1998년 RFC 2396 - Uniform Resource Identifiers (URI): Generic Syntax 을 통해 URI를 URL, URN의 상위 개념으로 구분하자는 제안이 나오게 되었습니다. 이를 통해 우리가 익숙하게 사용하는 URL(Uniform Resource Locator)은 위치를 포함하는 식별자로써 URI의 부분 집합으로 정리되었습니다.
그 이후 약 10년이 지난 2005년 1월 RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax 을 통해 URI의 문법을 이전보다 명확하게 정의하게 되면서 현대 URI의 공식 표준으로 자리잡게 되었습니다.
http
, https
, ftp
등)www.astrsk.dev
)/thumbnail.png
)?width=600&height=400
)#title
)정리해보자면, URI는 처음 등장했던 시점에는 URL과 같은 형태로 사용되었고 URN의 등장 이후 URI는 URL, URN을 포함하는 상위 집합을 의미하게 되었습니다.
이번 글에서는 각 식별자의 등장 시점에 따라 정리해보면서 어떤 차이점이 있는지 알아보았습니다. URI와 URL은 개인적으로 어떤 차이가 있는지 명확하지 않았는데 이번 기회에 확실하게 정리가 된 것 같아 뿌듯하네요!
Chrome Extension
Mar 4, 2024
20 min read
크롬, 파이어폭스, 엣지, 오페라와 같은 주요 브라우저는 기능을 확장하거나 수정할 수 있는 확장 프로그램을 개발할 수 있는 환경과 API를 제공합니다. 확장 프로그램은 웹페이지의 UI를 변경하거나, 브라우저 이벤트를 감지하여 필요한 동작을 수행하는 등 다양한 응용이 가능한데요. 이번 글에서는 크롬 브라우저의 확장 프로그램을 개발하기에 앞서 확장 프로그램의 구성에 필요한 파일들과 그 역할에 대해 알아보려고 합니다.
Chrome Extension
May 4, 2024
15 min read
Chrome, Firefox, Edge, Opera 등 주요 브라우저는 기능을 확장하거나 수정할 수 있는 확장 프로그램을 개발할 수 있는 환경과 API를 제공합니다. 확장 프로그램은 웹페이지의 UI를 변경하거나, 브라우저 이벤트를 감지하여 필요한 동작을 수행하는 등 다양한 응용이 가능한데요. 이번 글에서는 크롬 브라우저의 확장 프로그램을 개발하기에 앞서 확장 프로그램에 필요한 파일 구성과 그 역할에 대해 알아보려고 합니다.