2018-03-22-쿠키와 세션의 차이점.md

쿠키와 세션의 차이점

default

우리가 특정한 웹사이트에서 로그인을 할 때, "ID와 비밀번호를 저장하시겠습니까?" 하는 말은 쿠키를 만들것이냐 란 말이드아

 

그럼 쿠키와 세션을 왜 사용할까?

HTTP프로토콜의 특성상 존재하는 단점을 보완하기 위해 존재하는데

두가지의 특성이 무엇이냐 하면 ConnectionlessStateless입니다

  • Connectionless - 클라이언트가 서버로 Request를 보내고 , 서버가 클라이언트에게 Response를 하면 접속을 끊는 특성
  • Stateless - 접속을 끊는 순간 클라이언트와 서버의 통신은 끝나고 상태 정보를 유지하는 특성

 

이 특성은 통신을 유지하지 않기 때문에, 그 쪽에 대한 자원의 낭비를 줄일 수 있지만, 만약 같은 웹사이트를 들어 갈 때마다 내가 누구인지 인증을 해야합니다.

예를 들어 네이버 로그인을 한 후 서비스를 이용시 다른 서비스를 이용할 때 다시 로그인을 해야 하는 상황이 발생합니다.

쿠키와 세션은 HTTP프로토콜을 이용 할때 서버가 클라이언트를 식별할 수 있게 도와주는 역할을 해주는 것

 

쿠키와 세션에 대해 알아보자

쿠키(Cookie)

  • 서버측에서 클라이언트측에 상태 정보를 저장하고 추출할 수 있는 메커니즘
  • 클라이언트의 매 요청마다 웹 브라우저로부터 서버에게 전송되는 정보패킷의 일종
  • HTTP에서 클라이언트의 상태 정보를 클라이언트의 하드 디스크에 저장하였다가 필요 시 정보를 참조하거나 재사용할 수 있음

 

쿠키 원리

클라이언트가 웹브라우저를 통하여 웹페이지 접속 -> 클라이언트가 요청한 웹페이지(HTTP)를 전송하면서 쿠키 설정(클라이언트의 하드디스크에 저장) -> 웹페이지에 재방문시 HTTP요청과 함께 쿠키도 같이 전송

 

사용 예

  • 방문했던 사이트에 다시 방문 하였을때 아이디와 비밀번호 자동 입력
  • 팝업에서 "오늘 이 창을 다시 보지 않음"체크
  • 쇼핑몰의 장바구니 역할

 

쿠키의 제약조건

  • 클라이언트에 총 300개 까지 쿠기 저장가능
  • 하나의 도메인 당 20개의 쿠키값만을 가질 수 있음
  • 하나의 쿠키 값은 4096Byte까지 저장 가능

 

만약에 한 도메인당 쿠키값이 20개를 초과해버리면, 가장 적게 사용된 쿠키부터 사라짐.

 

세션(Session)

  • 사용자가 웹 서버에 접속해 있는 상태
  • 사용자가 브라우저를 열어 서버에 접속한뒤 접속을 끊을(브라우저 종료)시점까지를 세션
  • 클라이언트가 웹서버에 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID(쿠키)를 부여, ID를 세션이라고 함
  • 세션의 정보를 서버에 저장, 따라서 보안면에서 쿠키보다 우수

 

HTTP 프로토콜은 비접속형 프로토콜이므로, 매 접속시마다 새로운 네트워크 연결이 이루어진다

이 ID는 쿠키를 사용하여 유지되며, 이 쿠키의 이름이 JSESSIONID이며, 서버는 JSESSIONID를 웹 브라우저에 전달하고, 클라이언트는 새로운 접속시 쿠키를 통해서 세션 ID값을 서버에 전달한다.

  • 세션 ID를 임시로 저장하여 페이지 이동 시 이용하거나, 클라이언트가 재 접속 했을 때 클라이언트를 구분할 수 있는 유일한 수단

 

세션의 단점

  • 서버에 저장되는 세션때문에 서버에 처리를 요규하는 부하와 저장 공간을 필요로 함

 

쿠키와 세션의 차이점

쿠키(Cookie)와 세션(Session)은 기능상 비슷한 역할을 하고, 동작원리도 비슷하다. 왜냐하면, 일반적인 세션은 쿠키를 바탕으로 동작하기 때문, 그러다 가장 중요한 차이점은 저장되는 곳이 다르다

쿠키는 클라이언트의 하드디스크에 저장되고, 세션은 서버에 저장된다.

그래서 쿠키는 서버의 자원을 전혀 이용하지않으며, 세션은 서버에 저장되기 때문에 서버의 자원을 사용할 수 있다.

 

마지막으로 짧게 간추리면

쿠키세션HTTP프로토콜의 웹사이트를 접속할 때 생기는 단점(Connectless , Stateless)을 보완하기 위해 사용되며, 쿠키는 클라이언트의 하드디스크에 저장되며 웹브라우저에서 서버로 HTTP프로토콜을 통해 웹사이트를 요청할때 같이 보내는 녀석.()

세션은 서버에 저장되며, 클라이언트에 각각의 ID(쿠키)를 부여하며 이것을 세션이라 한다. 이놈을 통해 나중에 웹사이트에 재접속 할때 클라이언트를 구분짓는 유일한 수단이 된다.

 

 

 

 

 

 

'WEB관련' 카테고리의 다른 글

웹브라우저가 서버와 통신하는 과정  (2) 2018.03.22

+ Recent posts