이번 글에서는 URI, URL, URN이 무엇이며 어떻게 다른 것인지 알아보도록 하자.
URI (Uniform Resource Identifier)
URI는 우리가 인터넷에서 자원을 식별해서 얻기 위해 사용하는 문자열을 말한다. 자원이라고 하면 뭔가 거창해보이지만, 사실 URI 로 식별할 수 있는 걸 자원이라고 한다. 좀 더 직관적으로 말하자면 인터넷에서 찾는 모든 정보가 자원이다.
URN과 URL
URI는 2종류로 분류할 수 있는데, 바로 URN과 URL이다. 자원을 식별할 때, ‘이름’을 통해 식별한다면 URN이고, ‘주소’를 통해 식별한다면 URL이다.
URN은 거의 사용하지 않는다. 이름마다 새로 주소를 하나 하나 맵핑해야하는데, 그게 굉장히 번거롭다고 한다. 그럼에도 쓰이는 경우는 책의 ISBN이다. ISBN은 국제적으로 사용되는 책의 식별 번호인데, 이 또한 이름을 통해 식별하므로 URN이다.
한편, URL은 굉장히 많이 쓰인다. 우리는 웹 브라우저의 주소창에 URL을 입력함으로써 손쉽게 URL을 사용할 수 있다. URL의 구조를 좀 더 살펴 보자.
URL의 구조
그동안 URL에서도 일부 도메인 명 (naver.com)만 이해할 수 있었는데, 이제는 좀 더 전체적인 이해가 가능해졌다.

(사진 출처 mdn)
도메인의 앞과 뒤는 외계어 같지만, 구조를 살펴 보면 그렇게 복잡하지도 않다.
Scheme

(출처 mdn)
URL의 가장 앞 부분이 scheme이다. 사람들이 scheme을 [스키마]라고 발음하는데, 이유는 모르겠다… 아무튼 영단어 발음은 [스킴]이다.
scheme은 브라우저에 리소스를 요청할 때 사용하는 프로토콜이다. 보통 https나 http만 많이 사용되지만, mailto라고 메일 관련 프로토콜도 있다.
Domain name & Port

(출처 mdn)
scheme 뒤 :// 뒤에 domain name이 온다. 그리고 domain name 뒤 : 뒤에 Port 번호가 나온다. Domain name과 Port를 합쳐서 Authority라고 부른다.
도메인 명은 우리가 흔히 하는 www.naver.com 같은 거다. 그리고 뒤에 Port는 표준 포트(https의 경우 443)를 사용했다면 생략할 수 있다.
Path to resource

(출처 mdn)
/과 함께 파일 경로가 나온다. 웹이 나온 초기에는 저 경로가 실제 파일이 위치한 경로였다고 하는데, 요즘은 가상의 경로로서 사용된다.
Parameters

(출처 mdn)
?로 시작되는 parameter이다. 웹 서버에 추가적인 패러미터로서 제공된다. 그래서 웹 서버는 리소스를 우리에게 제공해주기 전에 &로 구분되는 ‘key=value’ 쌍 매개변수로 추가적인 작업을 할 수 있다.
query라고 부르기도 한다.
Anchor

(출처 mdn)
Anchor는 서버에 전송되는 정보는 아니다. 그냥 페이지의 ‘북마크’ 역할을 한다. 예를 들어 페이지에서 스크롤을 내리면 나오는 부분으로 바로 이동할 수 있게 해준다든지, 동영상의 특정 시간으로 바로 이동되게 한다든지 하는 역할을 한다.
Anchor는 fragment라고 부르기도 한다.
No Responses