Stateful(서버에 정보O)
- 서버에서 상태 정보를 저장하는 형태, 세션 상태에 기반하여 서버의 응답이 달라진다.
Stateless(무상태, 서버에 정보X)
- 서버에서 상태 정보를 저장하지 않는 형태, 서버의 응답이 클라이언트와의 세션 상태와 독립적이다.
한 가지의 예로 TCP(Stateful)와 UDP(Stateless)의 동작 방식의 차이가 있다.
TCP(Transmission Control Protocol)
- TCP에서 클라이언트와 서버는 데이터를 주고 받기 위해서 다음과 같은 과정을 거친다.
-
연결 설정 (3-Way Handshake, Establishing connection)
-
데이터 전송(Trasmitting data)
-
연결 종료(4-Way Handshake, Terminating connection)
TCP Handshake 과정을 통해서 데이터를 전송하는데 이때 서버에서 세션 정보를 저장하면서 Stateful한 특징을 지닌다.
- 정확한 데이터를 전송하기 위해서는 TCP를 이용해야 한다. 로그인하는데 비밀번호가 '1234'일 때 문제가 생겨 '12*4'가 전송되면 안된다는 것이다.
UDP(User Datagram Protocol)
- 클라이언트와 서버와의 동작에서 서버가 상태 정보를 저장하지 않는 형태이다. Server의 응답이 클라이언트와의 세션 상태와 독립적이다.
- 예를 들어 유튜브나 트위치, 아프리카 같은 스트리밍 서비스가 UDP에 속한다. 데이터가 잘 전달 됐는지 보다 속도가 더 중요하다. 화면이 조금씩 끊기는 것 보다도 빨리 빨리 영상이 사용자에게 전달이 되어야 한다는 것이다.
- 즉, UDP는 TCP와 달리 Client의 세션 상태와 관계 없이 요청에 대한 응답만을 수행한다.