본문 바로가기
OS & Network

Cookie(쿠키) / Cache(캐시) / Session(세션) / Token(토큰)

by 새발개발JA 2022. 4. 13.
반응형

 

 

 세션 / 쿠키 / 캐시 / 토큰 

기술면접과 정처기의 단골문제 였던 녀석들 😎

하지만 정작 일하다 마주치면 순간 햇갈려서 다시 블로그를 찾아보게 만들었던 녀석들이다. 

이번에야 말로 확실하게 정리를 해보자. 

(아래 글은 제가 이해한 방식대로 정리해본 포스팅입니다. 혹시 잘못된 정보가 있다면 알려주세요!)

 


Cookie(쿠키) / Cache(캐시) / Session(세션) / Token(토큰)

(이들의 공통 키워드는 데이터를 "임시저장" 이라는 개념에 사용되는 아이들이다.

개인적으로 유저 정보 등의 임시 데이터들은 매번 서버를 찔러서 가져오기 힘드니 

잠시 브라우저나 웹서버 내에서 hold(저장)하는 느낌이었다.)

 

내 예상이 얼추 맞았다. 이론적으로 알아보니

http 프로토콜은 통신 후, 클라이언트랑 칼같이 연을 냅다 끊어 버린다. 그러니 당연히 데이터가 유지되지 않는다. (새로고침하면 날라간다.)

하지만 살다보면 유지해야하는 관계가 있듯 어떤 데이터는 유지할 필요가 있다.

 

쿠키는,

- 쿠키는 웹사이트 접속시 내 컴퓨터에 저장되는 작은 텍스트 파일이다.

- 웹사이트에서는 쿠키를 통해 어떤 기기로 접속했는지 인식하고, 일부 데이터를 저장한다.

- 쿠키에는 만료일을 지정할수있다. 만료일이 지나면 알아서 삭제된다.

 

(쿠키값을 주어서 배너나 팝업창 등을 컨트롤한 적이 있다.)

 

캐시는, 

- 캐시는 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소이다.

- 저장 공간이 작지만 성능이 빠르다.

- 캐시에 미리 데이터를 복사해 놓으면 데이터에 빠르게 접근할 수 있다. 

- 이미지나 썸네일 같이 자주 쓰이는 데이터를 Memory에 저장 하였다가 사용하는 것을 의미한다.

 

(이미지 등이 캐싱되어서 가끔 강력새로고침을 하지 않으면 프로필사진을 바꿔도 그대로 남아있는 경우가 있다.)

 

 

세션은,

- 세션은 데이터들이 접속 중인 웹 서버에 저장된다. 

- 쿠키보다는 상대적으로 안전하다 ( 브라우저를 닫거나 서버에서 세션을 삭제하면 없어짐 ) 

- 저장데이터에 제한이 없다 ( 서버자원이 소모되니 좀 부담스러울 수도(?) )

- 유저가 접속할 때 부여되는 세션ID를 사용해서 클라이언트를 구분한다.

 

(장기간 로그인 유지를 위해 세션의 시간을 설정해준 적이 있다.)

 

 

토큰은,

- 토큰은 쉽게말해 난수 형태의 문자열이다. 

- 이 문자열(token) 은 데이터에 접근하는 유저들에게 권한을 부여하는 카드키(?) 같은 느낌으로 사용된다.

- 가장 많이 사용되는 access token 을 예로 들자면 웹사이트에 로그인할 때, 유저에게 로그인할 수 있도록 허락하는 허가증(?) 같은 의미이다. 

 

(토큰을 통해 사용자의 uid를 알아낸 적이 있다.)

세션 계층에서는 두 응용 프로그램의 대화를 관리하려고 토큰(token)이라는 특수 메시지를 사용한다. 토큰이란 일련의 문자열을 구분할 수 있는 단위 또는 시스템에서 보안 객체의 접근 관리에 사용되는 객체 또는 장치를 말한다. 토큰의 보유는 해당 토큰에 부여된 특정 권리를 배타적으로 소유한다는 의미를 갖는다. 

 

  • 접근 토큰(access token)이 가장 많이 사용되는 토큰 형식으로 시스템이나 소프트웨어에서 어떤 특정한 기능이나 데이터에 접근하는 대상에게 권한을 부여하는 데 사용된다. 통상 난수 형태의 문자열로 구성된다. 예를 들어, 웹 서비스 제공자는 사용자의 아이디, 패스워드 또는 신용카드 등의 정보를 사용해 만든 접근 허가 토큰을 사용자에게 발행하고 접속 시 사용하게 하여 개인정보 누출을 방지하고 안전한 서비스를 제공할 수 있다.
  • 보안 토큰(security token)은 하드웨어 저장 장치로 특정 전자기기의 제한된 자원(리소스)의 사용 권한을 제어한다. 예로 유에스비(USB) 보안 토큰이 있다.
  • 세션 토큰(session token)은 통신망에서 서버와 클라이언트 간 세션(논리적 연결) 후 사용된다. 인터넷 서버가 하이퍼텍스트 전송 규약(HTTP: Hypertext Transfer Protocol)을 통해 클라이언트와 연결된 후 상호간 데이터 교환을 위해 클라이언트에 부여하는 객체이다. 세션 식별자(Session ID)로 표현하기도 한다. 그리고 링 또는 버스 형태의 네트워크에서 장비 간 전송되는 신호의 순서이다.

 

 

 

ref:

http://wiki.hash.kr/index.php/%EB%8D%B0%EC%9D%B4%ED%84%B0_%ED%86%A0%ED%81%B0_(%EB%AC%B8%EC%9E%90%EC%97%B4)

https://mangkyu.tistory.com/69

https://kobrekim.com/footer-ko-kr/cookie-policy-ko-kr/what-are-cookies-and-why-we-use-them-ko-kr/

https://cheershennah.tistory.com/135

 

 

 

 

반응형

댓글