본문 바로가기
카테고리 없음

[Application Layer] HTTP stateless, Cookie

by 바코94 2020. 5. 10.

 

stateful: client가 요청한 base html page 뿐 아니라 추가 object도 전부 서버가 알아서 보내주는 방식이다. state를 계속 가지고 있으면서 클라인트별 상태관리를 다 하는 방식이다. 이 방식을 사용하면 server의 부하가 커진다. 따라서 stateless 방식을 사용한다.

 

stateless: 서버는 request에 대한 response를 보내고 잊어버린다. 페이지를 완성하는 역할은 한가한 클라이언트가 알아서 상태를 관리해서 필요한 object를 요청한다.

 

쿠키: 비즈니스 서버에서 클라이언트에 대한 정보를 기억하고 싶어한다. 이런 필요성이 있는데 HTTP가 stateless이므로 해결방안으로 나온 것이 쿠키이다. 웹 서버 측에 메모리를 사용하여 클라이언트의 정보를 기억할 수 있다. 

쿠키 이용시 과정

1. 클라이언트가 HTTP req msg를 보낸다. 

2. 웹 서버는 클라이언트에게 ID를 부여한다. 

3. 백앤드 데이터베이스 시스템에 클라이언트 이름, ID, PWD, 방문 시간, 방문 목록, 구매 목록 등을 기록한다. 

4. 자동 실행 파일인 set-cookie를 포함한 res msg을 보낸다.

5. 클라이언트에서 set-cookie가 실행된다.

 

6. request msg 보낼 때 cookie도 같이 보낸다.

이후 클라이언트가 request msg를 보낼 때 쿠키를 가지고 간다.

 

쿠키 관리되어 지는 과정 정리.

1. 첫 req msg를 보낸다.

2. 1에 대한 res msg에 set-cookie를 포함하여 보낸다.

3. set-cookie를 클라이언트에서 실행한다.

4. 그 이후에 가는 모든 req msg에는 쿠키를 포함하여 보낸다.

5. 서버에서는 쿠키를 사용하여 해당 사용자의 기록들을 데이터베이스 시스템에 기록한다.

 

클라이언트 측에서 쿠키를 지우면 어떻게 될까?

나중에 다시 접속하게 되더라도 로그인을 한 후 req msg를 보내면 데이터베이스 시스템을 활용하여 동일한 ID를 쿠키로 준다. 다만 비회원으로 이용한다면 서버에서는 새로운 클라이언트로 인식하여 새로운 ID를 부여해야 할 것이다.