세션


                                                                                                                                           -위키피디아 


세션은 논리적인 연결상태를 유지함으로 , 논리적인 상태(State)를 유지할수 있다.

상태가 있기때문에 인증을 포함하여, 누적값이 유지될수 있다.

이러한 논리적인 연결을 유지하기위한 기간및 규칙을 라이프 사이클이라고 부른다.

컴퓨팅에서 State 와 StateLess 를 조금더 쉽게 다뤄보자

State VS StateLess


State한 계산기와 아닌 계산기로 예를 들어보자

  • 상태가 지속되는 계산기(State) :  플러스 3 , 플러스 2, 플러스  버튼을 각각 눌렀다. 상태값을 유지하였기때문에 최종값은 6이된다.
  • 상태가 없는 계산기(Stateless) : 플로스3, 플러스2,플러스1 버튼을 각각 눌렀다.  상태를 유지못하기때문이 마지막 명령값인 1이 된다.


그러면 우리가 사용하는 웹은 State일까 Stateless 일까? 웹에서 사용되는 Http 프로토콜을 살펴보자

웹(HTTP) 프로토콜 특성


  • 비연결지향(Connectionless) : 연결지속은 요청을 한후 응답을 받을때까지이다. - 반대 프로토콜 : TCP
  • 상태없음(stateless) : 비연결지향적 특성 때문에 항상 초기화된 상태로 시작하며, 이전의 요청이 다음 상태에 영향을 끼치지 않는다.


기본적인 웹프로토콜은 비연결지향적인 특성때문에 상태가 없으며

커피한잔은 시킬수 있지만(상태가 없어도되기때문에) , 방금 시켰던거 또죠..에대한 명령을 이해할수 없다.


그러면 우리가 사용하는 웹은 쓸모가 없지않은가? 그래서 이것을 보완하려 나온 기술이 쿠키이다.

쿠키


동화 헨젤과 그레텔에서 길을 잃지않기위해 쿠키를 먹으면서 쿠키조각을 떨어트리며

이동 흔적을 남기는 이야기는 유명하다. 웹기술에서 쿠키도 여기에서 유례되었으며

컴퓨팅에서 쿠키는 과자가 아닌, 헨젤이 쿠키를 이용한 방식인 기록의 흔적으로 이해하면 될것같다.

( 쿠키는 한조각 먹을때마다,부스러기가 떨어진다. 부스러기의미는 아님 - 매 서버요청마다 쿠키정보(cookies :쿠기정보 ,cookies.a : 부스러기 )  를 보낸것과 유사하다 )


헨젤의 길찾기


상태가 없는 프로토콜에서,어떻게 쿠키를 이용하여 논리적인 연결유지(세션)및 상태가 유지될수 있는지 동화이야기를 조금 각색하여 살펴보자.


헨젤은 길을 떠나기전 새에게 길을 잃지않기위해 쿠키 조각을 떨어트릴테니 다시 안내해줘라라고 약속을 하고 길을 출발하였습니다.

역활

  • 파랑새 : 길찾아주는 서비스
  • 헨젤: 길찾아주는 서비스를 이용하는 이용자


여기서 그레텔은 파랑새와  약속한 특수한 색깔의 쿠키만을 이용하게 됩니다.

세션ID : 서버가 최초 세션 ID를 발급 ( 고유한 독일지방에 나오는 황금색 쿠키 )

세션정보 : 서버가 세션ID를 통해 사용자를 식별하는 정보 ( 황금색 쿠키는 그레텔만 이용한다.)


파랑새는 쿠키를 맛있게 먹으며 헨젤의 이동경로를 기억해둡니다.

헨젤은 1분단위로 새에게 내위치 알리기 기능을 사용합니다.

세션  : 파랑새가 헨젤의 쿠키 임을, 식별(약속된 세션아이디=황금색쿠키)하고 있어 재인증이 필요없는 서버가 상태를 유지하는 단위

추가 쿠키 정보  : 인증을 위한 쿠키외에,특수한 정보를 담을수 있으며  이 이야기에서 쿠키가 떨어진 장소는 위치정보를 가지고 있습니다. 


헨젤은 다시 돌아가기 위해 파랑새에게 돌아가는 길을 물었으며 파랑새는 헨젤이

이용한 쿠키정보를 활용하여 헨젤을 다시 돌려보낼수 있었다란 이야기입니다.


이야기와는 다르게 쿠키정보 자체를 사용자 명시적으로 남기고 그러는것이 아닌 ( 실 사용자는 쿠키의 존재를 알지못함 )

각 설계된 도메인 서비스의 개발자가 숨겨둔 기능으로, 어떻게 이용되는지 사용자는 알수 없습니다.

  • 커피숍에서 커피와 쿠키를 주문하고, 쿠키를 먹다 흘렸다고 가정해봅시다. 쿠키조각에는 침이 묻어있으며  주문정보와 결합하여 누구의 DNA인지 수집 할수있습니다. ( DNA을 수집하는 커피숍의 극단적인 사례)

실제로 익명 웹에서, 사용자를 식별하기 위한 지문서비스도 존재하며,여러가지 정보를 조합하여 고유한 값을 생성하며 핑거프린트(지문)라고 불립니다.  : https://fingerprintjs.com/demo


국내사이트에서, 쿠키 경고문을 거의 볼수 없습니다. (하지만 이용합니다.)

개인정보를 중요하게 생각하는 몇몇 외국사이트에서는 쿠키허용자체를 이용단계 시작점인

메인페이지 단계에서 가입이용약관만큼 획득하는 범위와 이유에대해 상세하게 설명해주며 경고를 해줍니다.


여기서 세션이 언제 사라지고 쿠키는 언제까지 유지되는지? 

세션과 쿠키를 활용하기 위해서 중요한것은 라이플사이클에 대한 이해입니다.

여기서는 라이프 사이클은 제외하였으니 더 자세하게 설명된 관련내용을 참고하세요

라이프 사이클과 관련하여 쿠키 세션을 이해하는것이 도움되며

더 자세한 설명은 아래 링크를 참고합니다.


도움되는  링크:



  • No labels
Write a comment…