Network

About HTTP #1

rohyun 2021. 11. 4. 00:08

HTTP 에 대하여 1편


HTTP 의 역사

  • HTTP/0.9 : GET 메소드만 지원, 헤더 X
  • HTTP/1.0 : 메소드, 헤더 추가
  • HTTP/1.1 : 가장 많이 사용, 우리에게 가장 중요한 버전
  • HTTP/2.0 : 성능 개선
  • HTTP/3.0 : TCP 대신 UDP 를 사용하여 성능을 개선

HTTP 기반 프로토콜

  • TCP : HTTP/1.1, HTTP/2 ( 3 - way handshake, 무거운 패킷으로 인해 속도가 빠른 메커니즘이 아니다. )
  • UDP : HTTP/3

무상태 프로토콜 ( Stateless )

  • 서버가 클라이언트의 상태를 보존하지 않는다.
  • 장점 : 서버의 확장성이 높다 ( 스케일 아웃 )
  • 단점 : 클라이언트가 추가 데이터를 전송해야 한다.

상태 유지 ( Stateful )

ful1
fu2

  • 클라이언트의 요청에 대한 상태를 보관하기 때문에 매번 같은 서버와 통신해야 한다. 하지만 중간에 서버가 장애가 나면 클라이언트는 요청을 처음부터 다시 보내야 한다.

무상태 ( Stateless )

less1
less2

  • 클라이언트 요청에 대한 상태를 보관하지 않는다. 따라서 서버가 장애가 나도 다른 서버와 통신할 수 있다. 따라서, 수평 확장 ( scale out ) 이 용이하다.

    scaleout

Stateless 의 실무 한계

  • 로그인을 한 상태의 경우 상태 유지 방식을 사용해야 한다. 일반적으로 브라우저 쿠키과 서버 세션 등을 사용해 상태를 유지하고, 상태 유지는 최소한만 사용한다.

비 연결성 ( Connectionless )

  • 서버와 클라이언트가 연결을 유지하지 않아 서버 연결에 대한 자원을 최소한으로 사용한다.
  • HTTP 는 기본이 연결을 유지하지 않는 모델이다.
  • 1시간 동안 수 천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수 십개 이하로 매우 작다. ( ex) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다. )
  • 따라서, 서버의 자원을 매우 효율적으로 사용할 수 있다.

한계와 극복

  • 연결할 때 마다 TCP/IP 연결을 새로 맺어야 한다. 따라서 3 - way handshake 를 맺는 시간이 추가된다.
  • 웹 브라우저로 사이트를 요헝하면 HTML 뿐만 아니라 js, css, 추가 이미지 등 수 많은 자원이 함께 다운로드 된다.
  • 지금은 HTTP Persistent Connections 로 문제를 해결했다.
  • HTTP/2, HTTP/3 에서 더 많은 최적화를 이루었다.

HTTP 메세지

httpmessage

REFERENCES

김영한님 모든 개발자를 위한 HTTP 웹 기본 지식

'Network' 카테고리의 다른 글

About HTTP #3  (0) 2021.11.04
About HTTP #2  (0) 2021.11.04