반응형
Notice
Recent Posts
Recent Comments
Link
Today
Total
02-02 06:27
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
관리 메뉴

iOS 개발 기록 블로그

HTTP/1.1은 무엇일까? 본문

Back-end

HTTP/1.1은 무엇일까?

crazydeer 2024. 11. 17. 18:10
반응형

HTTP란 무엇인가?

  • HTTP(HyperText Transfer Protocol)는 클라이언트(브라우저, 앱)와 서버 간에 데이터를 주고받기 위한 규약(프로토콜)입니다.
  • HTTP는 상태를 유지하지 않는 비연결성 프로토콜(stateless)로 시작했지만, 시간이 지나며 성능 향상과 보안 문제를 해결하기 위해 발전해 왔습니다.

HTTP 프로토콜의 발전

1. HTTP/1.0 (초기 버전)

  • 1996년에 등장한 HTTP의 초기 버전입니다.
  • 특징
    • 단순 요청-응답 모델: 요청을 보내고, 응답을 받은 후 연결을 바로 끊음.
    • 비효율적 연결: 한 번의 요청마다 새로운 TCP 연결을 만들어야 함. 여러 리소스를 로드하는 데 시간이 오래 걸림.
    • 캐싱 한계: 기본적인 캐싱만 지원하며, 효율적인 데이터 재사용이 어려움.
    • HTTP 헤더 제한적: 헤더 정보가 간단하고 유연성이 부족함.

2. HTTP/1.1 (현재 가장 널리 사용)

  • 1997년에 등장하여, 웹 기술 발전에 맞춰 많은 기능이 추가되었습니다.
  • 특징
    1. 지속 연결(Persistent Connection)
      • 한 번 TCP 연결을 열면, 여러 요청과 응답을 처리할 수 있음.
      • 예: 브라우저가 HTML, 이미지, CSS, JS를 같은 연결에서 받아올 수 있음.
      • 연결이 닫힐 때까지 재사용 가능.
    2. 파이프라이닝(Pipelining, 잘 쓰이지 않음)
      • 클라이언트가 여러 요청을 연달아 보내고, 서버가 순차적으로 응답을 반환.
      • 하지만 응답 순서 문제로 잘 사용되지는 않음.
    3. 효율적인 캐싱 지원
      • 브라우저와 서버 간 데이터 캐싱을 위한 헤더 추가.
      • 예: Cache-Control, Expires, ETag 등.
      • 중복 요청을 줄이고 성능을 향상.
    4. 가변 길이 응답 지원
      • 데이터를 전송하는 중에 길이를 모르는 경우에도 전송 가능 (Chunked Transfer Encoding).
      • 큰 파일(비디오, 대용량 데이터 등)을 끊어서 전송 가능.
    5. 호스트 헤더(Host Header)
      • 한 IP 주소에 여러 도메인을 지원할 수 있음 (가상 호스팅).
      • 예: 동일 서버에서 example.com과 example.org를 구분.

3. HTTP/2 (최신 버전)

  • 2015년에 등장한 HTTP/2는 속도와 효율성을 크게 개선했습니다.
  • 특징
    1. 멀티플렉싱(Multiplexing)
      • 한 TCP 연결에서 여러 요청과 응답을 동시에 처리.
      • HTTP/1.1에서는 요청 순서가 막히는 문제가 있었지만, 이를 해결함.
    2. 헤더 압축(Header Compression)
      • 요청/응답 헤더 크기를 줄여 네트워크 대역폭 사용 감소.
      • 예: 동일한 헤더를 반복적으로 보내지 않음.
    3. 서버 푸시(Server Push)
      • 클라이언트가 요청하지 않아도, 서버가 미리 관련 리소스를 전송 가능.
      • 예: HTML을 요청하면 CSS와 JS를 함께 미리 전송.

4. HTTP/3 (미래의 HTTP)

  • HTTP/3는 기존 TCP 대신 QUIC 프로토콜(UDP 기반)을 사용하여 성능과 보안을 강화했습니다.
  • 특징
    1. 빠른 연결 설정: QUIC은 연결 지연(latency)을 줄임.
    2. 데이터 손실 복구: HTTP/2는 TCP 기반이라 패킷 손실 시 전체 요청이 지연되지만, HTTP/3는 손실된 데이터만 재전송.
    3. 보안 강화: HTTPS(암호화) 기능이 기본 내장됨.

HTTP/1.1의 장점

1. 지속 연결로 성능 향상

  • 여러 요청을 한 연결에서 처리하므로, 불필요한 TCP 연결 설정/종료가 줄어듭니다.
  • 브라우저가 이미지, CSS, JS 파일을 동시에 빠르게 가져올 수 있습니다.

2. 캐싱을 통한 효율성

  • 클라이언트가 서버 데이터를 캐싱하면, 동일한 데이터를 반복 요청하지 않습니다.
  • 헤더 예시:
    • Cache-Control: max-age=3600 (1시간 동안 캐싱)
    • ETag: "12345" (데이터가 변경되지 않으면 캐싱 유지)

3. 헤더 유연성

  • HTTP/1.1에서는 다양한 헤더를 통해 데이터를 상세히 제어할 수 있습니다.
    • Content-Type: 응답 데이터의 형식 지정 (예: application/json).
    • Content-Length: 응답 데이터의 길이.

HTTP/1.1의 한계

  1. 한 연결당 직렬 처리
    • 멀티플렉싱이 없어서 한 연결에서 요청을 순차적으로 처리해야 함.
    • 많은 요청이 있을 경우 성능 저하.
  2. 헤더 크기 문제
    • 헤더 크기가 커지면, 불필요한 데이터 전송량이 증가.
  3. 지연(latency) 문제
    • RTT(Round Trip Time) 때문에 연결 설정 시간이 오래 걸릴 수 있음.

HTTP/1.1의 실제 사용

  • HTTP/1.1은 여전히 많은 웹사이트에서 사용됩니다.
  • 최신 브라우저와 서버는 HTTP/2 이상을 지원하지만, HTTP/1.1도 하위 호환성을 위해 사용 가능합니다.
  • 예를 들어:
    • 클라이언트가 HTTP/2를 지원하지 않으면, 서버는 자동으로 HTTP/1.1로 처리.
반응형