반응형
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 버전 확인 가능.
728x90
반응형
'Computer Science > Network' 카테고리의 다른 글
HTTP vs HTTPS, SSL/TLS (0) | 2024.09.30 |
---|---|
암호화 - 단방향 vs 양방향, 대칭키 vs 비대칭키(개인키/공개키), 암호화 알고리즘 (0) | 2024.09.25 |