ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Network] Cookie와 Session
    CS/Network 2021. 9. 15. 15:21

    이미지 출처: https://developpaper.com/thoroughly-understand-session-cookie-token/

    HTTP는 stateless이기 때문에 server는 client의 상태 정보를 유지하지 않는다. 하지만 최근 웹사이트를 확인해보면 로그인 정보를 저장하거나, 쇼핑몰 장바구니에 내가 이전에 넣어놨던 제품이 있는 등 상태를 가지고 있는 형태를 보인다. 이렇게 stateful 통신을 가능하게 하는 방식이 쿠키와 세션이다.

    쿠키 (Cookie)

    쿠키란?

    • 쿠키는 key, value 형태로 클라이언트 로컬에 저장된다.
    • 쿠키 만료 시간을 명시할 수 있으며, 만료 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.
    • 클라이언트에 총 300개의 쿠키를 저장할 수 있고, 하나의 도메인 당 20개의 값만 가질 수 있다.
    • 하나의 쿠키는 4KB까지 저장 가능하다.
    • Response header에 Set-Cookie 속성을 사용하여 쿠키를 만들 수 있다.

    쿠키의 구성 요소

    • Name: 쿠키를 구별하는 데 사용되는 이름
    • Value: 쿠키에 저장된 값
    • Expires: 쿠키 만료 시간
      • 쿠키에 만료일이 포함되어 있으면 Persistent Cookie로 간주
      • Max-Age를 통해 지정한 만료일이 되면 쿠키가 제거됨
    • Domain: 쿠키가 사용하는 도메인 지정
    • Path: 쿠키를 전송할 경로 지정
    • Secure: 보안 연결 설정

    쿠키의 종류

    • Session Cookie: 만료기간을 설정하고 메모리에만 저장되며 브라우저 종료 시 쿠키 삭제
    • Persistent Cookie: 장기간 유지되는 쿠키, 파일로 저장되어 브라우저 종료와 관계없이 사용 가능
    • Secure Cookie: HTTPS에서만 사용, 쿠키 정보가 암호화되어 전송
    • Third-Party Cookie: 방문한 도메인과 다른 도메인의 쿠키, 보통 광고, 배너 등을 관리할 때 유입 경로를 추적하기 위해 사용

    쿠키의 동작 방식

    1. 클라이언트가 서버에게 HTTP request를 보냄
    2. 서버에서 쿠키 생성
    3. HTTP header에 쿠키를 포함해 response
    4. 브라우저가 종료되어도 쿠키 만료 기간(Expires)이 있다면 클라이언트에서 보관하고 있음
    5. request 시 HTTP header에 쿠키를 포함시켜 보냄
    6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때, 쿠키를 업데이트하여 변경된 쿠키를 HTTP header에 포함시켜 response

     

    세션 (Session)

     

    세션이란?

    • 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버에서 관리한다.
    • 서버에서는 클라이언트를 구분하기 위해 session id를 부여하고, 브라우저를 종료할 때까지 인증 상태를 유지한다.
    • 사용자 정보를 서버에 두기 때문에 쿠키보다 보안상 이점이 있지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다.

    세션의 동작 방식

     

    1. 클라이언트가 서버에게 Http request를 보냄
    2. 서버에서 session id를 발급해 클라이언트에게 reponse
    3. 클라이언트는 session id를 쿠키를 사용해 저장
    4. 이후 클라이언트 서버에 request할 때, 이 쿠키의 session id를 HTTP header에 포함해 request
    5. 서버는 session id를 통해 세션에 있는 클라이언트 정보를 가지고 요청을 처리하여 response

     

    쿠키와 세션의 차이

    • 쿠키와 세션은 비슷한 역할을 하며, 세션도 결국 쿠키를 사용하기 때문에 쿠키와 세션의 동작 원리 또한 비슷하다.
    • 가장 큰 차이점은 사용자의 정보가 저장되는 위치이다. 쿠키는 서버 자원을 전혀 사용하지 않으며, 세션은 서버 자원을 사용한다.
    • 보안: 보안 면에서는 세션이 더 우수하다. 그 이유는 쿠키는 클라이언트 로컬에 저장되기 때문에 request 시 스니핑의 우려가 있지만 세션은 쿠키를 사용해 session id만 저장하기 때문에 비교적 보안성이 좋다.
    • 응답 속도: 응답 속도는 쿠키가 더 빠르다. 그 이유는 세션은 서버에서 처리가 필요하기 때문이다.
    • 라이프 사이클: 세션은 만료 기간을 지정해도 브라우저를 종료하면 사라지지만, 쿠키는 만료 기간을 둔다면 브라우저를 종료해도 정보를 유지할 수 있다.

    Reference
    https://interconnection.tistory.com/74
    Computer Networking: A Top-Down Approach

    'CS > Network' 카테고리의 다른 글

    [Network] DNS 동작 원리  (0) 2021.09.29
    [Network] HTTP vs HTTPS  (0) 2021.09.29
    [Network] TCP vs UDP  (0) 2021.09.28
    [Network] TCP 연결과 해제  (0) 2021.09.28
    [Network] HTTP Methods - GET, POST, PUT, PATCH, DELETE  (0) 2021.09.27

    댓글

Designed by Tistory.