곰돌이 놀이터

[기본] 세션과 쿠키의 차이( with 캐시 ) 본문

기본 개발 지식

[기본] 세션과 쿠키의 차이( with 캐시 )

달나라 곰돌이 2018. 7. 19. 15:21

세션과 쿠키를 이해하기 위해서는 우선 HTTP 프로토콜에 대한 이해가 필요하기 때문에 앞서 HTTP 프로토콜을에 대해 정리한 글을 먼저 읽은 후 세션과 쿠키에 대한 글을 읽으면 도움이 될것이다.


 쿠키( Cookie ) 

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

 원리
클라이언트가 브라우저를 통해 웹페이지 접속
클라이언트가 요청한 웹페이지를 전송받으면서 쿠키( 클라이언트의 상태정보 )를 하드 디스크에 저장
클라이언트 재방문시 웹페이지 요청과 함께 쿠키값도 전송
지속적으로 로그인 정보를 가지고 있는 것 처럼 사용

 사용 예
사이트에 방문하여 로그인시 아이디와 비밀번호를 저장하여 재방문시 직접 입력하지 않아도 되도록 한다.
팝업창에 "오늘 이창을 보지 않음" 버튼 클릭시 하루동안 해당 팝업이 뜨지않는다.
쇼핑몰의 장바구니 기능의 경우가 쿠키를 사용한 예이다.

 제약조건
클라이언트에 총 300개 가지 쿠키를 저장 할 수 있다.
하나의 도메인당 20개의 값만을 가질 수 있다. ( 20개를 초과하면 가장 적게 참조한 쿠키가 지워진다. )
하나의 쿠키 값은 4MB까지 저장이 가능하다.

 세션( Session ) 

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

 원리
세션 ID를 서버에서 클라이언트가 자시 웹사이트에 접속시 발급해준다.
서버에서 클라이언트로 발급해준 세션 ID를 쿠키를 사용해 저장한다.( 쿠키 이름은 JSESSIONID )
클라이언트는 다시 접속시, 이 쿠키( JSESSIONID )를 이용해서 세션 ID 값을 서버에 전달합니다.

 장점
각 클라이언트에게 고유 ID를 부여한다.( 정확한 구분 )
서션 ID로 클라이언트를 구분해서 클라이언트의 요구에 맞는 서비스를 제공 할 수 있다.
정보들을 서버에 저장하기 때문에 보안면에서 쿠키보다 우수하다.

 캐시( Cache ) 

Cache란 웹페이지 Resource 파일들 (오디오, 비디오, 이미지 등)의 임시 저장소로 다음에 같은 웹페이지 (또는 웹사이트) 접속 시 페이지 로딩 속도를 개선해주는 역할을 한다.

 쿠키와 캐시의 차이
→ 유저의 컴퓨터에 임시로 저장되어 있는 점은 같지만 사용 목적은 위에 이야기한 것 처럼 다르다.
 Cache는 오직 웹페이지 로딩 속도 개선을 위해서만 사용되지만 Cookies는 유저 관련된 여러가지 다른 목적으로 사용 가능하다.
  Cache는 오디오, 비디오, 이미지 등의 Resource 파일등을 주로 저장하는 반면에 Cookies는 User preference (유저가 웹사이트 접속 시 하는 행동 패턴 또는 관련 정보) 위주의 정보를 저장한다.
  보통 Cache는 유저가 삭제할 때까지 유저의 컴퓨터에 저장되지만 Cookies는 서버 쪽에서 설정한 기간이 지나면 자동으로 삭제된다.
  Cookies는 웹서버의 Access가  가능한 반면에 Cache는 Access가 불가능하다.

 참고 


http://interconnection.tistory.com/74?category=616434

http://utk-unm.blogspot.com/2015/09/cache-vs-cookies.html

Comments