이전에 HTTP통신에 관해 설명하며 쿠키와 세션에 대해서 가볍게 언급한 적이 있었다.
이번 글에서는 이 쿠키와 세션이 무엇인지, 우리가 일상적으로 사용하는 로그인을 위해 사실은 어떠한 과정이 이루어지는지,
더불어 캐시는 또 무엇인지에 대해서 알아보고자 한다.
쿠키(Cookie)
쿠키는 클라이언트가 웹 사이트를 진입하면서 생성되며, 우리가 웹사이트를 이용하면서 쌓이는 정보들을 담은 데이터이며 이는 클라이언트(정확히는 사용자의 웹브라우저)에 저장된다.
예를 들어, 홈쇼핑을 예를 들어보면 우리의 로그인 상태, 장바구니 내용과 같은 정보를 저장하고 있는 작은 데이터이다. 그렇기에 개발자 도구를 이용해 해당 웹사이트에 대한 쿠키를 삭제하면 이전에 로그인이 되어있었음에도 불구하고 새로고침하면 다시 로그인 이전상태로 돌아가는것이다.
또한, 기본적으로 쿠키는 평문 형태로 저장되며 사용자가 임의로 수정하거나 삭제할 수도 있다. 따라서 사용자의 아이디와 비밀번호와 같은 민감한 정보는 쿠키에 직접 저장하기 보다는 서버에서 안전하게 처리하고, 쿠키에는 해당 정보에 접근할 수 있는 세션 ID만을 저장하는 것이 일반적이다. 보안을 강화하기 위해 HTTPS와 같은 보안 연결을 사용하며, 중요한 정보는 서버 측에서만 처리해야 한다.
세션(Session)
그렇다면 방금 언급된 세션은 또 뭘까?
세션은 서버 측에서 클라이언트의 상태(ex. 로그인 정보, 사용자의 선택 사항 등)을 유지하기 위해 사용하는 방법이다. 쿠키와는 달리 세션 정보는 '서버'에 저장된다.
이전에 말했듯이 쿠키는 '클라이언트'쪽에 저장되는 정보이다. 우리가 놀이공원에 입장할때 티켓을 보여주며 입장하듯이 소비자가 가지고 있어야할 것이 있다면, 판매하는쪽(서버)이 가지고 관리해야할 정보또한 있다는 의미이다.
예를 들어, 다시 홈쇼핑을 예로 들어보면 특정 소비자의 개인 정보(아이디, 비밀번호), 결제 수단과 같은 정보는 서버의 데이터베이스에 저장되어 있을 수 있다.
클라이언트가 웹사이트에 로그인하면 서버는 해당 사용자에게 고유한 세션 ID를 생성한다. 그리고 이 세션 ID는 앞서 말했듯이 쿠키(우리의 웹 브라우저)에 저장된다. 추가적으로 보안상의 이유로 인해 세션 ID는 해당 서버의 데이터베이스에 접근할 수 있는 키 또는 사용자의 상태와 관련된 데이터만을 저장한다. 이를 통해 클라이언트가 사이트 내에서 다른 페이지로 이동할때마다 이 세션 ID가 서버로 전송되어 로그인 상태인지 확인하는 것이다. 이런 과정을 통해 우리가 일상적으로 이용하는 로그인상태가 유지되는 것이다.
캐시(Cache)
그렇다면 캐시는 또 뭘까 싶다.
우선, 캐시(Cache)는 컴퓨팅에서 자주 사용되는 데이터 또는 파일을 빠르게 접근할 수 있도록 임시로 저장하는 메커니즘이다.
그리고 브라우저 캐시는 우리가 웹 브라우저에 접속할때 로컬(우리의 브라우저)에 주로 저장되는 웹 페이지의 일부 리소스이다. '주로'를 포함한 이유는 캐시가 사용자의 브라우저뿐만 아니라 CDN(Content Delivery Network) 같은 중간 서버에도 저장될 수 있기 때문이다.
어째서 일부 리소스를 저장하느냐하면 캐시에 저장되는 리소스들은 주로 로딩에 상대적으로 시간이 오래걸리는 이미지, 동영상과 같은 데이터를 로컬에 저장함으로서 다음에 사용자가 해당 웹사이트를 재방문했을때 조금 더 빠르게 웹페이지를 불러올 수 있는 이점을 제공하기 때문이다.
그러므로 웹에서 캐시의 목적은 주로 웹 페이지의 로딩 속도를 향상시키는데 있다고 볼 수 있으며, 만약 캐시된 리소스가 유효하고 최신 상태라면, 브라우저는 서버에 따로 해당 리소스를 요청하지 않고 캐시된 리소스를 사용하여 페이지를 로드하는 것이다. (캐시가 유효하지 않다면 당연히 새로 다 불러오는거고)
'네트워크' 카테고리의 다른 글
[네트워크] IP란? (0) | 2024.04.14 |
---|---|
[네트워크] OSI 7계층이란? (0) | 2024.04.12 |
[네트워크] WAS란? (0) | 2024.04.10 |
[네트워크] 로드밸런서와 CDN(Content Delievery Network)이란 (0) | 2024.04.10 |
[네트워크] 도메인 입력시 발생하는일에 관하여 (0) | 2024.04.08 |