본문 바로가기

WEB

[WEB] HTTP의 Connectionless

728x90
반응형

 

비연결성(Connectionless)

  • HTTP는 기본적으로 연결을 유지하지 않는 모델이다. 즉 서버와 클라이언트의 connection을 지속하지 않는다.
  • 1시간 동안 수천 명 이상이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수 십 개 이하로 적다.
  • 이러한 비연결성의 특징으로 인해 서버 자원을 효율적으로 사용할 수 있다.

 

 

Stateless와 Connectionless의 차이

  • Stateless(무상태성): 필요한 상태에 대한 정보를 클라이언트가 가지고 오기 때문에 클라이언트의 요청에 어느 서버가 응답해도 상관 없음. 따라서 클라이언트의 요청이 대폭 증가하면 서버를 증설해 해결 가능.
  • Connectionless(비연결성):  클라이언트가 서버에 요청을 하고 응답을 받으면 바로 TCP/IP 연결을 끊어 연결을 유지하지 않음으로써 서버의 자원을 효율적으로 관리하고 수많은 클라이언트의 요청에 대응할 수 있게 함.

즉, Stateless은 클라이언트와 서버 간에 상태 정보를 들고 있지 않아 클라이언트가 상태 정보를 일일이 HTTP에 실어 요청해야 하는 것을 말하고, Connectionless은 클라이언트와 서버 간에 네트워크 연결이 끊어져 단절된다고 이해할 수 있다.

 

 

 


 

 

 

연결을 유지하는 모델

 

  • 연결을 유지한다면 클라이언트와 서버 간의 연결은 서로의 네트워킹 요청이 없더라도 계속해서 유지된다.
  • 자원이 계속해서 사용된다(이러한 점으로 인해 HTTP는 기본적으로 연결을 유지하지 않는 모델이다).

 

 


 

 

연결을 유지하지 않는 모델

 

  • 연결을 유지하지 않는다면 서버의 자원을 효율적으로 사용할 수 있다.
  • 다만 클라이언트가 연결을 계속 끊는다는 것은 TCP/IP 연결을 매번 새롭게 맺어야 한다는 것을 뜻한다.
  • 즉 TCP 3 way handshake를 매번 해야 하고 이는 시간이 걸린다.
  • 이러한 문제는 HTTP 지속 연결(Persistent Connections)로 문제 해결하고 있다.
  • HTTP/2.0, HTTP/3.0에서 더 많은 최적화가 이루어졌다.

 

 

 

 

비연결성의 한계 - 단기 커넥션

  • HTTP 초기 - 연결, 종료 낭비
  • 웹 브라우저로 사이트를 요청하면 HTML뿐만 아니라 js, css, 추가 이미지 등 수많은 자원이 함께 다운로드되는데 새로 연결을 맺을 때마다 TCP Handshake가 발생한다는 문제점이 있음.
  • 그래서 HTTP 초기에는 모든 자료에 대해서 비연결성으로 각각의 자원에 대해 연결/응답/종료를 반복하다 보니 대략적으로 1초 가량 소모됨.

 

 

 

비연결성의 극복 - HTTP 지속 연결

 

  • 클라이언트는 서버와 소켓 연결을 한 다음 필요한 자원을 요청/응답으로 다운로드 받는다.
  • 소켓 연결을 일정 시간 동안 더 유지함으로써 필요한 자원들을 모두 다운 받을 때까지 연결이 종료되지 않고 요청/응답이 반복된 뒤 종료.

 

 

 

 

 

 

 

728x90
반응형

'WEB' 카테고리의 다른 글

[WEB] HTTP 메시지  (1) 2024.10.23
[WEB] HTTP 상태 코드  (3) 2024.10.17
[WEB] HTTP의 Stateful과 Stateless  (0) 2024.10.11
[WEB] 웹 접근성(Web Accessibility)  (0) 2024.10.07
[WEB] 웹 표준(Web Standards)  (1) 2024.10.04