반응형
프로토콜 Protocol
- 컴퓨터 내부 혹은 컴퓨터 간에 데이터를 교환하는 방식을 정의하는 규칙 체계.
상태 유지 Stateful
- 서버가 클라이언트의 상태를 보존/저장하고 있는 것을 뜻함.
- 예를 들어, 사이트를 나갔다 와도 로그인 정보가 남아있음.
- 보통 브라우저의 Cookie에 저장되거나, 서버의 Session 메모리에 저장됨.
Stateful Protocol - TCP 통신
- 클라이언트가 서버에 SYN (Synchronize - TCP 패킷)을 전송하여 요청.
- 서버에서 SYN을 확인하고 SYN/ACK (Acknowledgement)를 전송하여 요청 수락.
- 클라이언트가 서버에 ACK를 전송하여 수락 확인.
Stateful Protocol의 문제점
- 서버 메모리 과부화 가능성
- 서버와 클라이언트 간의 종속성
- 새로운 서버나 다른 서버에 이전 서버의 상태값이 없기에 서버 운영에 유연성이 떨어진다.
무상태 Stateless
- 서버가 클라이언트의 상태를 보존/저장하지 않는 것을 뜻함.
- 클라이언트에서 통신에 필요한 상태 정보를 가지고 있다가 서버와 통신할때 데이터를 실어 보내는 것이 무상태 구조.
- 서버에 요청에 대한 작업만 수행.
- 서버에 부하가 현저히 줄어듬.
Stateless Protocol - UDP, HTTP 통신
- 클라이언트가 Request를 전송하면 서버에서 Response만 전달하게 된다.
- 따로 Response에 대한 수신 확인 절차가 없다.
Stateless Protocol의 문제점
- 클라이언트의 요청에 Stateful 보다 더 많은 데이터가 소모됨.
Stateless & Token
- Stateless한 상태에서 로그인 정보를 저장하고 싶을 때 Token 인증 방식을 같이 사용하면 된다.
- 처음 로그인 할 때 서버로부터 토큰을 발급 받은 뒤 클라이언트가 가지고 있다가, 서버와 다시 통신 할 때 데이터 통신 패킷을 토큰과 함께 보내면 서버에서 발급 내역을 확인하여 Response에 로그인 정보를 내주게 된다.
반응형
'기본 프로그래밍 지식' 카테고리의 다른 글
[기본 지식] 4. 의존성 주입(DI, Dependency Injection) (0) | 2023.09.22 |
---|---|
[기본 지식] 3. 디자인 패턴 - 싱글톤 패턴(Singleton Pattern) (0) | 2023.09.21 |
[기본 지식] 퀴즈 1 - 프로그래밍 기초, 인코딩, Java (0) | 2023.08.03 |
[기본 지식] 2. HTTP 이해 (0) | 2023.08.02 |