HTTP/1.0, HTTP/1.1, HTTP/2.0, HTTP/3.0(QUIC)

2024. 9. 30. 15:11·Computer Science/Network
반응형

HTTP/1.0

  • 특징 :
    • 수명이 짧은 연결
    • 요청 당 TCP handshake가 발생됨. 한 연결 당 하나의 요청 처리.
  • 문제점 :
    • RTT(Round Trip Time)가 늘어나는 문제점.
    • HTTP 1.0 환경에서는 하나의 IP에 여러 개의 도메인을 운영할 수 없음.

RTT 감소를 위해 이미지 스프라이트(image sprite), 코드 압축, base64인코딩 등 시행

 

 

 

HTTP/1.1

  • 특징 :
    • 한번 TCP 연결을 해놓고 계속 데이터를 주고 받음. (keep-alive default)
    • 서버가 여러 호스트를 가질 수 있다는 전제로 호스트 헤더를 추가함.
    • 다운로드 받다가 연결 끊기면 다시 다운로드 받을 수 있도록 함. (대역폭 최적화에 대한 헤더를 추가)
  • 문제점 :
    • HOL(Head Of Line-Blocking) : 네트워크에서 같은 큐(queue)에서 선두에 있는 작업이 지연되거나 블록되면 뒤에 있는 모든 작업이 지연되는 현상
    • 무거운 Header : 수 많은 http 요청이 발생할 것이고, header의 정보는 대부분 동일할 것이다. 즉, 불필요한 데이터를 주고받는데 네트워크 자원이 낭비 됨.

 

 

 

HTTP/2.0

  • 특징 :
    • 바이너리 포맷 계층 추가 : 파싱, 전송 속도 ⬆️, 오류 발생 가능성 ⬇️
    • 멀티플렉싱 (I/O Multiplexing) : 동시에 여러 개의 메세지를 주고 받을 수 있음.
      또한, 응답은 요청 순서에 상관없이 Stream으로 받기 때문에 HOL(Head Of Line) Blocking 문제 보완.
      즉 여러 개의 스트림을 사용하여 송수신한다는 것. 이를 통해 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 미치고 나머지 스트림은 멀쩡하게 동작할 수 있음.
    • 서버 푸시 (Server push) : 클라이언트가 리소스가 필요할지 알기도 전에 미리 리소스를 로드하여 대기 시간을 줄이는 것. 즉, 서버가 클라이언트의 요청없이 응답을 보내는 방법으로 클라이언트의 요청을 최소화하여 서버가 리소스를 보내주는 방식.
    • 헤더 압축 (Header Compression) : 중복되는 헤더는 공통 필드로 헤더 재구성하고, 중복되지 않은 헤더만 허프만 인코딩 압축 방법 등으로 압축시킴.
    • 우선순위 (Stream Prioritization) : 소스간 우선 순위를 설정 가능. 응답에 대한 우선순위를 정해 우선순위가 높을수록 응답을 빨리 함.
  • 문제점 :
    • 여전히 TCP 초기 연결에 대해 RTT로 인한 지연시간이 존재.
    • 때문에 HOL을 보완하긴 했지만 완전한 해결이 되지 않음.

 

 

 

HTTP/3.0

  • 특징
    • 2020년 등장하였으며, TCP 위에서 돌아가는 이전 버전과 달리 HTTP3는 QUIC이라는 계층 위에서 돌아가며, TCP 기반이 아닌 UDP 기반으로 돌아간다.
    • http/3.0에서는 무조건 https를 사용한다. (네이버는 HTTP3와 HTTP2를 혼용하여 컨텐츠를 서빙하며, 구글은 HTTP3로만 서빙)
    • HTTP/2.0 에서 장점이었던 멀티플렉싱을 가지고 있으며, "초기 연결 설정 시 지연 시간 감소"라는 대표적 특성이 있음.

QUIC

  • HTTP/2.0의 경우 3-RTT가 필요했다면 QUIC은 1-RTT만 필요.
    • HTTP/2.0 : TCP handshake (1 RTT) + TLS handshake(1~2 RTT)
    • QUIC : TCP handshake와 TLS handshake를 하나의 단계로 통합 TLS로 암호화통신을 구축할 때의 단 한번의 handshake를 활용해 클라이언트와 서버간의 연결,암호화 통신 모두 다 구축.
  • 전송 속도 향상 : 첫 연결 설정에서 필요한 정보와 함께 데이터를 전송. 연결 성공 시 설정을 캐싱하여 다음 연결 때 바로 성립 가능
  • Connection UUID라는 고유한 식별자로 서버와 연결 : 커넥션 수립 필요가 없음
  • TLS (전송 계층 보안, Transport Layer Security) 기본 적용
  • IP Spoofing / Replay Attack을 방지하여 보안성을 향상

 

 

 

 

※ 프로젝트 http 버전은 어디서 설정? 어디서 확인?

서버에서 관리. 서버 nginx나 아파치에서 설정 가능.

브라우저에서 http 버전 확인 가능.

 

 

더보기

참고 :
https://velog.io/@minu/HTTP1.0-HTTP1.1-HTTP2-and-QUIC

728x90
반응형

'Computer Science > Network' 카테고리의 다른 글

포트(PORT)와 DNS  (1) 2025.01.24
TCP/UDP  (1) 2025.01.23
IP(인터넷 프로토콜)  (0) 2025.01.22
HTTP vs HTTPS, SSL/TLS  (0) 2024.09.30
암호화 - 단방향 vs 양방향, 대칭키 vs 비대칭키(개인키/공개키), 암호화 알고리즘  (0) 2024.09.25
'Computer Science/Network' 카테고리의 다른 글
  • TCP/UDP
  • IP(인터넷 프로토콜)
  • HTTP vs HTTPS, SSL/TLS
  • 암호화 - 단방향 vs 양방향, 대칭키 vs 비대칭키(개인키/공개키), 암호화 알고리즘
settong
settong
    250x250
  • settong
    개 발 자 국
    settong
  • 전체
    오늘
    어제
    • 전체보기 (202)
      • Computer Science (50)
        • Network (7)
        • Operating System (18)
        • Data Structure (9)
        • Database (11)
        • Algorithm (5)
      • Language (17)
        • Java (17)
        • Javascript (0)
        • Python (0)
      • Devops (20)
        • AWS (0)
        • Naver Cloud (16)
        • CICD (3)
        • 웹 서버 관리 (1)
      • Front (0)
        • React (0)
      • Backend (5)
        • Spring (5)
      • 코딩 테스트 정복기 (110)
        • 백준 (51)
        • 프로그래머스 (53)
        • 기타 (6)
      • etc (0)
      • 경제 상식 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    다익스트라
    Network
    ncp200
    Spring Boot
    프로그래머스
    집합
    github actions
    분할정복
    DFS
    백준
    BFS
    ncp202
    lcs
    다이나믹프로그래밍
    해시
    완전탐색
    벨만포드
    CI/CD
    백트래킹
    ncp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
settong
HTTP/1.0, HTTP/1.1, HTTP/2.0, HTTP/3.0(QUIC)
상단으로

티스토리툴바