개요
URI, URL, URN는 모두 인터넷 상에서 자원을 식별하기 위해 사용하는 용어이다.
주로 URL이라고 혼용해서 사용되곤 하지만 각각 다른 목적과 형식을 가지고 있다.
이번 글에서는 세가지 용어에 대한 개념과 차이점에 대해 알아본다
URI, URL, URN 의 개념
URI
Uniform Resource Identifier 의 약자로, 하나의 자원을 고유하게 식별하는 문자열이다.
URI는 자원의 위치(URL)이 될수도 있고 자원의 이름(URN)이 될 수도 있는 가장 상위의 개념이다.
URL
Uniform Resource Locator 의 약자로, 자원의 위치를 식별하는 문자열이다.
URL은 다음과 같은 구성요소로 이루어져 있다.

<URL 구성요소>
1. Scheme
- 자원에 접근하기 위한 통신 프로토콜
- http, https, ftp, sftp 등이 있다.
2. Host
- 자원이 호스팅 되고 있는 서버 도메인 이름 또는 IP
3. Port
- 자원에 대한 요청을 수신하는데 사용되는 서버의 포트 번호
- 일반적으로 http 요청은 80, https 요청은 443을 기본 포트로 사용한다.
- 만약 URL에 포트 번호를 생략할 시 기본 포트로 매핑된다.
4. Path
- 서버 내에 자원이 위치하는 경로
-/경로/파일명.확장자 형식이다.
5. Query
- 자원에 대한 추가 질의를 위해 서버에 전달되는 매개변수와 값의 쌍을 말한다.
- [KEY=VALUE] 형식으로 표현하고, 여러개의 매개변수가 있을 때는 &(앤퍼센트) 구분자로 구분한다.
6. Fragment
- 자원의 특정 부분을 가르키기 위해 사용된다.
- 서버에는 전송되지 않고, 클라이언트 측에서만 사용되는 개념이다
URN
Uniform Resource Name 의 약자로, 자원의 고유한 이름을 식별하는 문자열이다.
URN은 자원의 위치가 변경되어도 고유한 이름으로 식별할 수 있다는 장점이 있지만,
실제 자원에 접근하기 까다롭다는 단점이 있어서 거의 사용하지 않는다.
URN은 다음과 같은 구성요소로 이루어져 있다.

<URN 구성요소>
1. Scheme
- 다른 URI과 구별하기 위해 "urn"으로 고정해서 사용한다 (RFC 2141 표준)
2. NID (Namespace Identifier)
- 각 URN이 속한 namespace로, 자원이 저장된 저장소를 의미한다.
- 특정 도서에 대한 URN인 경우, NID는 isbn으로 저장된다.
- 이 식별자를 통해 어떤 종류의 자원인지 확인할 수 있다.
3. NSS (Namespace Specific String)
- namespace 내에서 고유한 자원을 식별하는 문자열이다.
- 특정 도서에 대한 NSS인 경우, ISBN의 일련번호를 나타낸다
차이점
포함 관계

