RESTFul API를 구현하거나 네트워크 이미지를 사용하는 경우 종종 URL(Uniform Resource Locator)과 URI(Uniform Resource Identifier)라는 단어를 접하게 된다. 위 두가지와 함께 추가적으로 URN(Uniform Resource Name)이라는 것도 있다.
이를 이해하기 전 우선 우리가 인터넷 환경에서 자원을 식별하기 위해 사용하는 방법에는 Path Variable 방식과 Query Parameter 방식이 있다는 것을 알아야 한다.
아래는 Path Variable 방식의 예이다.
/user/id
/user/image
/user/address
아래는 Query Parameter 방식의 예이다.
/user?job=programmer
/user?job=programmer&location=seoul
다시 돌아와 URI와 URI의 정의를 살펴본다.
URI(Uniform Resource Identifier)
URI는 특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다. 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스다. 즉, 정보 리소스를 고유하게 식별하고 위치를 지정하는데 사용된다. URI는 아래와 같은 구조를 가지고 있다.
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
- scheme: 사용할 통신 프로토콜을 뜻하며 웹에서는 http 또는 https를 사용
- user와 password: (서버에 있는) 데이터에 접근하기 위한 사용자의 이름과 비밀번호
- host: 웹 페이지, 이미지, 동영상 등의 파일이 위치한 웹 서버, 도메인 또는 IP
- port: 웹 서버에 접속하기 위한 포트
- path: 접근할 대상(서버)의 경로에 대한 상세 정보
- query: 접근할 대상에 전달하는 추가적인 정보 (파라미터)
- fragment: 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보
URL(Uniform Resource Locator)
URL은 흔히 웹 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약이다. URI의 서브셋이다. 즉, 자원이 어디에 있는지 나타내는 Where의 개념이다.
예를 들어 https://aliencoder.tistory.com/라는 주소에는 aliencoder.tistory.com라는 경로가 있다. 서버에서는 해당 라우팅에대한 알맞은 자원을 전송해줄 것이며 이는 자원의 실제 위치이므로 https://aliencoder.tistory.com는 URL이다. 하지만 당연히 URI라고도 부를 수 있다.
만약 여기서 https://aliencoder.tistory.com/post/10이라는 주소가 있다면 post/10에 해당하는 식별자 부분이 있기 때문에 https://aliencoder.tistory.com/post/10는 URI가 된다. 단 https://aliencoder.tistory.com/post/까지는 URI겸 URL이 된다.
URN(Uniform Resource Name)
URN은 자원의 이름을 나타내는 의미이다. 주요 특징들은 아래와 같다.
- URN은 URI의 표준 포맷 중 하나로, 이름으로 리소스를 특정하는 URI이다.
- http와 같은 프로토콜을 제외하고 리소스의 name을 가리키는데 사용된다.
- URN은 리소스를 영구적이고 유일하게 식별할 수 있는 URI이다.
- URN에는 리소스 접근방법과, 웹 상의 위치가 표기되지 않는다.
- URN은 리소스 자체에 부여된 영구적이고 유일한 이름이고 변하지 않는다.
- 실제 자원을 찾기 위해서는 URN을 URL로 변환하여 이용한다.
URN은 What을 나타내는 개념으로, 해당 자원이 무엇인지 유일하게 식별하는 이름이어야 한다. 자원간에 이름 중복이 발생해서도 안된다. URN의 예시는 아래와 같다.
- urn:isbn:0451450523: URN으로 1926년에 출간된 the Last Unicorn의 도서식별번호
- urn:oid:2.16.840: URN으로 미국을 의미하는 OID
URI | URN | 이름 | Alien |
URL | 주소 | 부산시 해운대구 xx동 1번지 | |
URN | 주민등록번호 | 700101-1234567 |
참고자료
https://velog.io/@torang/URL%EA%B3%BC-URI%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
https://www.charlezz.com/?p=44767
https://velog.io/@kimdukbae/URI-URL-URN