개발을 하면서 URI, URL, URN에 대해서 자주 들어봤을 것이다. URL과 URI는 서로 거의 같은 의미로 사용해서 특히 헷갈리는 부분이기도 하다.
그래서 오늘은 비슷한 이름을 가진 이 세 놈(?)들을 비교하고 각각에 대해서 알아보도록하겠다.
각자의 이름은 이런 뜻을 갖는다.
- URI(Uniform Resource Identifier) : 리소스를 식별하는 정보
- URL(Uniform Resource Locator) : 리소스의 위치
- URN(Uniform Resource Name): 리소스의 이름
리소스(서버등등)를 식별할 수 있는 정보라면, 어떤 것이든 URI라고 할 수 있다. 즉, URL, URN 모두 URI에 속하는 것이다. 다시 말해서 URI는 URL, URN을 포함하는 개념
인 것이다.
URL의 대표적인 예시가 바로 https://velog.io
과 같은 웹 주소이다.
먼저, 무심결에 쓰던 이 URL이 어떻게 구성이 되어 있는지 알아보자. URL은 아래와 같이 구성된다.
이렇게 URL에는 뭔가를 요청할 "장소"에 대해서 명시가 되어 있는 것이다.
URN은 urn:coffe:americano:iced
와 같이 표현한다.
URN으로 해당 리소스를 찾을 수 있는 방법이 일반적인 서비스단에서는 없기 때문에 일상에서 접해보기는 어렵다.
그래도 비슷한 예시가 있다. 바로 AWS의 arn
이다. AWS를 써본 사람이라면 한번쯤 arn
을 본적이 있을 것이다.
arn은 Amazon Resource Name의 약자로 URN을 오마주(?)해서 AWS에서 만든 값이다.
s3의 arn을 예시로 보자면 아래와 같다.
URI와 URL이 혼동되어서 사용되었던 이유는 URN이 일상에서 잘 사용되지 않기 때문에 사실상 URI라고 하든 URL이라고 하든 URL을 가리키는 꼴이 되었기 때문인 것 같다.