Network

[Network]정보가 기록되는 쿠키와 세션, 그리고 캐시 알아보기

MoonSta 2023. 6. 28. 10:09

 HTTP 프로토콜의 약점을 보완하기 위해 쿠키와 세션이란 개념이 등장하였다. 특정 정보를 담고 있다는 공통점을 가지고 있지만, 쓰임과 특징이 다른 두 개념 쿠키와 세션에 대해서 알아보도록 하겠습니다.

     


    쿠키와 세션의 특징 알아보기

     

     

    쿠키의 특징

     

    • 쿠키가 담고 있는 정보는 이름, 값, 만료일, 경로이다.
    • 로컬에 총 300개의 쿠키를 저장할 수 있다.
    • 도메인 당 20개의 쿠키를 가질 수 있다.
    • 하나의 쿠키는 4KB까지 저장 가능하다.

     

     이러한 특징을 바탕으로, 사용자가 웹사이트에 접근함과 동시에 서버에서 쿠키를 생성하고, 생성된 쿠키 안에 정보를 담아 사용자에게 돌려준다. 또한 로컬에 특정 사이트의 쿠키가 저장되어 있다면 재방문 시 요청 페이지와 쿠키를 전송한다.

     

     

     

     

    세션의 특징

     

    • 웹 서버의 웹 컨테이너의 상태를 유지하기 위해 웹 서버의 세션 쿠키를 저장한다.
    • 브라우저 종료 시점에 세션이 끊어진다.
    • 서버가 수용할 수 있을 만큼 무한정으로 서버에 저장할 수 있다.
    • 고유한 Session Id를 생성한다.

     

     이러한 특징을 바탕으로, 클라이언트가 서버의 접속 시 고유의 세션 ID를 발급받고 클라이언트는 세션 ID를 쿠키를 사용하여 소유한다. 서버 요청 시, 쿠키의 세션 ID를 담아 요청하고 서버에서는 세션 ID만을 가지고 클라이언트의 정보로 요청을 수행하고 클라이언트한테 응답한다.

     


     

    쿠키와 세션은 어떤 차이가 있을까?

     

    사실 쿠키와 세션의 역할과 동작되는 원리는 비슷하다. 세션 또한 쿠키를 사용하기 때문이다. 하지만 사용자의 정보가 저장되는 위치가 다르고, 세션은 서버의 자원을 사용하는 반면에 쿠키는 서버의 자원을 사용하지 않는다. 또한 보안적인 측면에서도 큰 차이가 있다. 쿠키의 담겨있는 정보는 결국 로컬에 저장되기 대문에, 특정 요청에 의해 노출될 수 있다. 하지만 세션은 해당 세션의 ID값만 로컬에 저장하고 저장된 ID를 바탕으로 서버에서 관련된 처리를 해주기 때문이다. 

     

      쿠키(Cookie) 세션(Session)
    위치 로컬 PC 서버
    형식 text Object
    브라우저 종료시 삭제 X 삭제 O
    리소스 로컬 리소스 서버 리소스
    속도 빠름  느림
    보안 안좋음 좋음

     

     이러한 사실을 알고 나서 궁금한 점이 생겼다. '특정 정보가 노출될 수 있는 위험을 감수하면서 굳이 쿠키를 사용할 필요가 있을까?'이다. 이것에 대한 궁금증을 해결해 보자.

     


     

    쿠키를 안 써도 되지 않을까?

     

     세션을 사용하는 것 자체가 서버의 자원을 사용한다. 클라이언트가 많아서 서버가 감당할 수 없는 경우가 있다. 또한 성능 문제가 있다. 서버의 과부하가 생기는 경우에 성능에 문제가 생길 수 있다. 이러한 이유로 쿠키와 세션을 적절히 섞어 사용해야 한다.

     

     

     

    캐시(Cache)란? 

     

     캐시란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 저장소를 말합니다. 캐시는 저장 공간이 작고 비싼 대신 높은 성능을 제공합니다. 예를 들어 클라이언트가 특정 주소로 요청을 하게 되고, 그 요청의 해당 주소에 대한 첫 번째 요청이라고 하면 요청의 결과를 캐시에 저장해 둡니다. 그 이후에 두 번째 요청을 하는 경우 웹 서버로의 요청 대신에 기존에 저장해 둔 로컬 PC의 캐시를 가져오게 됩니다.

     

     보통 요청 결과의 값은 이미지 또는 사진, CSS, JS, BANNER 등 변경 사항이 적고 용량이 큰 파일입니다. 따라서 캐시에 저장을 해두고, 그곳에서 정보를 가지고 온다면 페이지가 로딩되는 속도는 엄청 줄어들 겁니다. 하지만, 자주 변경되는 정보를 캐시로 저장을 해둔다면, 그 이후 실제 변경이 일어난 데이터가 출력되는 것이 아닌 캐시에 저장된 데이터가 출력되기 때문에 변경이 일어나지 않은 데이터를 캐시에 담을 수 있도록 해야 합니다.

    'Network' 카테고리의 다른 글

    [Network]CORS 쉽게 이해하기  (10) 2023.01.04
    [Network] Domain과 DNS  (10) 2022.12.31