HTTP — 메서드·상태코드·헤더·HTTPS·TLS·HTTP/2·3
HTTP — 메서드·상태코드·헤더·HTTPS·TLS·HTTP/2·3
🎯 이 lesson 을 읽고 나면
이 lesson 을 다 읽고 나면 아래 3가지를 자신 있게 할 수 있습니다.
- ▸✅ HTTP 1.0 → 1.1 → 2 → 3 변화 핵심
- ▸✅ GET · POST · PUT · DELETE · PATCH 의 멱등성
- ▸✅ Cache-Control · ETag · 304 캐시 동작
학습 목표를 체크리스트로 두고 다 답할 수 있게 되면 lesson 을 닫으세요.
HTTP 메서드·상태코드·헤더
HTTP 메서드 (8개):
멱등성 = 같은 요청 N 번 = 1번 효과. 결제·POST 외엔 모두 멱등 권장.
HTTP 상태 코드 (5 가지 그룹):
자주 혼동:
- ▸401 = 인증 안 됨 (로그인 필요)
- ▸403 = 인증 됐는데 권한 없음
- ▸404 = 자원 없음 (또는 권한 없음 숨김용)
핵심 HTTP 헤더:
HTTPS + TLS 1.3 핸드셰이크
HTTPS = HTTP + TLS. 평문 HTTP 는 패킷 탈취 시 모든 내용 노출.
TLS 1.3 핸드셰이크 (1-RTT, 2018 표준):
3 단계 검증 (인증서):
1. 신뢰성: 발급자가 신뢰된 CA? (브라우저 내장 CA 목록)
2. 유효성: 만료 X? 폐기 안 됨 (CRL·OCSP)?
3. 일치성: 도메인 매치? (*.example.com ↔ api.example.com)
Forward Secrecy (TLS 1.3 필수):
- ▸매 세션 새 키 생성
- ▸서버 키 노출돼도 과거 트래픽 복호화 X
HTTP/1.1 vs 2 vs 3:
HTTP/2 멀티플렉싱 — 한 TCP 연결로 다중 스트림:
- ▸HTTP/1.1: 6개 동시 연결만 (브라우저 제한)
- ▸HTTP/2: 1 연결로 무한 스트림. Head-of-Line blocking 해결
HTTP/3 (QUIC) — TCP 의 한계 극복:
- ▸TCP HoL blocking (한 패킷 손실 → 전체 대기) 해결
- ▸0-RTT 재접속 (PSK)
- ▸모바일 IP 변경 시 연결 유지
HTTP 캐시 — Cache-Control · ETag · 304
캐시가 왜 필요한가
같은 자원을 매번 다시 받지 마라 — 대역폭·서버 부하·체감 속도 모두 개선.
Cache-Control — 현대 표준
자주 쓰는 지시어 6개
실무 패턴
ETag — 바뀌었나 확인용 지문
ETag 가 같으면 본문 안 보냄 — 대역폭 절약. 본문 1MB → 응답 0KB.
Last-Modified — 옛 방식
ETag 보다 정밀도 낮음 (초 단위). 현대 서버는 ETag 우선.
브라우저 캐시 vs CDN 캐시
- ▸브라우저 캐시:
private또는public둘 다 저장. 내 컴퓨터만. - ▸CDN 캐시:
public만 저장. 전 세계 엣지 서버 에서 공유.
Vary 헤더로 어떤 요청 차이에 따라 다른 캐시 만들지 지정:
stale-while-revalidate — 지연 0 + 최신성
60초까지는 fresh. 60~360초는 일단 옛 응답 반환 + 백그라운드로 새로 받아 갱신. 사용자는 즉시 반응 받고 다음 요청은 새 데이터.
Next.js · TanStack Query 가 내부적으로 이 전략 사용.
🤖 AI 에게 이렇게 요청해보세요
- ▸"Next.js next.config.js 에 정적 파일 1년 캐시 + HTML no-cache 설정해줘"
- ▸"이 API 응답에 60초 캐시 + stale-while-revalidate 300초 헤더 추가해줘"