Network

[러닝 HTTP/2] 1. HTTP의 진화

noahkim_ 2025. 3. 28. 18:34

스티븐 루딘, 하비에르 가르사 님의 "러닝 HTTP/2" 책을 정리한 글입니다.

 

하이퍼텍스트 발전과정

연도 인물 개념/업적 주요 내용
1930 바네바 부시 메멕스 시스템
마이크로필름을 활용한 문서 참조 시스템 구상
관련 주제와 문맥적 상관관계 유지
1963 테드 넬슨 하이퍼텍스트 개념 고안
"종이에서 표현할 수 없는 복잡한 방식으로 상호 연결된 글·그림 자료"
1965 테드 넬슨 하이퍼텍스트 발표
정보가 상호 연결되며 지워지지 않고 누구나 쉽게 접근 가능한 문서 우주 구상
1970 테드 넬슨 하이퍼텍스트 시제품 구현
(제너두 프로젝트)
부시의 아이디어를 바탕으로 개발했으나 상용화 실패, 후대에 큰 영향
1989 팀 버너스 리 HTTP 개발 및 월드 와이드 웹 제안
CERN 연구소에서 가속기 실험 데이터를 관리하는 시스템 제안
- 하이퍼텍스트 개념 채택
  팀 버너스 리 하이퍼미디어 개념 포함
정보가 반드시 텍스트가 아니어도 됨 (이미지, 영상 등 포함)
  팀 버너스 리 서버-브라우저 개념 도입
전 세계적으로 연결된 정보 시스템(WWW) 구축

 

1. HTTP/0.9와 1.0

특징 HTTP/0.9 HTTP/1.0 (RFC 1945)
출시 연도 1991년 1996년
지원 메서드 GET (유일) GET, POST, HEAD
헤더 지원 X O
응답 코드 X O
리다이렉트 X O
조건부 요청 X O
캐싱 옵션 X 제한적 지원
연결 유지 기능 X X
Host 헤더 X 선택적
데이터 형식 텍스트 다양한 콘텐츠 유형 지원
콘텐츠 인코딩 X O
오류 처리 X O

 

2. HTTP/1.1 

rfc 7230~7235

 

개선사항 설명
Host 헤더 필수화
가상 호스팅 지원 (하나의 서버에서 여러 도메인 처리 가능)
새 연결 지시자 지속적 연결 지원
Cacheability 헤더 확장 캐싱 제어 기능
Cache-Control
- no-cache: 사용전에 반드시 서버에 유효성 검사하기
- must-revalidate: 요청하려는 리소스가 캐싱된 상태일 경우, 반드시 서버에서 만료 여부 확인 후 사용
- max-age: 요청하려는 리소스가 N초 이하로 캐싱되었을 경우 그대로 사용, 초과시 새로 요청
OPTIONS 메서드 추가
서버가 지원하는 HTTP 메서드 목록 조회 가능
Upgrade 헤더 프로토콜 업그레이드 가능
(예: WebSocket)
Range 요청
리소스의 특정 부분만 요청 가능
(예: 대용량 파일 다운로드 최적화)
Transfer-Encoding 압축 데이터를 청크 단위로 응답함
스트리밍 가능
파이프라이닝 여러 요청을 연속적으로 전송
성능 향상

 

3. HTTP/1.1 이후 

  • 웹은 HTTP/1.1 이후로 이전과 상상하지도 못할만큼 변해옴
  • 웹 페이지에 개체가 추가될 떄마다 페이지는 더 복잡해짐
  • 한 번에 한 개체만 요청하도록 설계된 이 프로토콜은 더 혹사당하고 있었음

 

4. SPDY 

  • 2009년, 마이크 벨시와 로베르토 페온은 HTTP의 대안으로 SPDY를 제시함
  • 효율적: 다중화, 프레이밍, 헤더 압축
  • 여러 브라우저와 서버, 프록시도 지원하기 시작함

 

5. HTTP/2 

년도 내용
2012년
HTTP 워킹 그룹 재구성
차세대 HTTP 프로토콜 목표 설정
- 최종 사용자의 latency(지연 시간) 개선
- HOL(Head-of-Line) 블로킹 개선
- TCP 혼잡제어 개선
- HTTP/1.1과의 호환성 유지 (중재자 명확화)
2015년
RFC 7540 발표, HTTP/2 공식 표준화 (Google SPDY 기반)