컴퓨터 네트워크/응용계층
자원을 식별하는 URI
iOS Developer
2025. 1. 4. 14:54
자원을 식별하는 URI
네트워크 상에서 정보를 주고받을 때, 송수신 대상(자원)을 식별하기 위한 URI(Uniform Resource Identifier)의 개념을 자세히 살펴봅시다. 또한, URI가 위치를 통해 자원을 식별하는 경우(URL), 이름을 통해 자원을 식별하는 경우(URN)에는 어떤 차이가 있는지 정리합니다.
자원(Resource)과 URI
자원(Resource)이란?
- 네트워크를 통해 주고받는 모든 대상을 의미
- 예: HTML 파일, 이미지·동영상 파일, 텍스트 파일 등
- HTTP 통신에서 자원 = “HTTP 요청 메시지의 대상”
- 두 호스트가 데이터를 교환할 때, 그 교환 대상이 바로 자원
URI란?
- 자원을 유일하게 식별하기 위한 “통일된 방식(Identifier)”
- 식별하고자 하는 대상(파일, 콘텐츠 등)이 어디에 있든 유일성을 부여
- 국제 표준 문서인 RFC 3986에서 정의됨
URI(Uniform Resource Identifier)의 필요성
네트워크에서 자원을 송수신하려면, 우선 그 자원을 “무엇”이라 부르거나 “어떤 방식”으로 접근할 것인지가 분명해야 합니다. URI가 바로 이러한 역할을 합니다.
- URI 안에 위치 정보(예: 서버 주소, 경로)나 이름 정보(예: ISBN, 고유 식별자)를 담아낼 수 있음
- URL은 주로 자원의 위치로 식별
- URN은 주로 자원의 이름(고정식 식별자)으로 식별
(그림 출처: 혼자 공부하는 네트워크)
URL(Uniform Resource Locator)
URL은 네트워크 상에서 자원의 위치를 나타내어 식별하는 대표적인 방법입니다.
(그림 출처: 혼자 공부하는 네트워크)
1. scheme
- URL의 가장 앞부분
- 자원에 접근하기 위한 프로토콜을 명시
- 예:
http://
,https://
,ftp://
등
2. authority
- 호스트 정보(도메인 이름 또는 IP 주소) + (옵션) 포트 번호
- 예:
example.com:80
,127.0.0.1:8080
등 - 콜론(
:
) 뒤에 포트 번호를 명시할 수 있으며, 생략 시 프로토콜의 기본 포트 사용
3. path
- 호스트 내부에서 자원이 위치한 경로를 나타냄
- 슬래시(
/
)로 디렉터리 구조를 구분 - 예:
/home/images/a.png
(그림 출처: 혼자 공부하는 네트워크)
예시) http://example.com/home/images/a.png
- 프로토콜:
http
- 호스트:
example.com
- 경로:
/home/images/a.png
4. query
- 추가적인 정보를 Key-Value 쌍으로 넘기기 위한 부분
?
뒤에key=value
형태로 작성, 여러 개는&
로 연결- 예:
?query=value&query2=value2
(그림 출처: 혼자 공부하는 네트워크)
http://example.com/random/path?query=value&query2=value2
- 실제 요청 시 서버는 쿼리 파라미터를 분석해 그에 맞는 자원이나 결과를 제공
5. fragment
- 자원의 일부 구간을 식별하기 위해 사용
#
뒤에 오는 텍스트로 문서 내 특정 섹션을 가리킬 수 있음- 예:
- 전체 문서:
https://datatracker.ietf.org/doc/html/rfc3986
- 특정 섹션:
https://datatracker.ietf.org/doc/html/rfc3986#section-1.1.2
- 전체 문서:
URN(Uniform Resource Name)
URN은 자원에 대한 이름 자체로 식별하는 방식입니다.
- 예:
urn:isbn:0451450523
- 위치 변경에 영향을 받지 않고, 고정된 식별자로 자원을 가리킬 수 있음
- 특정 도서의 ISBN, ISSN(정기간행물번호) 등을 URN으로 활용 가능
- 다만, URL만큼 광범위하게 쓰이지는 않으며, 특정 환경(도서관 시스템, 표준 식별 체계 등)에서 주로 사용
URI 활용과 동작 원리
- 클라이언트(브라우저, 모바일 앱 등)는 URI(URL 형태가 일반적)를 통해 특정 자원에 대한 요청을 보냄
- 서버는 요청받은 URI에 해당하는 자원을 찾아 응답
- 자원의 경로가 바뀌거나 서버 설정이 달라지면 URL이 달라질 수 있음(⇒ URL이 유효하지 않을 수 있음)
- 반면, URN은 자원 위치와 무관하므로 이름만으로 변함없이 식별 가능
이러한 동작 과정에서 네트워크 트래픽을 추적하면, 실제로는 DNS(도메인 네임 시스템)를 통해 호스트 이름을 IP 주소로 변환하고, HTTP(또는 다른 프로토콜) 요청-응답 과정이 이어집니다.
참고 문서
- RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
- RFC 2141: URN Syntax
- RFC 7230~7235: HTTP/1.1 사양 시리즈
- 혼자 공부하는 네트워크: 네트워크 도서