HTTP 프로토콜 핵심 개념과 진화 과정 완벽 가이드

HTTP 정의와 구성 요소

HTTP(HyperText Transfer Protocol)는 웹에서 데이터를 교환하기 위한 애플리케이션 계층 프로토콜이다. 이 프로토콜의 이름을 세 부분으로 분해하면 핵심 특성을 이해할 수 있다.

프로토콜의 의미

프로토콜은 둘 이상의 참여자가 따르는 약속과 규칙을 의미한다. HTTP는 클라이언트와 서버 간 통신 규약을 정의하며, 요청과 응답의 형식, 오류 처리 방법 등을 규정한다.

전송의 특성

HTTP는 양방향 통신을 지원한다. 클라이언트가 서버에 요청을 보내면 서버가 응답을 반환하는 구조다. 또한 중간 프록시나 게이트웨이를 통한 간접 통신도 가능하다.

하이퍼텍스트

HTTP가 전송하는 "하이퍼텍스트"는 단순 텍스트를 넘어 이미지, 동영상, 오디오 등 다양한 미디어를 포함하며, 하이퍼링크를 통해 다른 리소스와 연결될 수 있는 구조화된 데이터를 말한다. HTML이 대표적인 예이다.

종합적으로 HTTP는 두 지점 간에 하이퍼텍스트 데이터를 교환하기 위한 애플리케이션 계층의 통신 규약이다.

HTTP 상태 코드 분류

분류의미대표 코드
1xx정보성 응답100 Continue
2xx성공200 OK, 204 No Content, 206 Partial Content
3xx리다이렉션301 Moved Permanently, 302 Found, 304 Not Modified
4xx클라이언트 오류400 Bad Request, 403 Forbidden, 404 Not Found
5xx서버 오류500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable

주요 HTTP 더 필드

Host

대상 서버의 도메인을 지정한다. 동일 IP의 가상 호스트를 구분하는 데 사용된다.

Host: api.example.com

Content-Length

응답 본문의 바이트 길이를 나타낸다.

Content-Length: 2048

Connection

연결 유지 방식을 제어한다. HTTP/1.1 기본값은 지속 연결이다.

Connection: keep-alive

Content-Type

전송 데이터의 MIME 타입과 문자 인코딩을 명시한다.

Content-Type: application/json; charset=utf-8

Content-Encoding

압축 방식을 표시한다.

Content-Encoding: br

GET과 POST 메서드 비교

특성GETPOST
목적리소스 조회리소스 생성/제출
데이터 위치URL 쿼리 파라미터메시지 본문
안전성안전(서버 상태 불변)불안전(서버 상태 변경)
멱등성멱등(동일 결과)비멱등(중복 생성 가능)

HTTP/1.1의 특성과 한계

장점

  • 단순성: 헤더-본문 구조의 직관적인 메시지 형식
  • 확장성: 메서드, 헤더, 상태코드의 자유로운 확장 가능
  • 플랫폼 독립성: 다양한 환경에서 동일하게 동작

단점

  • 무상태성: 연속 요청 간 문맥 공유 불가 → 쿠키로 보완
  • 평문 전송: 내용 노출 위험 → HTTPS로 암호화
  • 보안 취약: 스니핑, 위장, 변조 공격에 노출

성능 개선

HTTP/1.1은 지속 연결(Persistent Connection)과 파이프라이닝을 도입했다. 하지만 파이프라이닝은 HOL(Head-of-Line) 블로킹 문제를 야기하여 실제로는 제한적으로 사용된다.

HTTPS와 보안 메커니즘

HTTP와의 차이점

  • 전송 계층에 TLS/SSL 보안 계층 추가
  • 기본 포트 443 사용
  • CA 인증서 기반 서버 신원 검증
  • 연결 설정 시 추가 핸드셰이크 필요

TLS 핸드셰이크 과정

  1. ClientHello: 지원 암호화 알고리즘, 난수, 프로토콜 버전 전송
  2. ServerHello: 선택된 알고리즘, 서버 난수, 인증서 반환
  3. 키 교환: 클라이언트가 pre-master secret 생성 후 서버 공개키로 암호화 전송
  4. Finished: 양측이 세션 키 생성 후 암호화 통신 시작

보안 메커니즘

위협해결 방식원리
도청혼합 암호화비대칭 키로 세션 키 교환, 대칭 키로 데이터 암호화
변조해시 기반 MAC메시지 다이제스트로 무결성 검증
위장디지털 인증서CA가 서명한 공개키 신뢰 보장

HTTP/2의 혁신

바이너리 프레이밍

텍스트 기반에서 바이너리 프레임 단위로 변경되어 파싱 효율성과 오류 감소를 달성했다.

HPACK 헤더 압축

정적/동적 테이블과 허프만 코딩으로 중복 헤더 제거 및 전송량 감소

스트림과 멀티플렉싱

단일 TCP 연결 내에서 여러 스트림을 동시에 처리한다. 각 스트림은 고유 ID로 식별되며, 우선위 지정이 가능하다. 이로써 HTTP/1.1의 HOL 블로킹이 해소된다.

서버 푸시

클라이언트 요청 없이 예상되는 리소스를 선제적으로 전송하여 지연 시간을 줄인다.

HTTP/3와 QUIC

배경

HTTP/2의 TCP 레벨 HOL 블로킹 문제를 근본적으로 해결하기 위해 UDP 기반의 QUIC을 채택했다.

QUIC 특성

  • 스트림 수준 격리: 패킷 손실이 개별 스트림에만 영향
  • 빠른 연결 설정: 0-RTT 또는 1-RTT 핸드셰이크
  • 내장 보안: TLS 1.3이 프로토콜에 통합
  • 연결 마이그레이션: IP 변경 시에도 연결 유지

QPACK

QUIC 환경에 최적화된 헤더 압축으로, HPACK의 동적 테이블 동기화 문제를 해결한다.

프로토콜 진화 요약

버전핵심 개선전송 계층
HTTP/1.0기본 요청-응답TCP (단기 연결)
HTTP/1.1지속 연결, 파이프라이닝TCP
HTTP/2멀티플렉싱, 헤더 압축, 서버 푸시TCP
HTTP/3스트림 격리, 빠른 핸드셰이크QUIC over UDP

태그: HTTP HTTPS TLS QUIC HTTP/2

7월 8일 01:13에 게시됨