본문 바로가기

Web

[Web] Stateless와 Stateful

A컴퓨터와 B 컴퓨터가 소켓 통신을 한다고 가정하자. 이 때 A와 B는 서로의 포트를 이용해서 통신을 진행할 것이다. 근데 만약 C와 D라는 컴퓨터가 있고 이들 또한 B와 통신을 하려고 하면, 이 포트에 점점 많은 컴퓨터가 연결될 것이다. 이러면 당연히 B 컴퓨터는 많은 부하가 일어날 것이다. 보통 이런 방식은 채팅처럼 지속적으로 연결이 되어 데이터가 왔다갔다 하면 쓸만 하지만, 웹처럼 필요한 경우만 연결하면 되는 경우는 이렇게 할 필요가 없다.

 

즉 HTTP는 이런 방식보단 요청이 들어가는 경우에만 연결되고 응답을 하고나면 이 연결이 끊어지도록 하는 방식을 사용한다. 즉 요청시마다 스트림을 연결해서 Date를 주고받는 방식을 Stateless라고 하며 굉장히 서버의 부하를 줄요준다.

 

반대로 위의 채팅 프로그램같은 경우는 Stateful이라고 한다. 보안 차원에서 본다면 Stateful의 경우 세션이라는 것을 이용해서 인증을 해서 데이터를 응답해줄 준비를 한다. 하지만 Stateless의 경우는 한 번 연결하고 끊어지면, 새로운 요청이 들어간다면 그 전에 입장했던 컴퓨터라는 보장이 힘들다. (쿠키와 세션에 대한 설명은 훗날 별도의 포스트를 이용해서 설명!)

 

'Web' 카테고리의 다른 글

[Web] HTTP 1.1  (0) 2021.10.13
[Web] 웹 소켓이란  (0) 2021.10.06