⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.
HTTP 1.0은 두 가지의 특징이자 단점이 존재한다.
이 두 가지 단점을 개선한 것이 HTTP 1.1이다.
HTTP 1.1은 persistent하다. 즉 응답을 보낸 후에도 TCP 세션이 유지된다.
즉 HTTP 1.1은 1.0에 비해 response time이 개선되었다.
또한, HTTP 1.1은 파이프라이닝을 제공한다. 즉 클라이언트가 하나의 요청을 보내고, 그 요청을 받기 전에 또다른 요청을 보낼 수 있다. 즉 딜레이가 줄어들고 throughput이 증가하는 효과를 볼 수 있다.
그러나 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으로 인코딩되어 보내는 방식으로 개선되었다.
HTTP 2.0은 TCP 위에서 동작하는 프로토콜이다. 따라서 TCP 자체의 고질적인 문제가 그대로 존재한다.
HTTP 3.0에서는 TCP를 버리고 UDP를 기반으로 하는 QUIC
라는 프로토콜을 사용한다. (QUIC는 UDP 위에서 동작한다)
앞서 UDP는 flow control과 congestion control을 지원하지 않고 속도에만 집중한 프로토콜이라고 알아보았는데, 이를 개선한 QUIC
이라는 프로토콜을 이용함으로써 보안 및 제어 측면에서 UDP가 갖고 있었던 문제점을 해결할 수 있다.
보다 자세한 설명은 이 글 참조! (출처: '인파'님 블로그)
SMTP(Simple Mail Transfer Protocol)는 전자 우편을 주고받을 때 사용되는 프로토콜이다.
이메일을 주고받을 때는 3가지 구성요소가 있다.
그리고 메일 서버에는 mailbox
와 message queue
가 있다.
메일은 다음의 절차로 보내진다.
메일의 전달 및 저장에는 SMTP
가 사용되고, 저장된 메일을 읽는 것은 HTTP
또는 IMAP
(Internet Message Access Protocol, 메일 서버에서 메일을 읽어오는 프로토콜)이 사용된다.