URI, URL, URN의 포함관계는 다음과 같다.
- URL, URN는 URI의 서브타입이다.
- URI는 URL / URN이 될 수 있지만, URL / URN은 URI가 될 수 없다.
- URL 안에 URN이 포함되어서 사용될 수도 있다. (프로토콜을 제외하고)
URI vs URL
URI와 URL는 서로 비슷해서 혼용되어 사용되기 쉽다.
쉽게 둘을 비교하자면 URL은 특정 위치의 자원을 찾는 것이고, URI는 특정 자원을 식별한다는 점이다.
아래의 예시에서 1번은 index.html 파일을 식별하면서, 실제 위치를 나타내는 주소이기 때문에 URI이면서 URL이다.
하지만 2번의 경우 서버 내부에서 처리하여 index.html을 가르키지만, 실제 파일 위치는 아니기 때문에 URI이고 URL은 아니다.
1) https://jonghne.tistory.com/index.html
2) https://jonghne.tistory.com/index (index.html로 rewrite)
URL vs URN
URL은 자원의 위치를 식별하기 때문에 통신 프로토콜(http, https, ftp)를 지정하지만 , URN은 자원의 위치와는 상관 없기 때문에 통신 프로토콜을 지정하지 않는다.
그리고 URN은 고유한 이름으로 자원을 식벼하기에 자원이 이동되어도 문제 없이 식별 가능하지만, URL은 자원이 한번 이동되면 더이상 식별할 수 없다.
예시
URI
- 특정 웹서버의 index.html 파일을 식별하는 URL이자 URI
https://www.example.com/index.html
- 이메일 주소를 식별하는 URL이자 URI
mailto:john.doe@example.com
- 특정 데이터에 대한 URI
data:image/png;base64,ABC ...
- 전화번호를 나타내는 URI
tel:+1234567890
- 사용자가 임의로 정의한 네임스페이스를 사용하는 URN이자 URI
urn:example:custom-resource
URL
아래 예시는 URL이면서 동시에 URI 인 케이스이다.
- 특정 웹서버의 index.html 파일 위치를 식별하는 URL
https://www.example.com/index.html
- 특정 웹 서버 API의 엔드포인트 위치를 나타내는 URL
https://www.example.com/data/1
- document.txt 파일에 대한 위치를 나타내는 URL
ftp://ftp.example.com/files/document.txt
URN
아래 예시는 URN 이면서 동시에 URI 인 케이스이다.
- 국제 표준 도서번호 ISBN을 사용하는 책 식별 URN
urn:isbn:12345678
이미지 참고
https://velog.io/@wlwl99/URL%EC%99%80-URI-IP%EC%99%80-PORT-%EB%8F%84%EB%A9%94%EC%9D%B8%EA%B3%BC-DNS
https://itnovice1.blogspot.com/2019/01/url-urn-uri.html
https://levelup.gitconnected.com/understanding-the-differences-between-url-uri-and-urn-bd540dbde9d
'Study > Network' 카테고리의 다른 글
[OS] CPU 스케줄러 개념과 스케줄링 알고리즘 종류 (2) | 2024.01.09 |
---|---|
[Network] JWT 개념 및 인증 흐름 (1) | 2023.12.06 |
[Network] HTTP 상태코드 (1) | 2023.10.18 |
[Network] HTTP 메소드 종류와 속성 (0) | 2023.10.18 |
개요
URI, URL, URN는 모두 인터넷 상에서 자원을 식별하기 위해 사용하는 용어이다.
주로 URL이라고 혼용해서 사용되곤 하지만 각각 다른 목적과 형식을 가지고 있다.
이번 글에서는 세가지 용어에 대한 개념과 차이점에 대해 알아본다
URI, URL, URN 의 개념
URI
Uniform Resource Identifier 의 약자로, 하나의 자원을 고유하게 식별하는 문자열이다.
URI는 자원의 위치(URL)이 될수도 있고 자원의 이름(URN)이 될 수도 있는 가장 상위의 개념이다.
URL
Uniform Resource Locator 의 약자로, 자원의 위치를 식별하는 문자열이다.
URL은 다음과 같은 구성요소로 이루어져 있다.

<URL 구성요소>
1. Scheme
- 자원에 접근하기 위한 통신 프로토콜
- http, https, ftp, sftp 등이 있다.
2. Host
- 자원이 호스팅 되고 있는 서버 도메인 이름 또는 IP
3. Port
- 자원에 대한 요청을 수신하는데 사용되는 서버의 포트 번호
- 일반적으로 http 요청은 80, https 요청은 443을 기본 포트로 사용한다.
- 만약 URL에 포트 번호를 생략할 시 기본 포트로 매핑된다.
4. Path
- 서버 내에 자원이 위치하는 경로
-/경로/파일명.확장자 형식이다.
5. Query
- 자원에 대한 추가 질의를 위해 서버에 전달되는 매개변수와 값의 쌍을 말한다.
- [KEY=VALUE] 형식으로 표현하고, 여러개의 매개변수가 있을 때는 &(앤퍼센트) 구분자로 구분한다.
6. Fragment
- 자원의 특정 부분을 가르키기 위해 사용된다.
- 서버에는 전송되지 않고, 클라이언트 측에서만 사용되는 개념이다
URN
Uniform Resource Name 의 약자로, 자원의 고유한 이름을 식별하는 문자열이다.
URN은 자원의 위치가 변경되어도 고유한 이름으로 식별할 수 있다는 장점이 있지만,
실제 자원에 접근하기 까다롭다는 단점이 있어서 거의 사용하지 않는다.
URN은 다음과 같은 구성요소로 이루어져 있다.

