Computer Science

쿠키(Cookie), 세션(Session), 캐시(Cache)

닉네임못짓는사람 2021. 12. 18. 03:07
반응형

HTTP는 무상태성(Stateless)과, 비연결성(Connectionless)의 특징을 가지고 있다.

 

즉, 서버와 클라이언트가 통신할 때 서버는 클라이언트의 어떠한 상태 정보도 가지지 않는다.

때문에 서버와 클라이언트가 두 번 통신한다고 했을 때, 첫 번째 통신에서 데이터를 주고받아도

두 번째 통신에서 해당 데이터를 유지하지 않는다.

 

또한 서버는 클라이언트로부터 Request를 받고, 이에 대한 Response를 전송한 뒤

해당 클라이언트와 연결을 끊게 된다.

 

하지만 이러한 특징은 실제 통신상황에서 사용자에게 많은 불편함을 줄 수 있다.

예를 들어 홈페이지에 로그인하는 경우 다른 페이지로 이동할 때마다

다시 로그인을 해야 된다면 누가 그런 사이트를 이용할까

 

이러한 상황에 대비하기 위하여 서버와 클라이언트 통신간에 데이터를 유지하는

방식이 몇 가지 있는데, 이에 대해서 알아보자.

쿠키(Cookie)


쿠키의 경우 전공자가 아닌 사람들도 컴퓨터를 사용하면서 자주 보는 단어라고 생각한다.

브라우저에서 사용 기록을 삭제하는 경우에 쿠키 삭제하기라는 선택지가 나타나기 때문이다.

 

쿠키는 서버와 클라이언트 통신 중 클라이언트에 대한 정보를 클라이언트의 브라우저(PC)에 저장하는 방식이다.

해당 데이터는 서버에서 클라이언트로 전송되어 텍스트 파일로 저장되며,

클라이언트는 이후에 해당 서버와 통신할 때 이 쿠키파일을 불러와서 사용한다.

 

Chrome브라우저에서 F12를 누르고 Application -> Cookie로 들어가면 해당 사이트의 쿠키를 확인할 수 있다.

쿠키는 name, value, 만료기간 등으로 구성되어있는데,

이 만료기간을 통해 해당 데이터의 저장 기간을 정할 수 있다.

데이터는 만료기간까지 저장소에 저장되며, 만료기간을 지정하지 않으면 웹 브라우저가 닫힐 때 삭제된다.

이렇게 저장소에 저장되는 쿠키를 영구 쿠키, 브라우저가 닫히면서 삭제되는 쿠키는 세션 쿠키라고한다.

 

쿠키는 정말 유용하게 사용되지만, 보안성이 낮다는 취약점을 가지고 있다.

위에서 말했듯이 클라이언트의 정보를 PC에 저장하게 되는데, 이 때문에

클라이언트의 PC가 해킹당하거나, 다른 사람이 PC를 사용하게 되면 이 쿠키를 아주 손쉽게 확인할 수 있다.

예를 들어 우리의 로그인 정보 같은 것들 말이다.

 

클라이언트는 총 300개의 쿠키를 저장할 수 있으며

하나의 도메인 당 20개의 쿠키를 가질 수 있다.

이 제한을 넘게 되면 가장 오래된 쿠키부터 삭제되고, 하나의 쿠키는 4KB(4096Byte)를 저장할 수 있다.

 

쿠키는 자동 로그인이나 사이트 광고창이 떴을 때 오늘은 그만 보기 등에도 쓰인다.

세션(Session)


세션은 서버와 클라이언트 간에 네트워크 연결이 지속적으로 유지되는 상태를 말한다.

세션의 경우 쿠키와 달리 통신에 대한 정보를 서버에 저장하며, 브라우저가 종료되면 삭제된다.

이렇게 상태를 유지시킴으로써 페이지를 이동할 때마다 사용자가 재로그인을 해야 하는 등의 불편함을 없애준다.

 

쿠키와 세션은 비슷한 역할을 하며, 동작 원리도 비슷하다.

큰 차이점이라고 하면 데이터가 저장되는 위치 정도일 것이다.

 

세션의 경우 데이터가 서버에 저장되고, 브라우저 종료 시 해당 데이터가 삭제되기 때문에

쿠키에 비해서 보안성이 높다는 장점이 있다.

또한 서버에서 관리하기 때문에 로그 관리가 용이하다는 장점도 있다.

 

하지만 서버에 저장되어있기 때문에 쿠키보다는 속도가 다소 느리고,

유저 정보가 많으면 메모리 과부하가 생길 수도 있다.

이런 서버 과부하를 줄이기 위해 쿠키와 세션을 적절히 나눠서 사용한다.

 

세션은 주로 로그인 유지 등에 사용된다.

 

캐시(Cache)


캐시는 쿠키와 유사하지만 목적성에 차이가 있다.

쿠키와 마찬가지로 서버에서 받은 데이터를 클라이언트 PC에 저장하는데,

쿠키가 로그인 정보, 사이트 정보 등을 저장하는 것과는 달리 캐시는 해당 사이트의

이미지, 영상 또는 용량이 큰 리소스 등의 데이터를 임시로 저장소에 저장한다.

 

캐시를 사용하지 않으면 이미지가 있는 페이지에 접속할 때마다 해당 이미지를

불러와야 하기 때문에 그만큼 페이지를 불러오는 속도가 느려지게 된다.

속도를 중시하는 한국인인 만큼 캐시는 필수요소라고 할 수 있다.

반응형

'Computer Science' 카테고리의 다른 글

MVC, MVP, MVVM  (0) 2022.01.06
OSI 7계층 (Open System Intercon)  (0) 2021.12.29
프레임워크(Framework)와 라이브러리(Library)  (0) 2021.12.15
큐(QUEUE)와 스택(STACK)  (0) 2021.12.11
배열(Array)과 리스트(List)  (0) 2021.06.07