Post

[Tech] HTTP 기초

[Tech] HTTP 기초

면접cs

HTTP란?!

  • Hyper Text Transfer Protocol
  • 즉, 종단 시스템간 데이터를 주고 받기 위한 통신 규약 또는 프로토콜을 의미한다.
  • 초기에는 뜻에서 알 수 있듯이, 하이퍼텍스트 문서를 전송하는 규약으로 동작했다.
  • 현재는 거의 모든 형태의 데이터 전송이 가능하다.
    • 예: HTML, Text, Image, 음성, 영상, JSON, XML 등…



HTTP 특징

1. 클라이언트 서버 구조

  • Request Response 구조
    • 클라이언트 : 서버에 요청을 보내고, 응답 대기
    • 서버 : 요청에 대한 결과를 만들어서 응답
  • 해당 구조는 클라이언트와 서버로 개념적으로 분리함.
  • 따라서, 각각의 개별적(특징적)인 진화가 가능함.
    • 예: 클라이언트는 UI/UX, 서버는 비즈니스 로직에 집중


2. 무상태(Stateless) 프로토콜

  • 서버가 클라이언트의 상태를 보존하지 않음.
  • 장점: 서버 확장성이 높음
  • 단점: 클라이언트가 데이터를 매번 추가적으로 전송해야함.

Stateful vs Stateless

Stateful 상태 유지
  • 클라이언트가 보내는 상태를 유지한다.

    Image

  • 만약, 서버가 달라져서 요청을 보내면?

    Image

    서버가 Context(맥락)을 모르게 됨.

⇒ 따라서, 바뀔 때 상태 정보를 다른 서버에 미리 알려줘야 함.

Stateless 무상태
  • 클라이언트가 보내는 상태를 유지하지 않는다!

    Image

  • 만약, 서버가 달라져서 요청을 보내면?

    Image

    바뀌어도 상태를 알 수 있음.

⇒ 따라서, 클라이언트 요청이 증가해도 서버를 대거 투입 가능하다.

무한한 서버 증설 가능 (트래픽 증가에 유연함)

다시, 차이점 정리

  • 클라이언트와 같은 기능을 하는 서버 A, B, C 존재.

    Image

  • Stateful 상태 유지

    Image

    • 항상 같은 서버가 유지되어야 함.
    • 서버 장애시, 다른 서버에 동일한 일을 시켜야 함.
  • Stateless 무상태

    Image

    • 어떤 서버든 호출 가능.
    • 서버 장애시, 바로 다른 서버로 구동 가능.
    • 또한, 수평확장에 유리함.
      Image

실무에서는..

  • 무상태(Stateless)는 서버 관리 측면에서 좋으나, 데이터를 많이 보내야 함.
  • 상태유지(Stateful)는 최소한 사용, 그 외는 무상태(Stateless)로 설계.

무상태(Stateless) : 단순 서비스 소개 화면

상태유지(Stateful) : 로그인 화면


3. 비연결성 (Connectionless)

  • HTTP는 기본적으로 연결을 유지하지 않음.
  • 따라서, 초 단위의 이하로 빠르게 응답함.
  • 서버 자원을 매우 효율적으로 사용 가능!

연결을 유지함

  • TCP/IP 연결이 해당

    Image

    사용하지 않아도 계속 연결되는 문제

연결을 유지하지 않음

  • HTTP 연결이 해당

    Image

    최소한의 자원만 사용할 수 있음



HTTP/1.0 vs HTTP/1.1

HTTP 역사

  • HTTP/0.9 [1991]
  • HTTP/1.0 [1996]
  • HTTP/1.1 [1997]
    가장 많이 사용하는 중요한 버전!
    • RFC2068 [1997]
    • RFC2616 [1999] : 대부분의 공식문서 내용이
    • RFC7230~7235 [2014] : 현재의 내용은 해당 버전
  • HTTP/2 [2015] → 성능 개선
  • HTTP/3 [~현재] → 성능 개선

역사에서 알 수 있듯이, HTTP1.1 버전에서 비약적인 발전을 이뤄냈다.

두 버전의 가장 큰 차이

1.01.1 버전의 큰 차이는 지속 연결이다!

  • HTTP 초기 연결

    Image

    TCP/IP 연결과 종료를 반복함 → 낭비.

  • HTTP 지속 연결 Persistent Connections

    Image

    지속 연결 → 불필요한 낭비가 없어짐.



✨ 출처

prepare_frontend_interview


This post is licensed under CC BY 4.0 by the author.