ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [네트워크] 쿠키, 세션, 캐시 정의와 차이점 알아보기
    IT/네트워크 2022. 10. 9. 17:27

     

    아래 HTTP의 특징에서 Stateless 무상태라는 특징이 있었다. 이는 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식으로, 클라이언트와 첫 번째 통신에서 데이터를 주고받았다 해도, 두 번째 통신에서 이전 데이터를 유지하지 않는다. 하지만 실제로 데이터 유지가 필요한 경우가 많다. 예를들어 쇼핑몰에서 정보가 유지되지 않으면 상품을 살펴보다 장바구니로 이동, 장바구니에서 결제페이지로 이동할 때 매번 로그인을 다시해야 되는 일이 발생할 수 있다. 이때! 우리는 쿠키와 세션을 사용한다. 그 정의와 차이점에 대해 자세히 알아보도록 하자

     

     

    https://wonisdaily.tistory.com/109

     

    [네트워크] HTTP란? (특징, 구조, 상태, 메시지)

    📑 HTTP란? HyperText Transfer Protocol의 약자로 텍스트 기반의 통신규약이다. 인터넷에서 데이터를 주고받을 수 있는 프로토콜을 의미한다. 규약이 정해져 있기 때문에 모든 프로그램이 이 규약에 맞

    wonisdaily.tistory.com

     

     

    📑 쿠키 (Cookie) 

     

    쿠키는 사용자의 브라우저에 저장되고, 통신할 때 HTTP 헤더에 포함되는 텍스트 데이터 파일이다. 즉) 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청 시 서버로 전달한다. 이름, 값 만료기간, 경로 정보가 있고 키와 같은 값으로 구성되어 있다. 사용자는 브라우저의 설정 화면이나 개발자 도구에서 쿠키를 확인하고 수정, 삭제도 가능하다. 브라우저에 저장되기 때문에 누구나 쿠키에 입력된 값을 쉽게 확인 가능해서 보안성이 낮다는 특징이 있다. 따라서 주민번호, 신용카드 번호 등 보안에 민감한 데이터는 저장하면 안 된다.

     

     

    🔨 쿠키 통신 방법

     

    1) 최초 통신에서는 쿠키값이 없으므로, 일단 클라이언트는 Request를 한다.

    2) 서버에서 클라이언트가 보낸 Request Header에 쿠키가 없음을 판별한다. (UserId, Password, 조작 상태, 방문 횟수 등) 통신 상태를 저장한 쿠키를 Response한다. 

    3) 클라이언트의 브라우저가 받은 쿠키를 생성/ 보존 한다.

    4) 다음 연결부터, HTTP Header에 쿠키를 실어서 서버에 Request한다. 

     

     

     

    🔨 쿠키의 생명주기

     

     

    쿠키의 생명주기는 Expires, max-age로 설정할 수 있는데 Set-Cookie : expires = Sat, 08-Oct-2022 04:36:21 GMT와 같이 설정했을 경우 만료일이 되면 쿠키가 삭제된다. 세션쿠키는 만료 날짜를 생략하면 브라우저 종료시 까지만 유지되고 영속쿠키는 만료 날짜를 입력하면 해당 날짜까지 유지된다. 

     

     

     

    🔨 쿠키 사용 예시

     

    웹 사이트 방문 시 자동 로그인, 위시 리스트 저장, 팝업 보지않기, 사용자 이전 스크롤링, 뷰 설정, 광고 정보 트래킹 등등 ,,,, 

     

     

     

    📑 세션 (Session)

     

    세션은 세버에 저장되는 쿠키, 클라이언트와 서버의 통신 상태로 주로 중요한 데이터를 저장 시 사용한다. 브라우저를 종료할 때까지 유지되며, 사용자 로컬이 아닌 서버에 직접 저장되므로 세션 내의 데이터를 탈취하는 것이 어렵다. 따라서 보안성이 비교적 높다. 세션은 서버에 정보가 저장되어 있으므로 쿠키와 비교했을 때 속도는 상대적으로 느리다. 세션 사용 예시로는 로그인 정보 유지가 있다. 

     

     

    🔨 세션 통신 방법

     

    1) 클라이언트가 서버에 접속 시 , 세션 ID를 발급한다.

    2) 서버에서는 클라이언트로 발급해준 세션 ID를 쿠키를 이용해서 저장한다.

    3) 클라이언트는 다시 페이지에 접속할 때, 쿠키에 저장된 세션 ID를 서버에 전달한다.

    4) 서버는 Request Header에 쿠키 정보( 세션 ID)로 클라이언트를 판별한다. 

     

     

     

    📑 토큰 (Token) 

     

    세션 방식은 안전하고 효과적이지만 단점도 있다. 서버는 요청마다 함께 딸려 오는 세션 아이디를 바로바로 확인할 수 있도록 로그인한 사용자의 아이디를 메모리에 올려둔다. 메모리에 올려둔 데이터를 빠르게 확인할 수 있다는 장점이 있는 대신 공간이 한정된다. 예를들어 서버에 동시 접속하는 사용자가 많아진다면 ?? 메모리 공간이 부족해져서 서버에 부하가 걸릴 수 있다. 

     

    메모리 공간을 많이 차지하는 세션 방식의 대안은 로그인한 사용자에게 세션 아이디 대신 토큰을 발급해주는 것이다. 토큰에는 특수한 수학적 원리가 적용되어 있어 마치 위조방지 장치가 있는 지폐처럼 서버만이 토큰을 발행할 수 있다. 그렇기에 토큰을 받아간 사용자가 이를 쿠키로 저장해두고 필요할 때마다 제시하면 서버는 메모리를 따로 확인할 필요 없이 자기가 발급한 토큰임을 알아보고 사용자의 요청을 허가해주는 것이다. 이로인해 서버의 부하를 줄일 수 있다. 

     

    하지만 토큰에도 단점은 있는데, 예를 들어 스트리밍 서비스를 생각해보자. 동시 시청 1 기기만 가능하다고 할때 여러 기기에서의 로그인을 제한해야 한다. 이는 서버가 강제로 로그아웃을 시킬 수 있어야 하는데, 토큰 방식은 이것이 불가능하다.!! 한 번 발행하면 유효기간이 끝나기 전까지 따로 통제할 수 없기 때문이다. 따라서 토큰 정보를 탈취 당할 가능성이 높다. 이를 해결하기 위해 만료 기간을 짧게 지정해 피해를 줄일 수 있다.

     

    즉) 토큰은 세션과 쿠키를 적절히 섞었다고 생각하면 된다.  

     

     

     

    📑 캐시 (Cache)

     

    캐시는 리소스 파일들의 임시 저장소로, 같은 웹 페이지에 접속할 때 사용자의 PC에서 로드하므로 서버를 거치지 않아도 된다. 이전에 사용되었던 데이터는 다시 사용될 가능성이 높으므로 다시 사용될 확률이 있는 데이터들을 빠르게 접근 가능한 저장소에 저장한다. 

     

    만약 캐시가 없다면 데이터가 변경되지 않아도 계쏙 네트워크를 통해 데이터를 다운받아야 되는데, 인터넷 네트워크는 느리고 비싸다. 즉) 로딩 속도가 느리므로 느린 사용자 경험을 제공한다. 만약 캐시를 적용하면 캐시 가능 시간동안 네트워크를 사용하지 않아도 되므로 비싼 네트워크 사용량을 줄일 수 있다. 또한, 브라우저 로딩 속도가 빨라지므로 빠른 사용자 경험을 제공한다. 

     

    쿠키는 서버에 필요에 의해 클라이언트에 저장하는 데이터며 사용자의 수고를 덜어주는 목적이고, 캐시는 데이터의 전송량을 줄이고 서비스의 이용 속도를 높인다. 즉) 클라이언트 자체에서 페이지 로드를 효과적으로 하려고 저장하는 데이터를 의미한다. 우리는 캐시 덕분에 반복적으로 사용하는 콘텐츠를 빠르게 이용하고 데이터 사용량도 줄일 수 있다. 캐시는 인터넷 환경뿐만 아니라 컴퓨터의 하드웨어 안에서도 메모리 안에 들어있는 정보를 더 빨리 가져올 수 있도록 하는 CPU 캐시 등도 있다. 

     

     

     

     

    참고 :

    https://ryusae.tistory.com/7

    https://hongong.hanbit.co.kr/%EC%99%84%EB%B2%BD-%EC%A0%95%EB%A6%AC-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98-%ED%86%A0%ED%81%B0-%EC%BA%90%EC%8B%9C-%EA%B7%B8%EB%A6%AC%EA%B3%A0-cdn/

     

    반응형

    댓글

Designed by Tistory.