HTTP 1.0 ~ 3.0, E-mail

이태곤·2023년 10월 11일
0

컴퓨터망

목록 보기
6/32
post-thumbnail

1. HTTP 1.0 & HTTP 1.1

  • HTTP 1.0

    • Non-persistent: 데이터를 주고받을 때마다 TCP 연결을 새로 수립해야 한다.
    • Non-pipelining: 하나의 요청을 보내고 해당 요청에 대한 응답을 받아야지만 다음 요청을 진행할 수 있다.
  • HTTP 1.1

    • Persistent: 데이터를 주고 받는동안 TCP 세션이 유지된다.
      → 기존 연결을 재사용하여 오버헤드를 줄이고 response time 단축
    • Pipelining : 응답을 기다리지 않고 여러 요청을 병렬로 보낼 수 있다.
      → Throughput↑
  • 한계

    1. HOL 발생: 브라우저에서 허용되는 병렬 요청 수가 모두 사용되어, 후속 요청이 이전 요청이 완료될 때까지 대기해야 하는 상황이 발생할 수 있다.
      • 같은 큐에 있는 패킷이 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상
      • 사용자가 여러 요청을 연속으로 보낸 경우, 브라우저에서 병렬로 처리 가능한 요청 수가 제한되어 있다.
      • 첫 번째 요청이 완료되기 전에 다른 요청들은 대기해야 한다.
      • 나머지 요청들은 비교적 빠르게 응답이 가능한 상태에도 불구하고 첫 번째 요청의 응답을 기다려야 하며, 이로 인해 웹 페이지 로딩 성능이 저하될 수 있다.

    2. HTTP 1.0의 경우 요청마다 connection 해야하므로 RTT 증가
    3. 무거운 헤더: 사용자가 웹 페이지를 방문할 때 많은 HTTP 요청이 발생하며, 이로 인해 중복된 헤더 값과 각 도메인에 설정된 쿠키 정보가 매 요청마다 헤더에 다시 전송된다.
      이로 인해 불필요한 중복 데이터 값이 전송되며, 경우에 따라 데이터 양보다 헤더의 크기가 더 큰 경우가 발생할 수 있다.
      → 웹 페이지에서 여러 이미지, 스타일시트, 스크립트 파일 등을 로딩하는 경우, 각 요청마다 중복된 헤더 데이터(Accept-Encoding, Cookie)가 함께 전송된다.

2. HTTP 2.0

  • HTTP 1.0 / HTTP 1.1 버전에서 해결되지 못한 HOL(Head of Line Blocking) 문제를 해결했다.
  • 해결방법

    1. 오브젝트들을 프레임 단위로 쪼개어(Framing) 번갈아가며 수행 함으로써 해결

    2. Binary 인코딩: HTTP/2는 텍스트 형태로 전달되는 HTTP 메시지가 아닌 binary 형태로 인코딩되어 전송된다.
      이로써 송수신 데이터량이 감소하고 효율적으로 통신이 가능해졌다.
      → 10바이트만 있으면 1024개의 정보를 표현할 수 있다.
      → 헤더도 이진 표현을 통해 압축

    3. 우선순위 지정: HTTP/2는 요청하는 객체의 우선순위를 지정할 수 있다.

    4. Push 기능: HTTP/2에서는 서버가 클라이언트의 요청 없이 연관된 객체를 함께 클라이언트에게 전송할 수 있는 기능을 제공한다.
      → Pull방식에서 Push 방식으로 변경
      → 클라이언트가 HTML 문서를 받고 나서 필요한 리소스를 다시 요청하는 번거로움을 줄여주며, 웹 페이지 로딩을 빠르게 만드는 기술이다.
  • 한계

    1. 여전히 TCP 연결을 사용하므로, 연결 수립 및 해제를 위한 handshaking 과정에서 Response time이 증가 할 수 있다.
    2. TCP는 신뢰성 있는 프로토콜로 알려져 있지만, 패킷이 유실되거나 오류가 발생할 경우 재전송 기법을 사용한다.
      이로 인해 패킷 지연이 발생할 수 있으며, 이러한 지연은 HOL을 유발할 수 있다.

3. HTTP 3.0

  • HTTP 3.0에서는 UDP 위에서 동작하는 QUIC 프로토콜을 사용한다.
    1. 흐름제어 및 혼잡제어: UDP는 흐름제어와 혼잡제어를 지원하지 않아 데이터 전송에 제한이 없으며 이로 인해 네트워크 혼잡 상황에서 데이터 손실이 발생할 수 있다.
      QUIC는 흐름제어 및 혼잡제어 기능을 통해 데이터의 안정적인 전송을 보장하며 네트워크 혼잡을 최소화한다.
    2. 보안 및 제어 개선: QUIC은 보안 측면에서도 개선되어 있으며, TLS(Transport Layer Security) 프로토콜과 함께 사용된다.
    3. Zero Round-Trip Time (0-RTT): 이전 연결에서 이미 확인한 정보를 재사용하여 연결을 빠르게 설정할 수 있다.

4. SMTP

  • 전자 우편을 주고받을 때 사용되는 프로토콜로써, 신뢰성 있는 송수신을 위해 TCP를 사용하며 port 25를 사용한다.

  • 3가지 구성요소

    1. User agents: 사용자가 이메일을 작성하고 받는 인터페이스 역할
      → Microsoft Outlook, Apple Mail
    2. Mail servers: 전자 우편 메시지를 저장, 라우팅, 전송하는 역할
      • mailbox: 메일 서버에서 각 사용자별로 관리되는 메일함
      • message queue: 발송되어야 하는 메시지들을 저장하고 관리하는 대기열
    3. SMTP(Simple Mail Transfer Protocol): 메일 서버 간에 전자 우편을 송수신하기 위한 표준 프로토콜
  • 메일 전송 과정
    1. 유저 A가 user agent를 통해 메일을 작성한다.
    2. A의 user agent가 메일 서버로 메일을 전송한다.
      → message queue로 들어가게 된다.
    3. A쪽 메일서버와 B쪽 메일서버와 TCP Handshaking을 통해 연결을 성립하고 메일이 전달 된다.
      → Push 방식
    4. B의 mailbox에 메일이 저장된다.
    5. B는 user agent트를 사용하여 B의 mailbox에 접근하여 수신한 메일을 확인할 수 있다.
      → 메일의 전송에는 SMTP가 사용되며, 저장된 메일을 읽는 것은 IMAP을 주로 사용

1개의 댓글

comment-user-thumbnail
2023년 10월 21일

정말 유용합니다 덕분에 학습하는데 많이 도움이 되었습니다

답글 달기