Post

[HTTP 완벽 가이드 정리] 01. HTTP: 웹의 기초 - 02. URL과 리소스

2장 URL과 리소스에서는 URL의 포맷과 인터넷에 있는 URL들이 가리키는 다양한 리소스 형식에 대해 자세히 알아본다. 또한 URN으로 발전하는 과정에 대해서도 개략적으로 알아본다.

[HTTP 완벽 가이드 정리] 01. HTTP: 웹의 기초 - 02. URL과 리소스

📝 핵심 요약

주제요약
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)를 # 뒤에 명시
상대 URLbase URL을 기준으로 해석되는 URL 조각. HTML에서 자주 사용
URL 인코딩안전하지 않은 문자를 %와 16진수로 인코딩 (예: 공백 → %20)
주요 스킴http, https, ftp, mailto, file, rtsp, telnet, news 등 다양한 접근 방식 제공
URN vs URLURN은 이름 기반, 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

  • 브라우저가 자동으로 주소 보완 (yahoowww.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
ftpFTP 서버의 파일 접근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이라는 새로운 표준 작업에 착수



This post is licensed under CC BY 4.0 by the author.