베하! 안녕하세요 ~!
BTC_수신자표시제한 입니다
오늘은 클라이언트와 서버 간의 네트워크 통신 동작 방식인 Stateful과 Stateless에 대해 알아보겠습니다.
세션 상태 및 세션 정보란?
stateful과 stateless에 대해 알아보기 전에 먼저 세션 상태와 세션 정보를 알아보도록 하겠습니다.
세션 상태
- 사용자가 웹 애플리케이션과 상호 작용하는 동안 서버 측에 저장되는 데이터를 의미
- 로그인 자격 증명, 장바구니 또는 기본 설정과 같은 사용자별 데이터가 포함
세션 정보
- 세션 상태를 유지하기 위해 클라이언트와 서버 간에 전송되는 데이터
- 세션 식별자, 타임스탬프 및 서버가 들어오는 요청을 적절한 세션 상태와 연결할 수 있는 기타 메타데이터가 포함
전반적으로 세션 상태와 세션 정보는 함께 작동하여 사용자가 웹 애플리케이션과 상호 작용하는 동안 클라이언트와 서버 간의 지속적인 연결을 가능하게 합니다.
1. Stateful
1-1. 개념
- 세션이 유지되는 동안 서버가 클라이언트의 상태를 보존한다는 의미
- 즉, 클라이언트와 서버 간에 데이터를 주고받는 과정에서 서버는 이전 단계에서 클라이언트가 제공한 값을 저장.
- 서버와 클라이언트 간의 세션 상태를 기반으로 클라이언트에 응답을 보내기 때문에 세션 상태를 포함한 클라이언트와의 세션 정보가 서버에 저장됨.
- 예를 들어 사용자가 특정 웹사이트에 한 번 로그인하면 서버가 클라이언트의 상태를 유지하기 때문에, 사용자가 여러 페이지를 이동하더라도 로그인 상태가 유지되는 것.
1-2. 장점
- 서버가 클라이언트의 세션 정보를 저장하므로, 갑자기 통신이 중단되더라도 중단된 곳부터 다시 시작할 수 있음.
1-3. 단점
- Scale Out 시, 클라이언트의 세션 정보를 새로운 서버에 옮겨주는 등의 부수적인 관리가 요구되므로, 확장성이 좋지 않음
- 서버 장애가 나면 해당 서버에 가지고 있던 유저의 상태 정보가 소실됨
1-4. Stateful한 프로토콜
- TCP 프로토콜
- TCP는 클라이언트와 서버간 3-way handshaking(연결 확정, 데이터 전송, 연결 종결)로 이루어져 있음.
- 클라이언트와 서버 간 연결 확정 후, 세션상태가 ESTABLISHED가 됨으로써, 데이터를 주고받음
- 세션 '상태'에 따라 Server의 응답이 달라지는 Stateful 프로토콜
2. Stateless
2-1. 개념
- 서버가 클라이언트의 상태를 유지하지 않는 클라이언트-서버 관계
- 서버는 클라이언트로부터 받은 요청에 대한 응답만 보냄 → 각 통신은 이전/이후의 통신과 독립적
- 세션 정보를 기록해야 하는 경우 클라이언트가 쿠키와 같은 클라이언트 측의 캐시 형태로 정보를 저장해야 함.
- 예를 들어, 사용자가 검색창에 키워드를 검색하면 그에 대한 검색 결과를 보여줌으로써 요청에 대해 응답하고 종료되는 것.
2-2. 장점
- 우수한 서버 확장성 및 장애대응 용이
- 서버가 클라이언트 상태 정보를 유지하지 않기 때문에 어느 서버에서나 호출할 수 있어 스케일아웃이나 수평적 확장에 유리
- 많은 양의 트래픽을 처리하는 데에 있어 유리함.
2-3. 단점
- 서버가 클라이언트 상태 정보를 유지 관리하지 않기 때문에, 각 클라이언트 요청은 매번 필요한 정보를 제공해야 하고 이에 상대적으로 Stateful 보다 많은 데이터가 소모됨.
2-4. Stateless 한 프로토콜
- UDP 프로토콜
- UDP는 서버가 클라이언트의 세션 상태 및 세션 정보 없이, 요청에 대한 응답만을 수행하는 네트워크 프로토콜.
- 서버는 클라이언트와의 세션 정보를 저장하는 과정을 거치지 않아, 클라이언트가 송신한 데이터가 수신되었는지 확인하지도 않으며 클라이언트와의 세션 상태에 관계없이 요청에 대한 응답만을 수행하게 됨.
- HTTP
- HTTP는 연결을 유지하는 않는 모델이 기본(Connectionless).
여기까지 Stateful과 Stateless에 대해 알아보았는데요, 도움이 되셨으면 좋겠습니다.😊
다음에 만나요 👋👋
'Network' 카테고리의 다른 글
TCP/IP 5계층 (0) | 2023.06.12 |
---|---|
MRTG란? (0) | 2023.05.15 |
SMTP와 SMTP서버 (0) | 2022.12.23 |
[보안] PKI(Public Key Infrastructure) 시스템을 활용한 TLS 통신(HTTPS, 공동인증서) (0) | 2022.12.21 |
web(쿠키&세션) (0) | 2022.12.19 |
댓글