URI, URL, URN의 차이점과 개념 정리

학습 배경
학습을 하며 URI와 URL이 자주 혼용되어 사용되는 것을 보고, 두 개념을 확실히 구분하고자 글을 작성했다. 또한, 자주 함께 언급되지만 생소한 URN에 대해서도 간단히 설명하려 한다.
- 정의: URI는 인터넷 상에서 리소스를 고유하게 식별하고 위치를 지정하는 문자열이다.
- URI는 URL과 URN을 포함하는 상위 개념으로, 자원의 위치(URL) 또는 이름(URN)을 식별할 수 있다.
- 예시:
https://hudi.blog/favicon-32x32.png
URI와 URL, URN의 관계
- URI는 URL과 URN을 포함하는 개념이다.
- 리소스란 웹에서 사용되는 텍스트, 이미지, 동영상, 정보 서비스 등 모든 자원을 의미한다.
- 정의: URL은 특정 서버의 리소스 위치를 서술하는 문자열이다.
- URL이 없었다면, 리소스를 전달하려면 복잡한 절차를 거쳐야 한다. URL 덕분에 일관된 방법으로 리소스를 지칭할 수 있다.
URL의 문법
URL은 보통 9개의 컴포넌트로 나뉜다:
<scheme>://<user>:<password>@<host>:<port>/<path>;<parameter>?<query>#<fragment>
- 스킴(Scheme): 리소스에 접근하기 위해 사용되는 프로토콜 (예:
http
, ftp
)
- 유저(User)와 비밀번호(Password): 인증이 필요한 경우, 사용자 이름과 비밀번호를 포함
- 호스트(Host): 리소스가 호스팅된 서버의 주소
- 포트(Port): 서버가 열어놓은 포트 번호
- 경로(Path): 서버의 특정 리소스를 가리키는 부분
- 파라미터(Parameter): 경로만으로 리소스를 찾기 어려울 때 사용
- 질의(Query): 리소스에 대해 추가적으로 요청할 범위나 필터
- 프래그먼트(Fragment): 리소스의 일부를 클라이언트 측에서 지정하는 부분
예시: http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
- 정의: URN은 리소스의 이름을 고유하게 식별하는 문자열로, 자원의 위치와 관계없이 식별자가 유지된다.
- 장점: 리소스의 위치가 변경되더라도 URN은 변하지 않는다.
- 예시:
urn:ietf:rfc:2648
URN의 현황
- URN은 아직 실험적이며 널리 채택되어 사용되지 않는다. 따라서 현재는 URI와 URL이 동일한 의미로 사용되는 경우가 많다.
참고
이 글을 통해 URI, URL, URN의 관계와 각 개념을 명확히 이해할 수 있다. URI는 자원을 식별하는 넓은 범위의 개념으로, URL과 URN이 그 하위 개념으로 포함된다.