(TIL) HTTP

HTTP

1. 개요

초기 버전 HTTP/0.9간단한 GET 요청 및 HTML 문서를 보낼 수 있습니다.
HTTP/1.0크게 개선된 버전으로, 요청/응답 메시지 형식이 수정되었습니다.
하나의 요청과 하나의 응답만 처리할 수 있으며 압축 또는 헤더 정보의 지속적인 연결을 제공하지 않습니다.
HTTP/1.1현재 영구 연결, 파이프라인,
캐싱, 가상 호스팅, 청크 분할 전송과 같은 기능을 추가하여 성능과 안정성을 개선했습니다.
HTTP/2속도와 보안 측면에서 크게 향상된 버전입니다.
멀티플렉싱, 서버 푸시, 헤더 압축, 바이너리 로깅 및 스트림 우선 순위와 같은 기능
성능과 보안을 개선하기 위해 추가되었습니다.
HTTP/3현재 개발 중이며 UDP 기반 전송 프로토콜인 QUIC를 사용합니다.
QUIC은 HTTP/2에 비해 더 빠른 속도와 안정성을 제공하며 TLS 보안 프로토콜을 포함합니다.
보안도 강화되었습니다.

2. 용어

  • HTTP(하이퍼텍스트 전송 프로토콜)
    • World Wide Web(WWW)에서 사용하는 프로토콜 중 하나입니다.
    • 클라이언트와 서버 간의 데이터 교환에 사용
    • 인터넷을 통해 전송되는 HTML, 이미지, 동영상 등의 자원을 처리하는데 사용됩니다.
    • 요청 및 응답 메시지를 사용하여 통신
    • 클라이언트는 웹 브라우저를 통해 HTTP 요청을 보내고 서버는 HTTP 응답을 반환합니다.
    • 요청 메시지와 응답 메시지는 헤더와 본문으로 구성됩니다.
      • 헤더에는 요청 또는 응답에 대한 정보가 포함됩니다.
      • 본문에는 요청 또는 응답에 대한 실제 데이터가 포함됩니다.
  • 영구 연결
    • 단일 TCP 연결을 통해 여러 요청 및 응답을 처리하는 기능
    • websocket과는 다른 연결 방식으로 연결을 유지하면서 서버 측에서
      다른 클라이언트의 요청을 처리할 수 없음
    • 연결이 유지되는 한 서버 리소스가 계속 사용되므로 부하가 증가합니다.
  • 관로
    • 클라이언트가 단일 TCP 연결을 통해 동시에 여러 요청을 보내는 기능
    • 여러 요청이 동시에 처리되어 요청과 응답 사이의 대기 시간이 줄어듭니다.
  • 캐싱
    • 클라이언트와 서버 간의 트래픽을 줄이고 로딩 속도를 향상시키는 기술
    • 이전에 요청한 리소스를 클라이언트 또는 프록시에 저장하여 리소스 사용
  • 가상 호스팅
    • 단일 웹 서버에서 여러 도메인 이름을 호스팅하는 기술
    • 다수의 도메인 관리를 통한 웹서버 자원의 효율적 활용
    • 하나의 IP 주소에서 여러 도메인에 대한 다른 응답
  • 청크 전송 인코딩
    • HTTP 응답 메시지의 본문을 지정된 크기의 청크로 분할하여 전송하는 방식
    • 콘텐츠 전송 중 연결이 끊긴 경우 부분 데이터 손실의 이점
    • 전송이 완료될 때까지 기다릴 필요가 없습니다.
  • 멀티플렉싱
    • TCP 연결을 통해 여러 HTTP 요청/응답을 처리하는 기술
    • 웹 페이지 로딩 지연 문제 수정
  • 서버 푸시
    • 클라이언트의 요청 없이 서버가 필요한 자원을 미리 예측하여 클라이언트에게 보내는 방식
    • 클라이언트가 보낸 요청의 경우 관련 리소스도 전송, 캐시 및 사용됩니다.
  • 헤더 압축
    • 요청/응답 헤더의 크기를 줄이는 기술
    • 헤더는 헤더 테이블에 저장되며 중복 헤더는 인덱싱 및 압축됩니다.
    • CPU 리소스를 사용하기 때문에 처리량이 많은 서비스는 부하를 유발할 수 있으며 디버깅이 어렵습니다.
  • 바이너리 로그
    • 컴퓨터가 이해할 수 있도록 이진 형식으로 데이터를 보내는 방법
    • 텍스트 기반 프로토콜보다 더 효율적인 데이터 전송 가능
    • ( base64)
  • 스트림 우선순위
    • 여러 요청/응답이 TCP 연결을 통해 전달될 때 스트림의 우선 순위를 지정하는 기술
    • 우선 순위가 높은 요청을 먼저 처리
  • 빠른 UDP 인터넷 연결(QUIC)
    • Google에서 개발한 Transport Layer Protocol은 안전하고 빠른 데이터 전송을 지원합니다.
    • TCP의 대안으로 제안되었으며 UDP를 사용하여 TCP보다 빠른 전송 속도를 제공합니다.
    • 다양한 세션 설정 지원 및 패킷 유실 및 복구 기능 강화로 전송 안정성 향상