안녕하세요. 성조입니다.
오늘은 URI, URL, URN에 대해서 정리해 보려 합니다.
혹시나 잘못된 지식 전달이 있다면 언제든지 댓글로 피드백 주시면 감사드리겠습니다!
[URI, URL, URN] 정의
URI(Uniform Resource Identifier)는 인터넷의 리소스를 고유하게 식별하는 주소이다.
URN(Uniform Resource Name)은 인터넷 리소스의 고유한 이름을 제공하는 시스템이다.
URL(Uniform Resource Locator)은 특정 리소스의 위치를 나타내는 주소이다.
영어 뜻을 풀어서 보면 위와 같은 설명이 이해된다.
정리하면 다음과 같이 볼 수 있다.
URI는 인터넷 상의 자원을 고유하게 식별하고 위치를 지정하는 것이다. 또한 URN과 URL의 상위 개념으로, URN은 리소스의 이름을 UNL은 리소스의 위치를 나타낸다.
URI : (스키마명) : (스키마별 서식)으로 정리된다.
URN과 URL에 대해서 조금 더 자세하게 풀어본다.
URN(Uniform Resource Name)
유니폼 리소스 네임을 그대로 해석하면 네이버 기준으로 다음의 단어 뜻을 갖고 있다.
Name의 경우 명사형으로 이름이라는 뜻을 가지고 있는 것은 쉽게 떠올릴 수 있으므로 생략한다.
위 내용의 뜻을 정리하면 다음과 같다.
고유한 이름(유니폼과 네임)으로 제공하는 것(리소스의 동사). 정도로 정리할 수 있다.
URN 이름 규칙
urn:<NID:네임스페이스 식별자>:<NSS:네임스페이스 특정 문자열>
- 네임스페이스 식별자(Namespace Identifier, NID)
예를 들면 'isbn'은 국제 표준 도서 번호를 나타내며, 'issn'은 국제 표준 연속 간행물 번호를 나타내는 것이다.
isbn와 issn는 아래와 같이 국내에서도 납본 시스템을 제공하고 있다.
- 네임스페이스 특정 문자열(Namespace Specific String, NSS)
고유한 리소스를 식별하기 위한 문자열이며, 20글자 이내로 작성한다. 또한 대소문자 구분이 없고 숫자도 가능하다.
(ex) 1G2D3A352E4X3ZEWQREW
위 urn + 식별자 + 문자열을 조합하면 다음과 같이 URN을 만들 수 있다.
특정 문자열에서 예시로든 것이 아닌 식별자의 isbn와 issn를 조합한다.
'urn:isbn:01234567890123456789'은 식별할 수 있는 국내 국립중앙도서관의 네임스페이스 내에서 숫자(01234567890123456789)값의 고유한 식별자를 가진 책을 가리키는 것이다.
변수를 저장하면 임의의 메모리 영역에 올라가는 것과 같이 그 변수 주소를 찾아가는 과정이라 보면 조금 더 수월하게 이해할 수 있을 것이다.(고유하게 만들어주는 것이다.)
URL(Uniform Resource Locator)
URL은 위에도 언급된 것처럼 특정 리소스의 위치를 나타내는 주소이다.
즉, 지도에 등록된 식당 위치 정보를 확인하는 것 정도로 보면 좋을 것 같다.
1. 스키마(Scheme): 이 부분은 URL이 시작되는 부분으로, 사용되는 프로토콜을 지정하는 위치이다.
예를 들면 'http', 'https', 'FTP', 'mailto' 등이 있다. 스키마의 경우 콜론(:)과 두 개의 슬래시//로 끝난다.
ex) https://
2. 권한(Authority):이 부분은 스키마 다음에 오며, 일반적으로 기업 또는 일반 사용자가 가지고 있는 도메인의 정보, 호스트, 그리고 포트로 구성된다.
Domain Name의 경우 인터넷의 실제 IP 주소와 연결하기 위한 도메인 주소 이름을 많이 활용하며, 문자로 연결하는 이유는 기억하기 쉬운 이름의 도메인을 가지고 있기 위함이다. IP 주소로도 도메인 네임의 주소를 대체할 수 있다.
기업 또는 일반 사용자의 정보는 선택 사항이며 '@'기호 뒤에 호스트 이름이 나온다. 거의 대부분 도메인 네임을 통하여 IP 값을 문자 주소로 변경해서 서비스를 운영한다.
3. 포트(Port): 리소스에 접근하기 위해 사용되는 포트 번호를 나타낸다. 일반적으로는 80 포트를 활용하며, 기본 포트 번호로 사용하는 경우 대부분 생략한다.
4. 리소스 경로(Path): 이 부분은 권한(Authority) 뒤에 오며, 서버 상의 리소스 위치를 나타낸다. 경로는 슬래시(/)로 구분된 여러 세그먼트로 구성될 수 있는데 경로의 경우. 상대 경로와 절대 경로로 나뉜다. 자세한 내용은 하단에서 정리할 예정이다.
5. 매개변수(Parameters): Path URL의 일부는 쿼리 문자열로, '?' 기호 다음에 오며, 키-값 쌍의 형태를 가지고 있다. 이 매개변수 값은 리소스에 대한 추가 정보를 제공하거나, 동적 리소스를 지정하는데 사용된다.
6. 쿼리 문자열(Query String): 추가적인 매개변수를 전달하기 위해 사용되는 문자열이다. 일반적으로 'key=value' 형태로 작성되며, 여러 개의 쿼리 문자열은 '&'로 구분한다.
7. 앵커(Anchor): 이 부분은 URL의 끝 부분에 올 수 있으며, 매개변수가 끝난 뒤. '#' 기호 다음에 오는 식별자로 보면 된다. 앵커는 웹 페이지 내의 특정 부분으로 특정 섹션 또는 헤딩을 가리키는데 사용된다. 또한 앵커는 프래그먼트 식별자라고도 불린다.
8. 프래그먼트(Fragment): 문서나 리소스 내의 특정 부분을 조금 더 상세하게 가리키기 위해 사용되는 식별자이며, 주로 HTML 문서의 앵커 태그와 연결되어 사용된다.
- URL을 사용하는 방법은 매우 간단하다. 웹 브라우저의 주소 표시줄에 URL을 입력하면, 크롬 브라우저 or 웹 브라우저는 해당 URL이 가리키는 자원을 가져오면서 요청/응답 과정을 진행하고 끝난다. 하이퍼링크를 클릭하면 URL 주소로 이동하게 되는 것을 생각하면 활용 방법은 매우 간단한 편이다.
- URL은 파일을 다운로드 하는 경우.(흔하게 FTP 등) 웹 기반의 API를 사용할 때도 중요한 역할을 한다. 이들 모든 경우에서 URL은 웹 브라우저에서 원하는 시기에 원하는 존재하는 자료를 찾을 때 필요한 주소를 제공해주는 것이다.
절대 URL와 상대 URL
절대 URL(Absolute URL)은 전체 경로를 포함하여 특정 리소스의 정확한 위치를 나타내는 것을 말한다.
절대 URL은 프로토콜(ex: http, https)과 도메인(ex : www.google.com or www.naver.com or www.tistory.com )을 포함한다.
활용 예시)
https://도메인주소//images/img.jpg
상대 URL(Relative URL)은 현재 페이지를 기준으로 한 리소스의 위치를 상대적으로 지정하는 것을 말한다.
상대 URL의 경우 절대 URL과 도메인을 생략하고, 경로만 나타내는데 대부분 상대 경로의 경우. 웹 페이지 간의 내부 링크 또는 현재 웹 페이지에서 다른 리소스를 참조할 때 사용된다.
활용 예시)
/images/img.jpg
[여담]
절대 URL 경로와 상대 URL 경로를 개발자 분들은 검색하면서도 종종 볼 수 있을 것이다. 본인이 경험했던 사례는 벨로그(velog)에서 Github 아이콘에 주소를 거시는 분들이 상대 경로로 걸어야 하는데 절대 경로로 https://github~~//https~를 걸어서 없는 주소로 나오는 경우가 있는 것을 봤다.
절대 URL경로와 상대 URL 경로는 어디에 쓰이는가? (조금 더 A little deep(?))
절대 URL은 항상 특정 리소스의 정확한 위치를 지정하거나 변하지 않는 특정 리소스를 참조하는 경우 활용된다.
상대 URL은 절대 URL 경로보다 상대적으로 짧고, 유연하다.
상대 경로는 동일한 웹 페이지가 다른 도메인 또는 서브도메인에 배치되어도 링크가 올바르게 동작할 수 있도록 해주는데 내부 사이트내에서 내비게이션 구조를 구축하고, 파일 및 폴더의 관계를 유지하면서 효율적인 링크 관리하는 데 활용된다.
정리하면 절대 URL 경로는 새로운 페이지에 초점을 상대 URL 경로는 홈페이지 내부에서 이동의 초점이 잡혀있다. 각각 정리하면 다음과 같이 정리할 수 있다.
절대 URL
- 외부 웹 사이트로 링크 : 위 언급된 것처럼 다른도메인이나 서브 도메인으로 링크를 생성할 때 절대 URL을 활용한다. 타 사이트로 이동하거나 외부 이미지 동영상을 포함하는 경우 절대 URL를 활용한다 보면 된다.
- 외부 서비스와의 통합 : 외부 서비스(API)와 데이터를 주고 받을 경우 절대 URL을 활용하여 API 엔드 포인트를 지정하게 된다.
외부 서비스 API의 경우 자체적인 API도 있지만 아래의 포스팅에서 나오는 것처럼. 과거에 비해서 기업에서 API를 제공하는 경우도 많아졌고, 클라우드도 다양한 서비스들이 있기 때문에 기초 이론을 모른다면 참조용으로 읽어보자. (카카오 맵과 같이 카카오 API나 생략해도 무관하다)
2023.03.30 - [Study 📔] - [Study] IaaS, PaaS, SaaS이란?
상대 URL
- 내부 페이지 간의 링크 : 가장 흔하게 활용될 수 있는 것이다. 태그의 값을 이용해서 내부 웹페이지 링크를 생성 후. 개발시 주로 상대 URL을 사용한다.
- 폴더 및 파일 관리 : 웹 사이트의 내부 구조에서 폴더 및 파일 간의 관계를 유지하면서 링크를 관리하는 경우 상대 URL을 활용하는 경우가 있다.
상대 URL을 통해서 관리하는 것들은 이미지, 스타일 시트, 스크립트 파일 등과 같이 리소스를 참조하는 링크를 생성할 때 상대 URL을 활용하는데 위에 활용 예시로 나온 것처럼 '/images/img.jpg'의 경로로 활용된다.
실제 웹 서비스에서 내비게이션 및 페이지 간 이동에서 주로 상대 경로를 활용할 것 같지만 외부 리소스나 외부 서비스로 제공되는 API들과 통합할 때는 절대 URL을 사용하는 경향도 있다. 하지만 이것은 절대적이지 않고, 설계에 따라서 다양한 접근 방식에서 구조와 목적 그리고 URL 선택을 하게 된다.
정리
본인은 최종적으로 주소를 고유하게 만들어주는 것(URN)과 고유한 위치 정보(URL)를 하나로 합친 것을 URI로 정리하고 싶다.
오타나 궁금한 부분이 있다면 언제든지 댓글 달아주세요!
지식 전달이 잘못된 경우나 이상한 경우에도 언제든지 댓글 달아주시면 검토하겠습니다!
다음 포스팅 때 뵙겠습니다. 감사드립니다!
- 참조 -
https://developer.mozilla.org/ko/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL
'Network' 카테고리의 다른 글
[네트워크 기초] 자취방, 아파트, 회사 네트워크 구축 차이점 (4) | 2024.11.10 |
---|---|
[Network] TCP/IP 프로토콜 가볍게 정리 및 이해하기 (1) | 2024.09.20 |
[Network]브라우저 렌더링 원리 (0) | 2023.04.03 |
[Network] 브라우저 요청/응답 원리 (0) | 2023.01.18 |
[Network] 프로토콜(Protocol)이란? (0) | 2022.11.24 |