HTTP/HTTP 기본

비 연결성 (connectionless)

개발하는묭이 2021. 12. 23. 22:16

TCP/IP 프로토콜

  • 연결을 유지하는 모델이다
  • 클라이언트1 과 서버의 요청 응답이 끝나고 다른 클라이언트가 서버에게 요청을 보내더라도 
  • 클라이언트1과 서버의 연결은 끊어지지 않은 상태이다

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

  • 자원을 서버와 클라이언트가 요청과 응답을 받을 동안에만 유지를 하고 아닐때는 끊어버린다
  • 최소한의 자원으로 서버를 유지할 수 있게 된다
  • 즉 , 클라이언트1과 서버의 요청과 응답이 끊어지면 TCT/IP 프로토콜의 연결이 종료된다

HTTP

  • 기본적으로 연결을 유지하지 않는 모델이다
  • 일반적으로 초 단위 이하의 빠른 속도로 응답을 보낸다
  • 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 
  • 매우 적다

비연결성을 사용했을 떄 장점

  • 서버 자원을 매우 효율적으로 사용할 수 있다

비연결성을 사용했을 때 단점

  • TCP/IP 연결을 새로 맺어야 한다
  • 즉 , 3 way handshake 시간이 추가된다
  • 웹브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트 , css , 추가 이미지 등 수많은
  • 자원이 함께 다운로드 된다
  • 자원을 받을 때마다 클라이언트와 서버를 연결하고 자원이 해제 되었을 때 연결을 끊는 것은 
  • 매우 비효율 적이다
  • 지금은 HTTP 지속 연결 (Persistent Connection)로 문제를 해결한다
  • HTTP2 와 HTTP3에서는 더 초기화 되었다

현재

  • HTTP 지속 연결 (Persistent Connections)
  • 요청을 보내고 응답을 받는다
  • 이 사이에서 연결을 몇십초 동안 서버와 클라이언트의 연결 상태를 유지한다
  • 즉 , 서버와 클라이언트가 요청을 보내고 응답을 받는 동안에 연결 되어 있는 상태를 유지한다

 

결론 

  • stateless 방식으로 설계 하는 것이 중요하다