섭섭한 개발일지

인터넷 프로토콜 - Stateful, Stateless 본문

CS/Web

인터넷 프로토콜 - Stateful, Stateless

Seop 2024. 5. 1. 17:01

Stateful과 Stateless는 웹에서 클라이언트와 서버간 통신의 상태유지와 무상태를 말한다.

 

 

Stateful (상태유지)

상태유지는 서버가 클라이언트의 상태를 유지한다는 것이다.

클라이언트와 서버가 데이터를 주고 받으며 단계별 과정을 거치는데 서버에서 클라이언트가 이전 단계에서 전달한 정보를 보존하는 것이다.

 

예로 한 웹사이트에서 사용자가 로그인을 하면 로그인 상태는 특정 상황이 오지 않는한 클라이언트가 웹페이지를 사용할 때 상태 유지가 된다.

이는 서버가 클라이언트의 로그인 정보를 가지고 있기 때문에 가능한 것이다.

이러한 정보들을 브라우저의 쿠키에 저장이 되거나 서버의 세션 메모리에 저장이 되어 상태 유지를 할 수 있도록 한다.

 

 

Stateful Protocol

Stateful 구조를 따르는 대표적인 프로토콜은 TCP의 3-way-handshake이다.

 

 

Stateful 문제점

상태를 유지함에 있어 문제점은 서버에서 클라이언트의 정보를 저장한다는 것이다.

서버 A, B, C가 있고 mike라는 클라이언트가 서버 A를 통해 로그인 정보를 유지하고 있다고 할 때

만약 서버 A의 문제로 더이상 서버를 사용할 수 없다고 하면 mike는 다른 서버로 연결이 되어 새롭게 로그인을 해야하는 문제가 있다.

 

 

 

 

Stateless (무상태)

무상태는 Stateful과 반대로 클라이언트의 정보를 서버가 보존하지 않는 것을 말한다.

이때 서버는 클라이언트의 요청을 단순히 응답해주는 역할을 하며 상태관리는 전적으로 클라이언트가 책임진다.

즉 클라이언트는 서버와 통신할 때 서버에서 필요로 하는 정보를 모두 담아 요청을 한다는 것이다.

 

무상태의 경우 특정 서버에 의존하지 않으므로 이벤트와 같은 행사를 할 때 대용량 트래픽이 들어오는걸 예상하여 서버 확장을 손쉽게 할 수 있는 장점이 있다.

 

 

Stateless Protocol

대표적인 Stateless protocol은 UDP와 HTTP가 있다.

 

 

Stateless 문제점

무상태의 문제점은 Stateful보다 상대적으로 더 많은 데이터를 소모한다는 것이다.

위에서 언급을 하였는데 무상태는 서버에서 필요로 하는 모든 정보를 담아서 보내줘야한다.

 

무상태로 설계하는 것이 서버 확장과 같이 대용량 트래픽을 처리하기 위한 상황에서 유리하지만

모든 것을 무상태로 할 수 없으므로 상태유지는 최소한으로 사용하고 무상태로 사용하는 것이 가장 베스트하다.

 

 

참고문헌
  1. 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한
  2. 아주 쉽게 이해하는 Stateful / Stateless 차이 - Inpa Dev

'CS > Web' 카테고리의 다른 글

OSI 7계층 - 전송 계층  (0) 2024.05.02
OSI 7계층 - 네트워크 계층  (0) 2024.04.30
OSI 7계층 - 데이터링크 계층  (0) 2024.04.29
OSI 7계층 기능 - 물리계층  (0) 2024.04.28
인터넷 네트워크 - 클라이언트 서버 구조  (0) 2024.04.26
Comments