본문 바로가기

General_/Hard_Skill

[Network]쿠키, 세션, 토큰, 캐시

이번 글은 아주 잘 정리된 글에서 가져 왔습니다.따라서 자세한 내용은 아래의 사이트를 참조하면 좋다.

https://hongong.hanbit.co.kr/완벽-정리-쿠키-세션-토큰-캐시-그리고-cdn/

 

 

브라우저에 저장되는 정보 : 쿠키

쿠키는 크롬이나 사파리 같은 브라우저에 저장되는 작은 텍스트 조각이다. 브라우저는 사용자의 컴퓨터에 설치된 소프트웨어이므로 쿠키는 사용자가 갖고 있는 정보라고 할 수 있다.

번외) 쿠키 용어 유래 From wiki

"쿠키"라는 용어는 웹 브라우저 프로그래머 루 몬툴리가 만들어냈다. 이는 유닉스 프로그래머들이 사용한, 프로그램이 수신 후 변경하지 않은 채로 반환하는 데이터의 패킷을 의미하는 매직 쿠키라는 용어에서 비롯된 것이다.

 

서버가 나를 알아보는 방법 : 세션

웹사이트에 아이디와 비밀번호를 입력해서 로그인하면 해당 사이트의 회원에게만 허용된 기능들을 사용할 수 있다. 마이페이지를 클릭해서 내 정보를 볼 수도 있고, 회원 전용 게시판의 글쓰기 버튼을 클릭해서 질문을 남기거나 리뷰를 쓸 수도 있다. 다시 말해, 서버는 아이디와 비밀번호를 입력해 로그인에 성공한 사용자와 로그인한 다음 마이페이지 버튼을 누른 사용자가 동일 인물임을 알지 못하기 때문에 이런 번거로움을 해결하기 위해 세션을 사용한다.

세션은 사용자가 사이트에 한 번 로그인하면 “유효기간”이 끝날 때까지 더 이상 아이디와 비밀번호를 입력하지 않아도 되도록 사용자가 “이미 서버로부터 인증받았음을 증명해주는 세션이라는 증서”가 필요하다.

단, 세션을 사용하기 위해서는 메모리를 사용해야한다. 클라이언트의 요청마다 함게 달려 오는 세션 아이디를 바로바로 확인 하기 위해서 로그인한 사용자의 아이디를 메모리에 올려뒀기 때문이다.

 

세션과 다른 로그인 유지 방식 : 토큰

메모리 공간을 많이 차지하는 세션 방식의 대안은 로그인한 사용자에게 세션 아이디 대신 토큰을 발 급해주는 것이다. 이러한 토큰에는 특수한 수학적 원리가 적용되어 있어서 위조 방지 장치가 있는 지폐처럼 서버만이 유효한 토큰을 발행 할 수 있다.

여러 기기에서의 로그인을 제한하기 위해 필요한 때에 로그인되어 있는 사용자를 서버가 강제로 로그아웃을 시킬 수 있어야 하는데, 토큰 방식에서는 이것이 불가능하다. 한 번 발행한 토큰은 유효기간이 끝나기 전까지 따로 통제할 수 없기 때문에 세션에 비해 토큰 정보를 탈취 당할 가능성이 높다. 다만 만료 시간을 짧게 설정하여 피해를 최소화 할 수 있다.

 

  세션방식 토큰방식
장점 사용자의 상태를 원하는 대로 통제 가능 상태를 따로 기억해 둘 필요가 없음
한계 메모리에 로그인되어 있는 사용자의 상태를 보관해야하기 때문에 메모리가 많이 들어감(컴퓨터 자원을 많이 사용). 한 번 로그인한 사용자는 상태 통제 불가

 

전송량은 줄이고 속도는 높이고 : 캐시

한 번 전송 받은 데이터는 저장해 놨다가 다시 사용할 때 꺼내 쓴다면 반복적으로 서버에 데이터를 전송할 필요가 없다. 이때 사용되는 기술이 캐시(cash가 아니로 cache)이다.

(참고, 캐시는 인터넷 환경 뿐만 아니라 다양한 곳에서 사용되는 개념. 컴퓨터의 하드웨어 안에 메모리 안에 들어있는 정보를 더 빨리 가져올 수 있도록 하는 CPU Cache.)