면접을 위한 CS 전공지식 노트 - HTTP

HTTP
면접을 위한 CS 전공지식 노트HTTP
avatar
2025.04.16
·
9 min read

5220

HTTP 프로토콜의 발전과 주요 특징

HTTP(Hyper Text Transfoem Protocol)는 웹에서 데이터를 교환하기 위한 기반 프로토콜로, 애플리케이션 계층에서 동작합니다. 1990년대 초 HTTP/1.0부터 시작하여 성능과 효율성을 개선하며 HTTP/1.1, HTTP2를 겨쳐 현재 UDP 기반의 HTTP/3까지 발전해왔습니다.

HTTP/1.0의 한계

초기 버전인 HTTP/1.0은 요청 하나당 TCP 연결 하나를 새로 맺는 방식으로 동작했습니다. 이는 각 요청마다 TCP 3-way 핸드셰이크 과정이 필요하여 RTT(왕복 시간) 증가를 유발하는 비 효율성을 가졌습니다. 이를 완하하기 위해 이미지 병합(스플리팅), 코드 압축, 이미지 Base64 인코딩 등의 기법이 사용되었습니다.

HTTP/1.1의 주요 개선 사항 및 한계

HTTP/1.1은 HTTP/1.0의 단점을 개선하며 등장했으며, 현재도 널리 사용됩니다(2025년 기준 약 78% 추정).

  • 지속적 연결 (Persistent Connections): Connection: Keep-Alive (기본 동작)을 통해 한 번 맺은 TCP 연결을 여러 요청/응답에 재 사용하여 핸드셰이크 오버헤드를 줄였습니다.

  • 파이프라이닝 (Pipelining): 클라이언트가 이전 응답을 기다리지 않고 여러 요청을 보낼 수 있게 했으나, 서버는 요청 순서대로 응답해야 해서 먼저 보낸 요청 처리가 늦어지면 후속 응답이 모두 지연되는 HOL Blocking(Head-Of-Line Blocking) 문제가 발생하여 실제 성능 향상은 제한적이었습니다.

  • 가상 호스팅 (Virtual Hosting): Host 헤더를 의무화하여 하나의 IP 주소에서 여러 도메인 운영을 가능하게 했습니다.

  • 메소드 확장: GET, POST 외에 PUT, DELELTE 등을 추가하여 RESTful API의 기반을 마련했습니다.

  • 향상된 캐싱: ETag 헤더를 도입하여 콘텐츠 기반 캐시 유효성 검증을 가능하게 함으로써 캐시 효율성을 높였습니다.

  • 전송 최적화: Transfer-Encoding: Chunked로 동적 콘텐츠 전송 및 스트리밍을 용이하게 했습니다.

  • 오류 처리: Expect: 100-continue 헤더로 큰 데이터 전송 전 서버 처리 가능 여부 확인 메커니즘을 제공했습니다.

하지만 HTTP/1.1은 여전히 HOL Blocking 문제와 압축되지 않은 무거운 헤더 구조라는 한계를 가졌습니다.

HTTP/2의 혁신과 TCP의 과제

HTTP/2는 구글의 SPDY 프로토콜을 기반으로 웹 성능 향상에 초점을 맞춰 개발되었습니다.

  • 멀티플렉싱 (Multiplexing): 하나의 TCP 연결 내에서 여러개의 스트림(Stream)을 통해 요청과 응답을 병렬로 처리하여 HOL Blocking 문제를 에플리케이션 계층에서 해결했습니다. 특정 스트림의 패킷 손실이 다른 스트림에 영향을 미치지 않습니다.

  • 헤더 압축 (Header Compression): HPACK 압축 방식을 사용하여 헤더 크기를 줄여 효율성을 높였습니다.

  • 서버 푸시 (Server Push): 클라이언트 요청 없이 서버가 필요한 리소스(CSS, JS 등)을 미리 보낼 수 있게 했습니다.

  • 보안 강화: 사실상 HTTPS 사용이 강제되어 보안이 강화되었습니다. SSL/TLS 핸드셰이크 비용도 단일 연결 사용으로 줄었습니다.

그러나 HTTP/2도 전송 계층에서는 TCP를 사용하기 때문에, TCP 패킷 손실 발생 시 해당 연결을 사용하는 모든 스트림이 지연되는 TCP 레벨의 HOL Blocking 문제는 여전히 존재했습니다.

HTTPS와 SSL/TLS

HTTPS는 HTTP 통신 내용을 SSL/TLS 프로토콜로 암호화하는 방식입니다. SSL/TLS는 CA 발급 인증서를 통한 서버 인증, 키 교환 알고리즘(예: 디피-헬만 방식)을 이용한 안전한 세션 키 생성, 해싱 알고리즘(예: SHA-256)을 통한 데이터 무결성 보장 증의 보안 기능을 제공합니다. 보안 외에도 검색 엔진 최적화(SEO) 측면에서 이점을 가집니다.

HTTP/3와 QUIC 프로토콜

HTTP/3는 TCP의 근본적인 한계를 극복하기 위해 UDP 기반의 QUIC(Quick Internet Connections) 프로토콜 위에서 동작합니다.

  • QUICK 프로토콜: UDP의 유연성을 바탕으로 TCP의 신뢰성 있는 기능(오류 제어, 흐름 제어 등)과 TLS 1.3 기반 보안 기능을 통일한 전송 프로토콜입니다. TCP 확장성 한계(헤더 옵션 공간 부족 등)을 극복하기 위해 개발되었습니다.

  • 주요 장점

    • 연결 설정 시간 단축: TCP 핸드셰이크와 TLS 핸드셰이크를 통합하여 초기 연결 설정에 필요한 RTT 감소 (1-RTT 또는 0-RTT).

    • TCP 레벨 HOL Blocking 해결: QUIC의 스트림은 독립적으로 처리되어 한 스트림의 패킷 손실이 다른 스트림에 영향을 주지 않습니다.

    • 향상된 오류 복구: FEC(Forward Error Correction) 등으로 패킷 손실 복구 능력 향상.

HTTP 프로토콜은 성능과 보안을 향상시키는 방향으로 계속 진화하고 있으며, 각 버전의 특징과 장단점을 이해하는 것이 중요합니다.

핵심 포인트

  • HTTP는 웹 통신을 위한 애플리케이션 계층 프로토콜로, 1.0 -> 1.1 -> 2 -> 3 순서로 발전했습니다.

  • HTTP/1.1은 지속적 연결, 가상 호스팅 등으로 효율성을 높였으나 HOL Blocking 한계가 있었습니다.

  • HTTP/2는 멀티플렉싱, 헤더 압축 등으로 성능을 크게 개선했지만, TCP 레벨의 HOL Blocking 문제는 남았습니다.

  • HTTPS는 SSL/TLS를 통해 HTTP 통신을 암호화하여 보안을 강화합니다.

  • HTTP/3는 UDP 기반의 QUIC 프로토콜을 사용하여 연결 설정 시간을 줄이고 UCP 레벨의 HOL Blocking 문제를 해결하는 등 성능을 더욱 향상시켰습니다.

출처

  • 면접을 위한 CS 전공지식 노트







- 컬렉션 아티클