지금까지 인터넷과 웹의 동작 방식에 대해 이야기하면서 많은 용어들을 알게 되었다.
웹(Web)은 클라이언트(예:브라우저)가 HTTP 혹은 HTTPS로 서버에게 요청(Request)을 하고, 요청을 받은 서버는 응답(Response)을 하는 방식의 통신이다.
HTTP(S)로 요청은 웹에서는 일반적으로 URL을 이용하게 된다.
URL은 우리말로 하면 흔히 '인터넷 주소'라고 하는데 도메인(Domain)과 함께 구성된다.
그럼, 도메인과 URL은 같은 것인가? 아니다.
도메인은 URL을 구성하는 요소 중에 반드시 필요한 요소 중 하나이다.
URL과 함께 따라 나오는 용어가 URI다.
이렇듯 웹 개발이나 IT 관련 공부를 하다 보면 한 번쯤 들어봤을 URI, URL, URN.
이 세 용어는 때로 혼란스럽게 사용되지만, 사실 각기 다른 의미를 가지고 있다.
이번 포스팅에서는 URI, URL, URN의 개념과 차이점을 명확히 정리해 본다.
URI, URL, URN의 개념적 관계
URI, URL, URN의 개념적 관계로 보면 URI가 가장 큰 개념이고, URI 하위에 URL과 URN이 포함된다고 할 수 있다.
이를 그림으로 표현하면 다음과 같다.
그럼, 각각의 용어에 대한 의미부터 살펴보자.
URI란 무엇인가?
URI(Uniform Resource Identifier)는 "리소스를 식별하는 고유한 문자열"이다. 웹 상의 모든 리소스(파일, 페이지, API 등)를 식별하기 위해 사용되며, URI는 URL과 URN을 포함하는 상위 개념이다.
일단 "Uniform Resource Identifier" 단어 하나하나의 의미부터 살펴보자.
- Uniform : 흔히 선수들 유니폼이 생각나는 단어인데, 선수들이 유니폼을 입는 이유는 팀을 잘 식별하기 위해서라고 볼 수 있다. 그러한 측면으로 생각하면 URI, URL, URN에서 Uniform은 뒤에 나오는 리소스(Resource)를 식별하기 위한 통일된 방식을 의미한다.
- Resource : 리소스는 인터넷상의 모든 종류의 자원을 말하는데, 여기서는 특히 HTTP(S)로 요청하는 요청 대상을 말한다. 문서, 사진, 동영상 등으로 그 어떤 것이든 될 수 있다.
- Identifier : 식별자는 리소스를 구분하기 위해 필요한 정보를 말한다. 가령 사람으로 치면 '홍길동'과 같은 이름이 될 수 있다.
이렇게 보면, URI는 인터넷에서 리소스 자체를 식별하는 통일된 방식을 의미한다.
'홍길동'이라고 식별만 할 뿐이지 '홍길동'이 있는 위치까지는 알 수 없다.
그 위치를 가리키는 것이 URL이다.
URI의 형식은 어떻게 되며 그 예시를 정리해 보면 다음과 같다.
■ 형식 :
- 스키마:구성 요소
■ 예시 :
- https://example.com/resource
- mailto:user@example.com
- urn:isbn:1234567890
URL이란 무엇인가?
URL(Uniform Resource Locator)은 "리소스의 위치를 나타내는 URI"이다.
즉, URL은 리소스가 어디에 있는지를 가리키며, 이를 통해 리소스에 접근할 수 있다.
URI에서 확인한 대로 의미를 해석해 보면 URL은 리소스 위치를 구분하기 위한 통일된 방식을 의미한다.
통일된 방식이라는 이야기는 규약, 약속을 의미한다.
리소스의 위치를 어떻게 표시할 것인가?에 대한 약속이다.
규약을 정할 때는 규약을 구성하는 항목들이 존재한다.
아래 포스팅에서 언급한 편지 봉투를 떠올려 보라.
편지 봉투 규격을 구성하는 항목들에는 어떤 것들이 있는가?
보내는 사람, 받는 사람, 우편번호, 주소 등의 항목들이 있었다.
마찬가지로 URL의 규약에도 다음과 같은 필요한 항목들이 있다.
- 프로토콜(Protocol) - 필수 항목
- 도메인네임(Domain Name) - 필수 항목
- 포트(Port) - 필수 항목
- 경로(Path) - 선택 항목
- 질의(Query) - 선택 항목
프로토콜, 도메인 네임, 포트는 필수 항목으로 URL 구성에 반드시 있어야 한다.
바로 예를 하나 들어보면, 다음과 같은 기사의 URL이 있다.
https://entertain.naver.com/read?oid=076&aid=0004094169
참고로, 위 브라우저의 주소 표시줄에는 https://라는 건 바로 보이지 않는다.
브라우저들이 프로토콜은 숨기고 보여준다. 주소 표시줄을 클릭해 보면 다음과 같이 볼 수 있다.
기사의 URL을 규약의 구성 요소별로 설명하면 다음과 같다.
- https:// : 프로토콜(Protocol)이며, 스킴(Scheme)이라고도 한다.
- entertain.naver.com : 도메인 네임(Domain Name)이며, 호스트 네임(Host Name)이라고도 한다. 도메인 네임은 IP로 대체 가능하다.
- read : 경로(Path), 도메인 네임 뒤로 '/'(슬래시) 문자를 구분자로 해서 경로를 지정한다.
- oid=076&aid=0004094169 : 질의(Query), 경로(Path)와 질의(Query)의 구분은 '?'(물음표)로 한다.
그런데 이상한 점이 있다.
URL을 구성하는 항목에서 필수 항목 중 하나인 'Port(포트)'가 보이지 않는다.
포트는 다음과 같이 도메인 네임 뒤에 ':'(클론) 문자를 구분자로 해서 위치하게 되며 생략되어 있다.
https://entertain.naver.com:443/read?oid=076&aid=0004094169
생략된 이유는 http는 80, https는 443이 기본 포트 번호이고, URL에 포트가 명시되어 있지 않으면 프로토콜을 기준으로 기본값으로 통신을 하게 되기 때문이다.
URL에 대해 정리해 보면 다음과 같다.
■ 형식 :
- [프로토콜]://[도메인네임(호스트)]:[포트]/[경로]?[쿼리]#[프래그먼트]
■ 예시 :
- https://www.google.com/search?q=URI
- ftp://ftp.example.com/file.txt
■ 특징 :
- 프로토콜(https, ftp 등)을 포함.
- 리소스에 접근 가능.
URI vs URL 차이점
아래 그림으로 앞서 얘기한 URI와 URL의 차이를 조금이나마 이해해 보자.
위 두 주소는 서버의 index.html이라는 리소스를 가리키고 있다.
- 첫 번째 주소(①번)는 웹 서버의 실제 파일 위치를 나타내는 주소이므로 URI이면서 URL이 된다.
- 두 번째 주소(②번)는 실제로 index라는 파일이 웹 서버에 존재하지 않으므로 URL은 되지 않는다. 하지만 서버 내부에서 이를 처리(rewrite) 해서 결국 index.html을 가리키기 때문에 URI이다.
마찬가지로 앞서 예를 들었던 연예 기사의 URL도 사실은 URI는 맞지만 URL은 될 수 없다고 생각한다.
서버에 'read'라는 파일이 존재한다면 URL이 될 수 있겠지만, 아마도 없을 것이다.
서버가 entertain.naver.com/read라는 형식의 URI에 대해 어떻게 처리하라고 프로그래밍 되어 있을 가능성이 높다.
URL은 URI에 비해 큰 단점이 있다.
위 예시에서 index.html 파일의 위치를 old라는 폴더 아래로 이동하면 어떻게 될까?
첫 번째 주소(①번)은 http://www.naver.com/old/index.html로 URL이 변경돼야 한다.
그러면, 기존 주소인 http://www.naver.com/index.html으로 알고 있던 사람들은 접속하면 주소가 바뀌어서 페이지를 찾을 수 없다는 내용의 아래와 같은 비슷한 페이지를 만날 것이다.
이것이 URL의 최대 단점이다.
반면에 두 번째 주소(②번)는 변경하지 않아도 된다.
서버에서 내부적으로 바뀐 index.html를 보여주도록 하면 된다.
URN이란 무엇인가?
URN(Uniform Resource Name)은 "리소스의 이름을 식별하는 URI"이다. URN은 리소스의 위치와는 무관하며, 리소스를 고유하게 식별하기 위한 이름으로 사용된다.
사실 웹 개발을 하면서 사용해 본 적 없고, 볼일이 거의 없을 것이라 생각한다.
URN은 책을 분류하기 위해 만든 ISBN 정도가 해당된다.
URN은 리소스 자체에 부여하는 유일한 이름인데, 리소스 접근 방법이나 웹에서 위치가 표기되는 방식은 아니다.
그래서 결론은 웹 개발을 함에 있어서 몰라도 되지 않을까 싶다.
이런 용어도 있구나 정도만 알면 된다.
URN에 대해서도 정리해 보면 다음과 같다.
■ 형식 :
- urn:[이름 공간]:[고유 이름]
■ 예시 :
- urn:isbn:978-3-16-148410-0 (책 ISBN)
- urn:uuid:123e4567-e89b-12d3-a456-426614174000 (UUID)
■ 특징 :
- 리소스가 어디에 있는지(위치)는 알 수 없음.
- 고유성과 영속성 보장.
주요 차이점 요약 표
구분 | URI | URL | URN |
정의 | 리소스를 고유하게 식별하는 문자열 | 리소스의 위치를 나타내는 URI | 리소스의 이름을 나타내는 URI |
위치 정보 | 필요 없음 | 포함함 | 필요 없음 |
고유성 | URL, URN 모두 포함 | 리소스의 위치가 변경되면 고유성 상실 가능 | 고유성 보장 |
예시 | https://example.com/resource | https://www.google.com/search?q=URI | urn:isbn:1234567890 |
지금까지 URI, URL, URN에 대한 용어가 무엇을 의미하는지 살펴봤다.
이러한 용어의 정의를 달달 외울 필요는 전혀 없다. 그냥 이해하고 넘어가면 된다.
URI는 다양한 형태로 존재한다.
안드로이드 기기나 iOS 기기 등 다양한 모바일 기기에서도 각자의 URI 형식이 지정되어 있어서 이를 이용해서 OS 내부의 리소스에 접근할 수 있다.
가령, 안드로이드 내부의 전화 리소스에 접근하는 방식은 보통 다음과 같다.
val uri = Uri.parse(“tel:010xxxxxxxx”)
다시 말해, URI의 역할은 리소스(전화, 지도, 이미지, 텍스트, 파일, 동영상)에 접근할 수 있는 유일한(Uniform) 식별자(Identifier)를 의미한다.
URI를 수신하는 기기는 해당 URI에 맞게 데이터를 반환하게 된다는 것을 이해하면 된다.
URI, URL, URN의 개념을 명확히 이해하면, 웹 기술 문서를 읽거나 API를 설계할 때 훨씬 더 명확하고 정확한 의사소통이 가능하다.
웹 개발에 있어서 알고 가야하는 부분들을 하나씩 이야기하고 있는데, 인터넷과 웹이 어떻게 동작하고 그에 따라 도메인이 무엇인지도 알았고, 도메인과 함께 URI에 대한 부분도 알게 되었다. 이러한 도메인이나 URI가 가능하게 하려면 URI가 실제 존재하게 하기 위해서는 서버라는 것이 필요하고 서버는 어떻게 준비할 수 있는지 호스팅을 통해 알아볼 필요가 있다.
상기 상품 배너는 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'코딩해보니 > 웹(Web)개발' 카테고리의 다른 글
HTML 이란? (프런트엔드 개발 로드맵, HTML 정의 등) (0) | 2024.11.26 |
---|---|
호스팅(Hosting) 이란? (웹 호스팅, 서버 호스팅 등) (0) | 2024.11.25 |
도메인 네임과 DNS (Domain Name & Domain Name System) (1) | 2024.11.23 |
인터넷과 웹의 동작 방식 (인터넷은 어떻게 구성되고 웹은 어떻게 동작하는가?) (1) | 2024.11.22 |
HTTPS란 무엇인가? (1) | 2024.11.21 |
댓글