ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹에서의 쿠키와 세션
    네트워크/네트워크 정리 2020. 1. 18. 01:13

    쿠키와 세션을 사용하는 이유는 뭘까?

     

    HTTP 프로토콜의 특징이자 약점을 보완하기 위한 하나의 방법이다.

     

    그러면 HTTP 프로토콜의 특징부터 살펴보자.

     

    1) 비연결 지향 ( ConnectionLess )

     

    HTTP는 클라이언트가 서버에 http request message를 보내면 서버는 클라이언트에 요청에 맞게 http response message를 보내고 접속을 끊는다.

     

    * HTTP 1.1 버전의 keep-alive 기능은 데이터를 보낸 이후에도 커넥션을 어느정도 유지하는 기능이며 default 설정이다.

     

     

    네트워크 관점에서 keep-alive는 하나의 옵션이고 ConnectionLess의 연결 비용을 줄이는 것이 장점이기에 비연결지향으

     

    로 알아두는 것이 맞다.

     

    2) 상태 정보를 유지하지 않음 ( StateLess )

     

    연결을 끊게 되면 클라이언트, 서버의 통신이 끝나고 상태 정보는 유지하지 않는다.

     

     

     

    HTTP의 이러한 두 성질을 보완하기 위해 쿠키와 세션을 사용하게 되었다. 통신 연결을 유지하지 않기 때문에

     

    리소스 낭비가 줄어드는 것은 장점이나 통신 시 새로 커넥션을 열고 매번 인증을 해야 하는 단점이 생기게 된다.

     

    예를 들어 쿠키와 세션이 없다면 페이지에서 옮겨 다닐 때마다 로그인을 다시 해야만 한다.

     

     

     

    이제 쿠키와 세션에 대해서 알아보자.

     

     

    쿠키 

    쿠키는 Key value 형태의 데이터 파일이며 이름, 값, 만료 날, 등이 들어있다.

     

     

    쿠키는 일정 시간 동안 데이터를 저장할 수 있게 되며 쿠키는 클라이언트의 상태 정보를 로컬에 저장한 후에 참조한다.

     

    일련의 과정은

     

    1. 브라우저에서 웹 페이지에 접속한다.

    2. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 쿠키를 포함해서 전송

    3. 클라이언트가 요청한 웹페이지를 받으면서 쿠키를 클라이언트 하드에 저장한다.

    4. 클라이언트가 재 요청 시 요청 메시지와 함께 쿠키값도 헤더에 넣어 전송한다.

    5. 지속적으로 로그인 정보를 가지고 있는 것처럼 사용한다.

     

    쿠키의 사용 예는 팝업창 체크나 쇼핑몰의 장바구니 등이 있겠다. 

     

    쿠키는 사용자가 따로 요청하지 않아도 브라우저가 요청 시 리퀘스트 헤더에 셋 쿠키를 통해 넣어 자동으로 서버에 전송한다.

     

     

    세션

    일정 시간 동안 같은 브라우저로부터 들어오는 요구를 하나의 상태로 보며 그 상태를 유지하는 기술

     

    클라이언트가 request message를 보내면 해당 서버의 엔진이 클라이언트에게 유일한 id를 부여하는데 이것이 세션 id이다.

    세션의 일련의 과정

     

    1. 클라이언트가 서버에 접속 시 세션 ID를 발급

    2. 서버에서는 클라이언트로 발급해준 세션 ID를 쿠키를 사용하여 저장

    3. 클라이언트는 다시 접속시 이 쿠키를 이용해 세션 ID값을 서버에 전달.

    4. 이 ID를 저장해놓은 서버는 클라이언트가 접속시 세션 ID에 따른 처리를 하게 된다.

     

    세션의 예는 로그인 정보 유지 등이 있겠다.

     

     

    그렇다면 이제 쿠키와 세션의 차이를 정리해보자!

     

     

    저장 위치 : 쿠키는 클라이언트에 파일로 저장되고 세션은 서버에 저장된다.

     

    보안 : 쿠키는 클라이언트 로컬(하드)에 저장되기에 변질이나, 요청 시에 악의적인 공격을 받을 우려가

     

    있어 보안에 취약하지만, 세션은 쿠키를 이용해 세션 ID만 저장하고 서버에서 처리하기에 비교적 보안성이 좋다.

     

    라이프 사이클 :  쿠키는 만료시간이 있지만 파일로 저장되기에 브라우저 종료 시에도 계속해서 정보가 남아있을 수 있다.

     

    반면 세션도 만료시간을 정할 수 있지만 브라우저 종료시에 만료시간에 상관없이 삭제된다.

     

    속도 : 쿠키는 정보가 클라이언트에 있기 때문에 서버에 요청 시 속도가 빠르고 세션은 정보가 서버에 있기에

     

    처리가 요구되어 쿠키보다는 느린 속도를 낸다.

     

     

    주의할점

     

    세션은 서버의 자원을 사용하기에 무분별하게 만들다 보면 서버의 부하를 줄 수 있다.

     

    이는 세션과 쿠키를 나누어 사용하는 이유가 된다.

     

     

     

     

    출처 : https://doooyeon.github.io/2018/09/10/cookie-and-session.html

     

    쿠키(Cookie)와 세션(Session)

    HTTP 프로토콜에서 상태를 유지하기 위한 기술인 쿠키와 세션의 개념과 차이점을 알 수 있다.

    doooyeon.github.io

     

    '네트워크 > 네트워크 정리' 카테고리의 다른 글

    Get과 Post의 차이  (1) 2020.02.05
    TCP 3 way handshake & 4 way handshake  (0) 2020.01.29
    Http와 Https 의 차이  (0) 2020.01.18
    TCP와 UDP  (0) 2020.01.16
    OSI 7 계층  (0) 2020.01.16
Designed by Tistory.