2018-12-11 세션과 쿠키

####쿠키와 세션은 http 프로토콜의 약점을 보완하기 위해서 존재를 한다. ####http프로토콜은 connectionless하고 stateless의 특징을 가지고 있다. #####Connectionless : 클라이언트가 요청을 서버에 보내면, 서버는 클라이언트에 응답하면 서로 접속을 끊는 특성이다. #####Stateless : 접속을 끊는 순간 클라이언트와 서버의 통신은 끝나고 상태정보는 유지하지 않는 특성이다.

HTTP의 장점과 약점

  • 위의 2가지 특징은 장점과 약점을 가지고 있다.

    장점 : 통신을 유지하고 있으면 드는 모든 리소스 낭비를 줄인다.

    약점 : 통신을 할때마다 계속 내가 누구라는 인증을 해야한다.

  • http 프로토콜을 사용하여 서버가 클라이언트를 식별할 수 있도록 쿠키와 세션이 해결을 한다.

쿠키

  1. 쿠키는 클라이언트에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
  2. 쿠키는 이름,값,만료기간, 경로정보가 들어있다.
  3. 쿠키는 일정 시간동안 데이터를 저장할 수 있어서 로그인상태를 유지한다.
  4. 쿠키는 클라이언트의 상태정보를 본인 하드디스크에 저장 하였다가 필요하면 참조, 재사용 한다.

쿠키의 원리

  1. 클라이언트가 브라우저로 웹페이지접속
  2. 클라이언트가 요청한 웹페이지를 전송받으면서 쿠키를 하드에 저장
  3. 클라이언트 재방문시 웹페이지 요청과 함께 쿠키값도 전송
  4. 지속적으로 로그인정보를 가지고 있는것처럼 사용

쿠키의 제약조건

  1. 클라이언트에 총 300개의 쿠키를 저장할 수 있다.
  2. 하나의 도멘인당 20개 값만 가질수있다.

####Response header의 set-cookie속성을 사용하면 클라리언트에 쿠키를 만들 수 있다. ####쿠키는 사용자가 요청하지 않아도 브라우저는 요청시 요청헤더에 넣어서 알아서 서버에 전송을 한다.

세션

  • 세션은 클라이언트와 웹서버간 네트워크 연결이 지속유지 되고 있는 상태를 말한다. 즉, 사용자가 브라우저를 열어 서버에 접속한 뒤 접속을 종료할 때까지의 시점을 말한다.
  • 일정시간동안 같은 브라우저로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술
  • http 프로토콜은 비접속형 프로토콜 이므로, 매접속시마다 새로운 네트워크 연결이 이루어지는데, 세션이 연결 유지를 가능하게 해준다.
  • 클라이언트가 웹서버에 요청을 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 id를 부여하는데, 이 아이디를 세션id이라고 부른다.
  • 세션id는 임시로 저장하여 페이지 이동시 이용하거나, 클라이언트가 재접속 했을때 클라이언트를 유일하게 구분하는 수단이다.

    세션의 원리

    1. 세션아이디를 서버에서 클라이언트가 자사 웹사이트 접속시 발급 해준다.
    2. 서버에서 클라이언트로 발급해준 세션id를 쿠키를 사용해서 주장한다. 쿠키이름은 JSESSIONID
    3. 클라이언트는 다시 접속시, 이 쿠키(JSESSIONID)를 이용해서 세션id값을 서버에 전달한다.

세션의 장점

  1. 각 클라이언트에게 고유ID를 부여(정확한 구분)
  2. 세션아이디로 클라이언트를 구분해서 클라이언트 요구에 맞는 서비스를 제공할 수 있다.
  3. 보안면에서 쿠키보다 우수

세션의 단점

  • 서버에 저장되는 세션때문에 서버에 처리를 요구하는 부하와 저장공간이 필요

세션과 쿠키의차이

  • 쿠키와 세션은 비슷한 역할을 한다. 세션도 쿠키로 저장해서 사용을 하기 때문.. 차이점은 위치이다. 쿠키는 클라이언트에 저장되어서 보내는 역할을 하고, 세션은 서버에 저장되어서 클라이언트에게 알려줘서 사용한다.
  • 쿠키는 서버의 자원을 전혀 사용하지 않는다. 클라이언트 단에서 저장을 해서 사용하기 때문..
  • 세션은 서버에 저장되어서 그 고유한 ID를 가지고 있다. 그래서 서버의 자원을 사용한다.
  • 쿠키와 세션은 서버의 자원을 사용할 수 있다. 쿠키와 세션은 만료되는 기간도 다르다.
  • 쿠키는 클라이언트에 저장되어서 서버에 요청시 빠른속도를 낸다.
  • 세션은 서버에 정보가 있기때문에 서버의 처리가 필요해서 쿠키보다 느린속도를 낸다.
Written on December 11, 2018