[네트워크] 2-4. HTTP 2.0, 3.0, SMTP

kkado·2023년 4월 11일
0

네트워크

목록 보기
8/49

⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.


HTTP 1.0 vs HTTP 1.1

HTTP 1.0은 두 가지의 특징이자 단점이 존재한다.

  • Non-persistent : TCP 통신을 통해 데이터를 받을 때마다 연결이 끊기게 되어 매 데이터를 요청할 때마다 새롭게 TCP 연결을 수립해야 한다.
  • Non-Pipelining : HTTP 1.0은 파이프라이닝을 지원하지 않는다. 즉 한 요청을 보내고 그 요청에 대한 응답을 받아야지만 다음 요청을 보낼 수 있다.

이 두 가지 단점을 개선한 것이 HTTP 1.1이다.

HTTP 1.1은 persistent하다. 즉 응답을 보낸 후에도 TCP 세션이 유지된다.
즉 HTTP 1.1은 1.0에 비해 response time이 개선되었다.

또한, HTTP 1.1은 파이프라이닝을 제공한다. 즉 클라이언트가 하나의 요청을 보내고, 그 요청을 받기 전에 또다른 요청을 보낼 수 있다. 즉 딜레이가 줄어들고 throughput이 증가하는 효과를 볼 수 있다.


1. HTTP 2.0

그러나 HTTP 1.1에서도 여전히 해결되지 않은 문제가 있다. 사용자가 어떤 요청을 4개 연속으로 보냈다고 가정할 때, 1번째 요청에 비해서 2, 3, 4번째 요청에 응답하는 데 걸리는 시간이 매우 짧은데도 불구하고 1번째 요청을 먼저 처리하기 전에는 2, 3, 4번째 요청이 처리되지 않는 문제이다. 이렇듯 response time이 긴 요청에 대해서 뒤따라오는 후속 요청이 처리되지 못하고 딜레이가 발생하는 것을 HOL (Head of Line) Blocking 이라고 한다.

HTTP 2.0에서는 이 문제점을 오브젝트들을 프레임 단위로 쪼개어 번갈아가며 수행 함으로써 해결한다.

그림을 보면 이해가 빠를 것이다.

그림을 보다시피 1번 요청이 큰 오브젝트를 요구할 때 2, 3, 4번 요청이 처리되지 못하고 있다.

위의 그림처럼 모든 오브젝트를 일정 단위로 나누어서 처리 및 전송을 번갈아 가면서 처리하게 되면 비교적 큰 오브젝트를 요구하는 요청에 막혀 뒤의 요청이 딜레이가 많이 발생하는 일을 막을 수 있다.

이러한 작업을 '프레임' 단위로 나눈다고 하여 프레이밍 Framing 이라 한다.

또한 HTTP 1에서는 텍스트 형태로 HTTP 메시지를 보내는 방식이었으나, HTTP 2.0에서는 binary frame으로 인코딩되어 보내는 방식으로 개선되었다.


2. HTTP 3.0

HTTP 2.0은 TCP 위에서 동작하는 프로토콜이다. 따라서 TCP 자체의 고질적인 문제가 그대로 존재한다.

  • 연결 수립 및 해제를 위한 handshaking 과정이 오래 걸림
  • 패킷이 유실되거나 오류 발생 시 재전송 -> 패킷 지연 발생 -> HOL blocking

HTTP 3.0에서는 TCP를 버리고 UDP를 기반으로 하는 QUIC 라는 프로토콜을 사용한다. (QUIC는 UDP 위에서 동작한다)

앞서 UDP는 flow control과 congestion control을 지원하지 않고 속도에만 집중한 프로토콜이라고 알아보았는데, 이를 개선한 QUIC 이라는 프로토콜을 이용함으로써 보안 및 제어 측면에서 UDP가 갖고 있었던 문제점을 해결할 수 있다.

보다 자세한 설명은 이 글 참조! (출처: '인파'님 블로그)


3. SMTP

SMTP(Simple Mail Transfer Protocol)는 전자 우편을 주고받을 때 사용되는 프로토콜이다.

이메일을 주고받을 때는 3가지 구성요소가 있다.

  • Mail server (메시지를 올바른 사람에게 전달하고, 저장해주는 서버)
  • User agent (메시지를 보내고, 읽고, 전달하는 등의 작업을 수행하는 유저)
  • SMTP (메일 서버 간에 통신하는 규칙)

그리고 메일 서버에는 mailboxmessage queue 가 있다.

  • mailbox : 특정 사용자마다 존재하며, 그 사용자 앞으로 온 메일을 보관한다.
  • message queue : 앞으로 처리될 (보내질) 메시지들이 큐에 저장되어 있다.

메일은 다음의 절차로 보내진다.

  • 유저 A가 user agent를 통해 B의 이메일로 메일을 보낸다.
  • A의 user agent가 메일 서버로 메일을 보낸다. 이 메일은 메시지 큐에 들어가서 처리를 기다린다.
  • A 쪽의 메일 서버가 B 쪽의 메일 서버와 TCP 연결을 체결한다.
  • B 쪽의 메일 서버에게 TCP 연결을 통해 메일이 전달된다.
  • B의 mailbox에 메일이 저장된다.
  • B의 user agent가 그 메일을 확인할 수 있게 해 준다.

메일의 전달 및 저장에는 SMTP가 사용되고, 저장된 메일을 읽는 것은 HTTP 또는 IMAP(Internet Message Access Protocol, 메일 서버에서 메일을 읽어오는 프로토콜)이 사용된다.


profile
베이비 게임 개발자

0개의 댓글