[HTTP 완벽 가이드 정리] 01. HTTP: 웹의 기초 - 02. URL과 리소스
2장 URL과 리소스에서는 URL의 포맷과 인터넷에 있는 URL들이 가리키는 다양한 리소스 형식에 대해 자세히 알아본다. 또한 URN으로 발전하는 과정에 대해서도 개략적으로 알아본다.
📝 핵심 요약
주제 | 요약 |
---|---|
URL이란? | 인터넷 리소스의 위치를 알려주는 표준 주소. URI의 하위 개념 |
URL 구성 요소 | scheme, host, path, port, params, query, fragment 등으로 구성됨 |
스킴(scheme) | 어떤 프로토콜로 접근할지를 나타냄 (예: http, ftp, mailto 등) |
호스트/포트 | 리소스를 가진 서버의 위치 및 해당 포트 번호 (기본: HTTP는 80) |
경로(path) | 서버 내 파일 시스템 경로처럼 리소스 위치 지정 |
파라미터(params) | 일부 프로토콜에서 사용하는 name=value 형식의 추가 정보 |
쿼리(query) | 게이트웨이, 검색 등에 사용되는 name=value 목록. ? 뒤에 위치 |
프래그먼트(fragment) | 리소스 내 특정 위치(예: HTML 문서의 특정 ID)를 # 뒤에 명시 |
상대 URL | base URL을 기준으로 해석되는 URL 조각. HTML에서 자주 사용 |
URL 인코딩 | 안전하지 않은 문자를 % 와 16진수로 인코딩 (예: 공백 → %20) |
주요 스킴 | http, https, ftp, mailto, file, rtsp, telnet, news 등 다양한 접근 방식 제공 |
URN vs URL | URN은 이름 기반, URL은 위치 기반. URN은 리소스가 이동해도 유효함 |
- URL은 인터넷 리소스를 식별하고 위치를 지정하는 표준 주소
- 다양한 구성요소를 갖고 있으며, 스킴에 따라 형식이 달라질 수 있음
- 상대 URL, 쿼리, 파라미터, 프래그먼트 등 다양한 기능이 존재
- 인코딩은 안전한 URL 전달을 위한 필수 처리
- URN과 같은 대안도 연구 중
📌 이 장에서 다루는 내용
URL의 문법과 각 구성 요소 설명
상대 URL과 확장 URL
URL 인코딩 및 문자 규칙
다양한 URL 스킴 소개 (http, ftp, mailto 등)
URN을 포함한 URL의 미래
1. 인터넷 리소스 탐색: URL의 역할
URL은 인터넷 리소스의 위치를 알려주는 주소
브라우저는 사용자가 입력한 URL을 통해 서버에 요청을 보냄
URL은 URI(Uniform Resource Identifier)의 하위 집합
URL: 리소스의 위치를 통해 식별
URN: 리소스의 이름을 통해 식별 (위치에 상관 없음)
💡 예시
1
http://www.joes-hardware.com/seasonal/index-fall.html
http: 스킴 → 어떤 프로토콜을 사용할지
www.joes-hardware.com: 호스트 → 서버 주소
/seasonal/index-fall.html: 경로 → 서버 내의 리소스 위치
2. URL 문법
대부분의 URL은 일반적으로 다음과 같이 9개 부분으로 나뉨:
1
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
🧩 주요 구성요소
구성요소 | 설명 | 예시 |
---|---|---|
scheme | 리소스에 접근할 때 사용하는 프로토콜 | http, ftp, mailto 등 |
user:password | 인증 정보 | ftp://user:pass@host |
host | 서버 주소 (도메인 또는 IP) | www.example.com |
port | 서버 포트 (생략 가능, 기본값 존재) | 80 (HTTP), 443 (HTTPS) |
path | 서버 내부의 리소스 경로 | /images/logo.png |
params | 일부 프로토콜에서 사용하는 추가 파라미터 | ;type=d |
query | 게이트웨이에 전달되는 파라미터 | ?item=123&color=blue |
fragment | 리소스 내부 특정 위치 | #section1 |
3. 스킴(Scheme): 어떤 방식으로 리소스에 접근할 것인가
URL의 시작 부분 (예:
http:
)대소문자 구분 없음 (
http://
와HTTP://
동일)
4. 호스트와 포트, 사용자 정보
호스트(host): 리소스를 가지고 있는 서버의 주소 (도메인 또는 IP)
포트(port): 해당 프로토콜의 기본 포트 사용 가능 (HTTP는 80)
사용자 정보(user:password): FTP 등 인증이 필요한 경우 포함 가능
1
ftp://anonymous:passwd@ftp.example.com/pub/gnu
5. 경로(Path)
서버 내의 파일 시스템 경로처럼 구성
여러 세그먼트로 구성될 수 있음 (
/a/b/c.html
)각 세그먼트에 개별 파라미터 지정 가능
1
http://example.com/tools;type=hand/index.html;graphics=true
6. 파라미터 (Params)
;
로 구분된 name=value 형식
1
ftp://example.com/file;type=b
7. 쿼리 문자열 (Query)
?
뒤에 붙는 name=value 쌍들 (&로 구분)
1
http://example.com/search?item=hammer&color=blue
요청받을 리소스 형식의 범위를 좁히기 위해 쿼리를 받을 수 있음
8. 프래그먼트 (Fragment)
#
뒤에 오는 이름은 리소스 내부 특정 위치를 지정함
1
http://example.com/tools.html#drills
클라이언트에서만 사용되고 서버로 전송되지 않음
9. 상대 URL과 확장 URL
📍 상대 URL
전체 주소가 아닌 일부만 포함된 URL (
./hammers.html
)기준이 되는 base URL과 결합하여 절대 URL로 변환됨
📍 확장 URL
- 브라우저가 자동으로 주소 보완 (
yahoo
→www.yahoo.com
)
10. 인코딩과 안전하지 않은 문자들
URL에는 안전한 문자만 포함되어야 함
특수 문자들은
%
와 16진수 코드로 인코딩
문자 | ASCII Code | 인코딩 (이스케이프 문자) |
---|---|---|
~ | 126 (0x7E) | %7E |
빈 문자 | 32 (0x20) | %20 |
% | 37 (0x25) | %25 |
💡 인코딩이 필요한 문자들 간단 예시
문자 | 용도 또는 제약 |
---|---|
/ | 경로 구분자 |
? | 쿼리 시작 |
# | 프래그먼트 시작 |
: | 스킴/포트 구분 |
@ | 사용자 정보 구분 |
< > “ | 문서 내 URL 구분용 문자 → 반드시 인코딩 필요 |
URL을 안전하게 처리하려면 모든 비표준 문자는 인코딩해야 함
11. 주요 URL 스킴 예시
스킴 | 설명 | 예시 |
---|---|---|
http | 웹 페이지 접근용 기본 스킴 | http://example.com |
https | 보안 HTTP (SSL/TLS 사용) | https://example.com |
mailto | 이메일 주소 참조 | mailto:me@example.com |
ftp | FTP 서버의 파일 접근 | ftp://user@host/file.txt |
rtsp | 실시간 스트리밍 프로토콜 | rtsp://host/video |
file | 로컬 또는 네트워크 파일 시스템 | file:///Users/me/file.txt |
news | 뉴스 그룹 접근 (RFC 1036) | news:rec.arts.movies |
telnet | 대화형 서비스에 접근 | telnet://user@host:23 |
12. 미래의 URL: URN과 PURL
URN (Uniform Resource Name): 리소스의 “위치”가 아닌 “이름”으로
- 위치가 바뀌어도 동일하게 식별 가능 → 리소스 추적 가능성 향상
PURL (Persistent URL): 중간 서버를 통해 실제 위치를 찾아주는 방식
1
2
STEP 1: http://purl.oclc.org/jhardware → 실제 위치 질의
STEP 2: http://www.joes-hardware.com 으로 리다이렉션
PURL을 사용하면 URL로 URN의 기능을 제공할 수 있음
IETF(Internet Engineering Task Force)는 URN이라는 새로운 표준 작업에 착수