본문 바로가기

Dev/HTTP

HTTP의 성격 Connectionless

HTTP는 연결을 유지하지 않는 성질을 기본적으로 가지고 있다.

  • 일반적으로 초 단위 이하의 빠른 속도로 응답
  • 수천명이 서비스를 사용해도 실제 동시에 처리하는 요청은 수십개 이하로 매우 작다.
  • 서버 입장에서 봤을 떄는 자원을 효율적으로 사용한다는 장점이 있다.

아래의 그림에서 연결을 유지하는 경우와 유지하지 않는 경우를 알아보자 (참조)

HTTP는 연결을 유지하지 않는다!!

연결을 유지하는 모델

연결을 유지하지 않는 HTTP는  서버에게 필요한 요청을 하고 서버측에서는 최소한의 자원만 유지한채 응답을 내려주고

연결을 끊는다.

연결을 유지하지 않는 모델(HTTP)

 


비연결성의 한계

  • TCP/IP 연결을 새로 맺어야 하기 떄문에 3 way handshake 시간이 추가로 든다. ex) Syn, Ack 의 연결
  • 요청할 때 HTML 뿐 아니라 자바스크립트, css 등 추가 이미지를 같이 다운 받는다. (즉, 추가적인 부분이 필요할 경우마다 연결을 새로 해야함)
  • 지금은 HTTP 지속 연결로 문제를 해결한다.
  • HTTP/2, HTTP/3에서 더 많이 최적화

HTTP 지속 연결(Persistent Connections)

일정 메커니즘을 통해서 시간을 정해놓고 연결을 끊게 설정을 할 수 있지만 지속연결을 하게되면, HTML을 응답하거나, 자바스크립트 등의 추가 자원요청 등이 들어올 때 매번 연결을 할 필요없이 일정시간 연결을 유지하게 한다.

HTTP 지속 연결

 

HTTP의 성격에서는 항상 Stateless 상태를 기억하자!

  • 서버 개발자들이 가장 어려워하는 업무는 같은 시간대에 발생하는 대용량 트래픽 처리이다. ex) 명절 KTX 예약, 저녁 6시 1000명 선착순 치킨 할인 등

HTTP를 얼마나 더 Stateless 하게 설계하느냐가 정말 중요하다는 것을 말해준다!!!

'Dev > HTTP' 카테고리의 다른 글

HTTP 메서드 = HTTP API  (0) 2021.05.23
HTTP의 메시지  (0) 2021.05.23
HTTP의 성질 Stateless  (0) 2021.05.13
HTTP 시작  (0) 2021.05.11
UR패밀리 URI, URL, URN 과 웹브라우저 흐름  (0) 2021.05.06