앞서 배운 response와 request에 각각 http version이 명시되어 있는데 이번에는
http version 특성을 간단하게 정리해보자.
HTTP/1.0
- 한 연결당 하나의 요청을 처리하도록 설계됨
- TCP 커넥션이 HTTP 요청마다 3-way Handshake와 TearDown 반복
- RTT증가
RTT: 패킷이 목적지에 도달하고 다시 출발지로 돌아오기 전까지 걸리는 시간 = 패킷 왕복 시간
RTT 증가를 해결하기 위해 시도한 방법
- 이미지 스플리팅
- 많은 이미지가 합쳐져 있는 하나의 이미지를 받아 position을 이용하여 단일 이미지처럼 표기하는 방법
- 코드 압축
- 개행 문자, 빈칸등을 없애서 코드의 크기를 최소화하는 방법
- 이미지 Base64 인코딩
- 이미지 파일을 64지법으로 이루워진 문자열로 인코딩
- 이 방법을 사용하면 이미지를 직접 HTTP 요청이 필요없음, 대신 크기가 37%정도 커짐
HTTP/1.1
- keep-alive
- 한번 TCP 초기화를 한 이후 여러 개의 파일을 송수신할 수 있는 옵션
- 이미지를 보면 한번 연결 이후 여러번의 Request와 Response를 송수신하는걸 볼 수 있다.
- 1.0에도 있었지만 표준화는 1.1부터되었다.
- HOL Blocking(Head Of Line Blocking)
- 같으 큐에 있는 앞의 패킷이 지연될 때 발생하는 성능 저하 현상
- 예를 들어 앞의 image 파일의 다운로드가 지연된다면 뒤에있는 css , xml등 다른 파일들도 지연됨
- 무거운 헤더 구조
- 1.0에 비하여 쿠키등 많은 메타데이터가 압축이 되지 않아 무거워짐
HTTP/2
HTTP/2.0은 binary frame으로 인코딩되어 전송되며 header와 body가 layer로 구분되어
데이터 파싱 및 전송 속도가 증가하며 오류 발생률은 감소되었다.
- 멀티플렉싱
- 여러 개의 스트림을 사용하여 송수신
- 특정 스트림의 패킷이 손실되어도 해당 스트림에만 영향을 미치고 나머지 스트림은 멀쩡하게 동작
- 메시지를 독립된 프레임으로 조각내어 서로 송수신한 이후 다시 조립하며 데이타를 주고 받는다.
- 단일 연결로 병렬 요청/응답을 줄 수 있으므로 HTTP/1.x에서 발생한 HOL Blocking을 해결할 수 있다.
- 헤더 압축
- 허프만 코딩 압축 알고리즘을 통해 HTTP/1.x에 큰 헤더를 압축시킴
- 서버 푸쉬
- HTTP/1.x는 클라이언트가 파일하나당 한번의 요청이 필요하다.
- HTTP/2부터는 클라이언트가 하나의 파일을 요청하면 필요한 다른 파일을 예측해서 같이 보내줄 수 있다.
- 예를 들어 html에서 사용되는 css나 js파일을 html 파일 요청 시 같이 보내줄 수 있다.
스트림: 시간이 지남에 따라 사용할 . 수있게 되는 일련의 데이터의 흐름
HTTP/3
- HTTP/2 까지는 TCP를 사용했지만 HTTTP/3는 QUIC 계층 위에서 돌아간다.
- QUIC라는 계층은 UDP 기반이므로 번거로운 3-way handshake 과정이 없음
- 보안을 위해서 딱 한번의 핸드쉐이크만 필요됨
💡QUIC이란?
Quick UDP Internet Connections의 약자로 구글이 개발한 전송계층 프로토콜이다.
HTTPS
HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말한다.
통신의 암호화가 목적이다.
- SSL
- Secure Socket Layer의 약자
- 전송 계층에서 보안을 제공하는 프로토콜
- 제3자가 메시지를 도청하거나 변조하지 못하도록 한다.
- TLS
- Transport Layer Security의 약자
- SSL에서 발전하며 이름이 변경 된 것, 보통 합쳐서 SSL/TLS라고 많이 부름
전송 계층에서 보안을 제공하는 프로토콜로 제3자가 메시지를 도청하거나 변조하지 못하도록 한다.
SSL/TLS는 보안 세션을 기반으로 데이터를 암호화화며 보안 세션이 만들어질 때 인증 메커니즘(CA),
키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다.
참고
'CS > Network' 카테고리의 다른 글
TCP / IP [송수신 과정, 캡슐화, PDU] (0) | 2024.09.20 |
---|---|
TCP / IP 4계층 [ 계층 구조 ] (0) | 2024.09.19 |
HTTP [HTTP Response] (0) | 2024.09.18 |
HTTP [HTTP Request] (0) | 2024.09.17 |
HTTP [정의 및 구성 요소] (1) | 2024.09.16 |