CS 과제 정리

[CS] HTTP의 기본 특징: 무상태성(Stateless)과 연결 비의존성(Connectionless)

thisnorm 2025. 2. 2. 17:19

📌HTTP의 특징인 Stateless 와 Connectionless

Stateless (무상태성)

  • 정의: HTTP는 무상태 프로토콜로, 각 요청 간에 상태 정보를 유지하지 않는다. 즉, 클라이언트가 서버에 요청을 보낼 때, 이전 요청의 정보가 서버에 저장되지 않는다.
  • 장점: 이 특성 덕분에 서버는 각 요청을 독립적으로 처리할 수 있어, 서버의 복잡성을 줄이고 확장성을 높인다. 그러나 이는 사용자가 특정 페이지에서 일관된 상호작용을 하려 할 때 문제를 일으킬 수 있다. 예를 들어, 전자상거래 사이트에서 장바구니에 담긴 상품을 유지하려면 추가적인 메커니즘이 필요하다.
  • 상태 유지 방법: HTTP 쿠키와 같은 기술을 사용하여 세션을 생성하고 상태 정보를 유지할 수 있다. 이를 통해 사용자는 여러 요청 간에 동일한 상태를 공유할 수 있다.

Stateful (상태 유지)

  • Stateless와 반대되는 표현은 Stateful인데, 서버가 이전 요청에서의 클라이언트의 상태를 보존한다는 것이다. 만약 모든 요청에 대해서 상태를 유지하게 된다면, 클라이언트 요청에 대한 상태를 해당 요청을 받은 서버가 기억하고 있는 것으로 항상 같은 서버가 유지되어야 할 것이다. 만약 서버 1에서 요청에 대해 장애가 발생한다면 유지되던 정보가 없어져 버리므로 처음부터 다시 요청을 해야 한다.

 

 

 

Connectionless (연결 비의존성)

  • 정의: HTTP는 연결 비의존적인 프로토콜로, 클라이언트와 서버 간의 요청/응답 쌍을 처리하기 위해 항상 새로운 TCP 연결을 설정할 필요는 없다. HTTP는 신뢰할 수 있는 전송 프로토콜(TCP)을 사용하지만, 연결을 유지하는 것은 필수가 아니다.
  • 장점: 이 특성은 네트워크 자원을 효율적으로 사용할 수 있게 하며, 클라이언트가 여러 요청을 보낼 때마다 새로운 연결을 설정하는 대신 기존 연결을 재사용할 수 있다. HTTP/1.1에서는 지속적인 연결(persistent connections)과 파이프라이닝(pipelining) 기능이 도입되어 성능을 개선하였다.
  • HTTP/2의 발전: HTTP/2에서는 단일 연결을 통해 여러 요청을 동시에 처리할 수 있는 멀티플렉싱 기능이 추가되어, 연결 비의존성의 효율성을 더욱 높였다.

 

 

결론

HTTP의 무상태성과 연결 비의존성은 웹의 확장성과 효율성을 높이는 중요한 특징이다. 이러한 특성 덕분에 HTTP는 다양한 웹 애플리케이션에서 유연하게 사용될 수 있으며, 사용자 경험을 개선하기 위한 추가적인 기술(예: 쿠키, 세션 관리)이 필요하다.