2018-12-11 세션과 쿠키
####쿠키와 세션은 http 프로토콜의 약점을 보완하기 위해서 존재를 한다. ####http프로토콜은 connectionless하고 stateless의 특징을 가지고 있다. #####Connectionless : 클라이언트가 요청을 서버에 보내면, 서버는 클라이언트에 응답하면 서로 접속을 끊는 특성이다. #####Stateless : 접속을 끊는 순간 클라이언트와 서버의 통신은 끝나고 상태정보는 유지하지 않는 특성이다.
HTTP의 장점과 약점
- 위의 2가지 특징은 장점과 약점을 가지고 있다.
장점 : 통신을 유지하고 있으면 드는 모든 리소스 낭비를 줄인다.
약점 : 통신을 할때마다 계속 내가 누구라는 인증을 해야한다.
- http 프로토콜을 사용하여 서버가 클라이언트를 식별할 수 있도록 쿠키와 세션이 해결을 한다.
쿠키
- 쿠키는 클라이언트에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
- 쿠키는 이름,값,만료기간, 경로정보가 들어있다.
- 쿠키는 일정 시간동안 데이터를 저장할 수 있어서 로그인상태를 유지한다.
- 쿠키는 클라이언트의 상태정보를 본인 하드디스크에 저장 하였다가 필요하면 참조, 재사용 한다.
쿠키의 원리
- 클라이언트가 브라우저로 웹페이지접속
- 클라이언트가 요청한 웹페이지를 전송받으면서 쿠키를 하드에 저장
- 클라이언트 재방문시 웹페이지 요청과 함께 쿠키값도 전송
- 지속적으로 로그인정보를 가지고 있는것처럼 사용
쿠키의 제약조건
- 클라이언트에 총 300개의 쿠키를 저장할 수 있다.
- 하나의 도멘인당 20개 값만 가질수있다.
####Response header의 set-cookie속성을 사용하면 클라리언트에 쿠키를 만들 수 있다. ####쿠키는 사용자가 요청하지 않아도 브라우저는 요청시 요청헤더에 넣어서 알아서 서버에 전송을 한다.
세션
- 세션은 클라이언트와 웹서버간 네트워크 연결이 지속유지 되고 있는 상태를 말한다. 즉, 사용자가 브라우저를 열어 서버에 접속한 뒤 접속을 종료할 때까지의 시점을 말한다.
- 일정시간동안 같은 브라우저로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술
- http 프로토콜은 비접속형 프로토콜 이므로, 매접속시마다 새로운 네트워크 연결이 이루어지는데, 세션이 연결 유지를 가능하게 해준다.
- 클라이언트가 웹서버에 요청을 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 id를 부여하는데, 이 아이디를 세션id이라고 부른다.
-
세션id는 임시로 저장하여 페이지 이동시 이용하거나, 클라이언트가 재접속 했을때 클라이언트를 유일하게 구분하는 수단이다.
세션의 원리
- 세션아이디를 서버에서 클라이언트가 자사 웹사이트 접속시 발급 해준다.
- 서버에서 클라이언트로 발급해준 세션id를 쿠키를 사용해서 주장한다. 쿠키이름은 JSESSIONID
- 클라이언트는 다시 접속시, 이 쿠키(JSESSIONID)를 이용해서 세션id값을 서버에 전달한다.
세션의 장점
- 각 클라이언트에게 고유ID를 부여(정확한 구분)
- 세션아이디로 클라이언트를 구분해서 클라이언트 요구에 맞는 서비스를 제공할 수 있다.
- 보안면에서 쿠키보다 우수
세션의 단점
- 서버에 저장되는 세션때문에 서버에 처리를 요구하는 부하와 저장공간이 필요
세션과 쿠키의차이
- 쿠키와 세션은 비슷한 역할을 한다. 세션도 쿠키로 저장해서 사용을 하기 때문.. 차이점은 위치이다. 쿠키는 클라이언트에 저장되어서 보내는 역할을 하고, 세션은 서버에 저장되어서 클라이언트에게 알려줘서 사용한다.
- 쿠키는 서버의 자원을 전혀 사용하지 않는다. 클라이언트 단에서 저장을 해서 사용하기 때문..
- 세션은 서버에 저장되어서 그 고유한 ID를 가지고 있다. 그래서 서버의 자원을 사용한다.
- 쿠키와 세션은 서버의 자원을 사용할 수 있다. 쿠키와 세션은 만료되는 기간도 다르다.
- 쿠키는 클라이언트에 저장되어서 서버에 요청시 빠른속도를 낸다.
- 세션은 서버에 정보가 있기때문에 서버의 처리가 필요해서 쿠키보다 느린속도를 낸다.
Written on December 11, 2018