쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다. 사용자 인증이 유효한 시간이 명시되어있기 때문에 유효 시간 동안에는 브라우저가 종료되어도 인증이 유지된다는 특징이 있다.
쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시에 Request Header를 넣어서 자동으로 서버에 전송한다.
이름,값,유효시간,도메인,경로 로 구성되어 있고, 쿠키의 동작 방식은 다음과 같다.
클라이언트가 페이지를 요청한다.
서버에서 쿠키를 생성 HTTP 헤더에 쿠키를 포함 시켜서 응답한다.
서버에서 쿠키를 읽고 변경된 정보가 있으면 쿠키를 업데이트 하여서 HTTP헤더에 포함시켜서 응답
세션은 쿠키를 기반으로 구성되어있지만, 차이점은 쿠키와 달리 사용자 정보 파일을 서버측에 세션DB에서 관리 한다는 점이다.
서버에서는 클라이언트를 구분하기 위해 세션ID를 부여하고 클라이언트가 브라우저를 종료할 때까지 인증상태를 유지한다.
세션은 사용자 정보가 서버에 있기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버에 있는 메모리를 많이 차지하게 되어서 서버가 과부하되어 성능 저하가 일어 날 수 있다.
클라이언트가 Request를 보내면, 서버의 엔진이 클라이언트에게 유일한 ID인 세션ID를 부여한다.
클라이언트가 서버에 접속 할 시에 서버로부터 세션ID를 발급 받는다.
쿠키파일 안에 세션ID로 브라우저에 저장되어 있고, 서버에 요청할 때, 이 쿠키의 세션ID를 같이 서버에 전달해서 요청을 한다.
서버는 이 세션 ID를 받아서 안에 있는 클라이언트의 정보를 가져와 요청을 처리하여 클라이언트에게 응답한다.