HTTP는 애플리케이션 계층에서 사용되는 프로토콜로 웹 서비스 통신에 사용된다.
HTTP는 HTTP 1.0부터 시작하여 현재 HTTP 3.0이다.
이런 발전 과정을 살펴보며 어떤 것들을 극복해왔고 보완했는지에 대해 자세히 알아보겠다.
| HTTP 1.0
기본적으로 한 열결 당 하나의 요청을 처리하도록 설계되었다.
매 요청마다 3-way handshakes 작업을 해줘야하기 때문에 RTT가 증가한다는 단점이 있다.
*RTT: 패킷 왕복 시간
RTT 증가 문제 해결 방법
RTT가 증가하는 문제를 해결하기 위한 방법은 이미지 스플리팅, 코드 압축, Base64 인코딩이 있다.
- 이미지 스플리팅
많은 이미지가 합쳐진 하나의 이미지를 다운받고, background-image의 position을 이용하여 이미지를 표기하는 방법을 말한다. 이러한 방법을 통해 많은 이미지를 다운받을 때 발생하는 과부하를 줄일 수 있다. - 코드 압축
코드의 개행 문제, 빈칸을 없애서 코드의 용량을 줄이는 방법을 말한다. - Base64 인코딩
이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법을 말한다.
*인코딩: 정보의 형태나 형식을 다른 형태나 형식으로 변환하는 것
| HTTP 1.1
HTTP 1.0처럼 매 요청마다 TCP 연결을 하는 것이 아니라 한 번 TCP 3-way handshakes가 발생하면 다음부터는 발생하지 않는다. 한 번의 연결에 다수의 요청을 처리할 수 있다는 장점이 있다. 그러나 요청의 개수에 비례해서 대기시간이 길어진다는 단점이 있다.
HTTP 1.1의 문제점은 대표적으로 HOL Blocking 과 무거운 헤더 구조가 있다.
- HOL Blocking: 네트워크에서 같은 큐에 있는 패킷들이 맨 앞에 있는 패킷에 의한 지연으로 인해 성능이 저하되는 문제
- 무거운 헤더 구조: HTTP 1.1에는 쿠키 등과 같은 많은 메타데이터가 들어있는데, 압축이 이뤄지지 않아 무거웠다.
| HTTP 2.0
HTTP 2.0은 HTTP 1.x보다 지연시간을 줄이고 응답 시간을 더 빠르게 처리하는 프로토콜이다.
멀티플렉싱, 헤더 압축, 서버푸시 기능을 지원한다.
- 멀티플렉싱
여러 개의 스트림을 사용하여 데이터를 송수신한다. 어떤 스트림에 문제가 생겨도 영향이 다른 스트림과 격리된다.
단일 연결을 사용해도 병렬로 요청을 처리할 수 있다. 이렇게 되면, HTTP 1.x에서 발생하는 HOL Blocking 문제를 해결할 수 있다. - 헤더 압축
허프만 코딩 압축 알고리즘을 사용하여 헤더를 압축한다.
*허프만 코딩 압축 알고리즘: 문자열을 문자 단위를 쪼개 빈도수가 높은 정보는 적은 비트 수를 사용하여 표현하고 빈도 수가 낮은 정보는 높은 비트 수를 사용하여 표현한다. 이러한 원리를 통해 전체 데이터를 표현하는 데 필요한 비트 양을 줄일 수 있다. - 서버 푸시
HTTP 1.1에서는 클라이언트가 서버에 요청을 해야 리소스를 받을 수 있었다.
HTTP 2.0은 클라이언트의 요청 없이도 서버가 리소스를 푸시할 수 있다.
| HTTPS
HTTP 2.0은 HTTPS 기반 위에서 동작한다. HTTPS 는 애플리케이션 계층과 전송 계층 사이에 SSL/TLS 계층을 넣어 신뢰할 수 있는 HTTP 요청을 말한다.
SSL/TLS
전송 계층에서 보안을 제공하는 프로토콜이다.
보안 세션을 기반으로 데이터를 암호화하여 공격자가 통신 도중에 정보를 가로채는 것을 막아준다.
보안 세션이 만들어질 때는 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다.
| HTTP 3.0
TCP 위에서 돌아가는 HTTP 2.0 과는 달리 HTTP 3.0 은 QUIC이라는 계층 위에서 돌아가며, UDP 기반으로 돌아간다.
QUIC은 첫 연결 설정에 1-RTT만 소요된다. 즉, 클라이언트가 서버에 어떤 신호를 주고 서버가 거기에 응답만 하면 바로 통신을 시작할 수 있다.
- 초기 연결 지연 감소
QUIC은 TCP를 사용하지 않기 때문에, 3-way handshake를 거치지 않아도 된다.
'CS > Network' 카테고리의 다른 글
[IP 주소 이해] (0) | 2023.01.06 |
---|---|
[네트워크 기기] (0) | 2023.01.06 |
[TCP/IP 4계층 모델] (0) | 2023.01.05 |
[네트워크 기초] (0) | 2023.01.05 |