ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL.9 쿠키_ 세션_ 캐시_ 그리고 토큰_1
    TIL 2020. 10. 17. 23:39
    728x90

    ## HTTP ##

    HyperTextTransferProtocol 의 약자이다.

    하이퍼텍스트를 빠르게 교환하기 위한 프로토콜의 일종으로 즉, HTTP는 서버와 클라이언트 사이에서 어떻게 메시지를 교환할지를 정해놓은 규칙이다.

    웹 사용자는 HTTP를 통해 웹 페이지를 서버에 요청(Request)하고 서버는 웹 사용자(클라이언트)에게 응답(Response)하는 구조로 HTTP는 요청과 응답으로 구성되어 있다.

    하지만 HTTP는 상태를 저장할수 없는 프로토콜로써 매번 요청 - 응답 후 그 페이지에 있는 정보를 매번 날려버린다. 

    따라서 웹사이트에서 사용자 정보 및 페이지 정보를 저장해야하는 경우는 반드시 필요하기 때문에 

    쿠기, 세션, 캐시, 토큰 등으로 HTTP가 저장하지 못하는 정보를 제공해주는 기능을 한다.

     

    기본적으로 HTTP는 stateless 프로토콜로도 불리운다.

    ## Stateless 란

    이유는 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식이기 때문인데.

    클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않다는것이다.

    (서버로 부터 독립적으로 명령을 실행하기 때문이고, 그것은 웹 사용자의 입력에 재 응답할 필요가 없기 때문이다.

    다시 말해, 클라이언트의 첫번째 통신에서 데이터를 받았다 해서 두번째 통신에서 이 데이터를 계승하지 않다는것이다.)

    이처럼

    1. 통신이 끝나면 상태를 유지하지 않는 특징

    2. 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특징

    이 두가지 근거에 따라 쿠키와 세션을 이용하는데 예를 들어,쿠키와 세션을 사용하지 않으면 쇼핑몰에서 옷을 구매하려고 로그인을 했음에도, 페이지를 이동할 때 마다 계속 로그인을 해야 하고

    쿠키와 세션을 사용했을 경우, 한 번 로그인을 하면 어떠한 방식에 의해서 그 사용자에 대한 인증을 유지하게 된다.


    실제 서비스에서는 stateless 보단 stateful 기능이 더욱 필요하게 되는데 

    ## Stateful이란

    서비스간 작업 처리의 상태가 항상 공유되고 있는 상태를 뜻한다.

    가장 대표적으로 클라이언트 측이 사용 중인 웹 어플리케이션에서 업데이트되는 내용 또는 서버 측 어플리케이션에서 업데이트되는 내용이 항상 서로에게 영향을 주는 어플리케이션으로, 온라인 뱅킹이나 실시간 투자 지표 어플리케이션 등이 있다. 이들은 한 번 요청되는 것으로 끝나는 것이 아니라, 클라이언트와 서버가 지속적으로 서로에게 질의를 통해 각 상태를 반영한다.

    따라서 한번 연결된 두 관계는 어느 한 쪽이 일방적으로 끊지 않는 이상 유일한 관계를 가진다

    [출처] Stateful / Stateless Application|작성자 다꾸니스

     

    하단의 버튼 클릭 시 블로그 정보를 확인할 수 있어요 : 네이버 블로그

    One of Alumni of BigData Lab on Kookmin Univ. I am a Software Engineer in Marqvision on Seoul branch office. The Company is located in U.S.

    blog.naver.com

    따라서, 개발자는 이러한 stateless 특성위에 stateful 기능과 같은 시스템을 개발할 줄 알아야한다.\

     

    ## 쿠키 ##

    쿠키란 ?

    웹사이트에 접속할 때 자동적으로 만들어지는 임시 파일로 이용자가 본 내용, 상품 구매 내역, 신용카드 번호, 아이디(ID), 비밀번호, IP 주소 등의 정보를 담고 있는 일종의 정보파일이다. (사용자 정보를 클라이언트 로컬에 저장함)

    • 사용자의 정보를 클라이언트 하드에 직접 저장되기 때문에 사라지지 않으며, 직접 삭제 하거나 만료되어야 삭제가 된다.
    • 클라이언트 PC에 직접 저장되기 때문에 다른 사용자에 의해 임의로 변경될 가능성이 존재해 보안성이 낮다.
    • 사용 예시 : 자동 로그인, 로그인 하기 전의 쇼핑몰의 장바구니, 팝업에서 "오늘 더 이상 창을 보지 않음" 등 사용자의 편의를 위하되, 지워지거나 조작이 되어도 상관없는 보안성이 낮은 정보를 저장하는데 쓰인다.

    쿠키의 구성 요소

    • 이름 : 각각의 쿠키를 구별하는 데 사용되는 이름
    • 값 : 쿠키의 이름과 관련된 값
    • 유효시간 : 쿠키의 유지시간
    • 도메인 : 쿠키를 전송할 도메인
    • 경로 : 쿠키를 전송할 요청 경로

    쿠키의 동작 방식

    https://t1.daumcdn.net/cfile/tistory/114DAD314CFEE6F13B (출처)

    1. 클라이언트가 페이지를 요청
    2. 서버에서 쿠키를 생성
    3. HTTP 헤더에 쿠키를 포함 시켜 응답
    4. 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있음
    5. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
    6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경 할 필요가 있을 때 쿠키를 업데이트 하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답

    출처: https://interconnection.tistory.com/74 [라이언 서버]

    sinsomi.tistory.com/entry/%EC%8B%A0%EC%9E%85-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-Session%EA%B3%BC-Cookie-%EC%B4%88%EC%BD%94%EB%8D%94

    m.blog.naver.com/dmswjd93/221284561424
    interconnection.tistory.com/74
    ryusae.tistory.com/7

     

    [HTTP] 쿠키/세션/캐시의 차이점은?

    0. HTTP 의 특징 (1) Stateless 프로토콜 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식이다. 클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유��

    ryusae.tistory.com

     

    ## 세션 ##

    세션이란?

    • 방문자가 웹에 접속해서 웹 브라우저를 종료하는 시점까지를 뜻한다. (웹 브라우저를 하나 여는 순간 세션이 하나가 생겨나고, 웹 브라우저를 종료하면 해당 세션이 삭제된다.)
    • 세션은 쿠키를 기반으로 사용자 정보 파일을 저장하지만, 클라이언트가 아닌 서버에 저장이 된다
    • HTTP는 기본적으로 stateless 프로토콜로 이전 상태를 저장하지 않기 때문에 만약 세션을 유지하지 않게 되면 웹 사이트에 요청(Request)를 보낼때마다 로그인을 계속 해줘야 한다.
    • 사용 예시 : 로그인과 같은 보안성이 중요한 작업을 실행할 경우

     

    세션의 특징

    • 각 클라이언트에게 고유 ID를 부여
    • 세션 ID로 클라이언트를 구분해서 클라이언트의 요구에 맞는 서비스를 제공
    • 보안 면에서 쿠키보다 우수
    • 사용자가 많아질수록 서버 메모리를 많이 차지하게 됨

    세션의 동작 방식

    1. 클라이언트가 서버에 접속 시 세션 ID를 발급받습니다.
    2. 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있습니다.
    3. 클라리언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 서버에 전달해서 사용합니다.
    4. 서버는 세션 ID를 전달 받아서 별다른 작업없이 세션 ID로 세션에 있는 클라언트 정보를 가져옵니다.
    5. 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답합니다.

    https://sinsomi.tistory.com/entry/%EC%8B%A0%EC%9E%85-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-Session%EA%B3%BC-Cookie-%EC%B4%88%EC%BD%94%EB%8D%94(출처)



    출처: https://interconnection.tistory.com/74 [라이언 서버]

     

    ## 쿠키와 세션의 차이 ##

    1. 저장위치 ( 쿠키 : 클라이언트 // 세션 : 서버)
    2. 보안성 (쿠키 : 낮음 // 세션 : 높음)
    3. 라이프 사이클 (쿠키 : 브라우저 종료해도 삭제하기 전까지 남아 있음 // 세션 : 브라우저 종료시 삭제)

    # 세션도 쿠키와 같이 만료시간을 정할 수 있으나, 브라우저가 종료되면 역시 삭제됨!

       4. 속도 ( 쿠키 : 빠름 // 세션 : 상대적 느림 (서버에 정보가 있기 때문)

    https://homzzang.com/b/free-1208(출처)
    https://ryusae.tistory.com/7(출처)

     

    728x90
Designed by Tistory.