<URN 구성요소>
1. Scheme
- 다른 URI과 구별하기 위해 "urn"으로 고정해서 사용한다 (RFC 2141 표준)
2. NID (Namespace Identifier)
- 각 URN이 속한 namespace로, 자원이 저장된 저장소를 의미한다.
- 특정 도서에 대한 URN인 경우, NID는 isbn으로 저장된다.
- 이 식별자를 통해 어떤 종류의 자원인지 확인할 수 있다.
3. NSS (Namespace Specific String)
- namespace 내에서 고유한 자원을 식별하는 문자열이다.
- 특정 도서에 대한 NSS인 경우, ISBN의 일련번호를 나타낸다
차이점
포함 관계

URI, URL, URN의 포함관계는 다음과 같다.
- URL, URN는 URI의 서브타입이다.
- URI는 URL / URN이 될 수 있지만, URL / URN은 URI가 될 수 없다.
- URL 안에 URN이 포함되어서 사용될 수도 있다. (프로토콜을 제외하고)
URI vs URL
URI와 URL는 서로 비슷해서 혼용되어 사용되기 쉽다.
쉽게 둘을 비교하자면 URL은 특정 위치의 자원을 찾는 것이고, URI는 특정 자원을 식별한다는 점이다.
아래의 예시에서 1번은 index.html 파일을 식별하면서, 실제 위치를 나타내는 주소이기 때문에 URI이면서 URL이다.
하지만 2번의 경우 서버 내부에서 처리하여 index.html을 가르키지만, 실제 파일 위치는 아니기 때문에 URI이고 URL은 아니다.
1) https://jonghne.tistory.com/index.html
2) https://jonghne.tistory.com/index (index.html로 rewrite)
URL vs URN
URL은 자원의 위치를 식별하기 때문에 통신 프로토콜(http, https, ftp)를 지정하지만 , URN은 자원의 위치와는 상관 없기 때문에 통신 프로토콜을 지정하지 않는다.
그리고 URN은 고유한 이름으로 자원을 식벼하기에 자원이 이동되어도 문제 없이 식별 가능하지만, URL은 자원이 한번 이동되면 더이상 식별할 수 없다.
예시
URI
- 특정 웹서버의 index.html 파일을 식별하는 URL이자 URI
https://www.example.com/index.html
- 이메일 주소를 식별하는 URL이자 URI
mailto:john.doe@example.com
- 특정 데이터에 대한 URI
data:image/png;base64,ABC ...
- 전화번호를 나타내는 URI
tel:+1234567890
- 사용자가 임의로 정의한 네임스페이스를 사용하는 URN이자 URI
urn:example:custom-resource
URL
아래 예시는 URL이면서 동시에 URI 인 케이스이다.
- 특정 웹서버의 index.html 파일 위치를 식별하는 URL
https://www.example.com/index.html
- 특정 웹 서버 API의 엔드포인트 위치를 나타내는 URL
https://www.example.com/data/1
- document.txt 파일에 대한 위치를 나타내는 URL
ftp://ftp.example.com/files/document.txt
URN
아래 예시는 URN 이면서 동시에 URI 인 케이스이다.
- 국제 표준 도서번호 ISBN을 사용하는 책 식별 URN
urn:isbn:12345678
이미지 참고
https://velog.io/@wlwl99/URL%EC%99%80-URI-IP%EC%99%80-PORT-%EB%8F%84%EB%A9%94%EC%9D%B8%EA%B3%BC-DNS
https://itnovice1.blogspot.com/2019/01/url-urn-uri.html
https://levelup.gitconnected.com/understanding-the-differences-between-url-uri-and-urn-bd540dbde9d
'Study > Network' 카테고리의 다른 글
[OS] CPU 스케줄러 개념과 스케줄링 알고리즘 종류 (2) | 2024.01.09 |
---|---|
[Network] JWT 개념 및 인증 흐름 (1) | 2023.12.06 |
[Network] HTTP 상태코드 (1) | 2023.10.18 |
[Network] HTTP 메소드 종류와 속성 (0) | 2023.10.18 |