URL URI URN 차이
안녕하세요 steady-code 입니다. 오늘은 URL, URI 그리고 URN 의 정의와 그 차이점에 대해 알아보겠습니다.
| 목차 0. 배경지식 1. URI 의 정의 2. URN 의 정의 3. URL 의 정의 |
0. Resource 의 정의
기본적으로 URL, URI, URN은 HTTP 클라이언트가 HTTP 서버로 요청을 보낼때 사용합니다. 이 때, HTTP 서버는 우리가 요청한 리소스를 client로 전달합니다. 다시 말해서 'resource' 는 HTTP request가 요청하는 '값'을 의미합니다. 문서, 사진 등의 값이 될수도 있으며 혹은 json csv 등의 광범위한 데이터 포맷의 형태를 띄고 있습니다.
1. URI (uniform resource identifier)
HTTP 등의 웹서버에서 관리하는 모든 리소스들은 각각 고유의 이름을 가지고 있습니다. 예를들어, 개인적인 사진을 저장하는 웹서버를 가정하면 다음과 같이 고유의 이름으로 사진 파일들을 저장하여 분류할 수 있습니다.
| 사진 설명 | 사진 파일 이름 |
| 사진 1 (나의 사진) | photos/photo_me |
| 사진 2 (친구들의 사진) | photos/photo_friends |
| 사진 3 (가족들의 사진) | photos/photo_family |
이 때, URI는 이러한 '사진들을 어떻게 특정'할 것이냐를 정의한 것입니다. 클라이언트가 서버에 요청을 할 때, '파일이 저장된 경로'로 요청할 것인지, 혹은 사진들에 각각의 '고유값'을 만들어서 요청을 할 것인지는 웹서버의 운영자의 선택입니다. 이 때, URI 는 다음의 두 가지 형태로 나뉩니다: URL, URN

2. URL (uniform resource locator)
이 때 웹사이트를 호스팅하는 주소가 만약 'www.steady-code.org' 라고 가정을 해봅시다. 그리고 resource 를 특정하는 방법을 URL로 한다고 해봅시다. 이 경우에 위 사진을 HTTP로 요청하기 위해서는 다음과 같은 URL 가 필요합니다.
| Resource | URL |
| 사진 1 (나의 사진) | 'http://www.steady-code.org/photos/photo_me' |
| 사진 2 (친구들의 사진) | 'http://www.steady-code.org/photos/photo_friends' |
| 사진 3 (가족들의 사진) | 'http://www.steady-code.org/photos/photo_friends' |
URL을 구성하는 문자열의 각각의 색깔은 다음과 같이 정의됩니다.
- 빨간색 - 프로토콜 (i.e., http, https, telnet, ssh, etc.)
- 파란색 - 도메인 이름 (i.e., www.naver.com, www.google.com, 192.168.0.1, etc.)
- 검은색 - 리소스 경로 (photos/photo_me, etc.)
그리고 URL에 추가적으로 query 와 fragment 라는 파라미터를 추가할 수 있습니다. 이러한 경우는 다음에 알아보겠습니다.
3. URN (uniform resource name)
URN의 경우, 이러한 리소스들이 위치에 영향을 받지 않고 유리한 이름이 정의되어 있을 때 활용할 수 있습니다. 따라서 경로대신 리소스의 이름을 통해 값을 요청할 수 있습니다.
참고자료
1. geeksforgeeks (https://www.geeksforgeeks.org/difference-between-url-uri-and-urn-in-java/)
2. mozila (https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web)