[네트워크] 쿠키와 세션

Yoon Uk·2023년 4월 30일
0

네트워크

목록 보기
28/34
post-thumbnail

쿠키란?

쿠키란 웹 서버가 웹 브라우저에게 보내는 작은 데이터 조각입니다. 웹 브라우저는 이 쿠키를 저장하고 다음에 같은 웹 서버에 요청을 보낼 때 쿠키를 함께 보냅니다.
쿠키는 HTTP 프로토콜의 상태유지(stateful) 기능을 제공합니다.
HTTP 프로토콜은 상태가 없는(stateless) 프로토콜이기 때문에, 서버는 클라이언트의 이전 요청과 현재 요청이 연관되어 있는지 알 수 없습니다.
쿠키를 사용하면, 서버는 클라이언트가 보낸 쿠키를 통해 클라이언트의 상태나 선호도 등을 파악할 수 있습니다. 예를 들어, 쿠키에 로그인 정보나 장바구니 정보 등을 저장할 수 있습니다.

쿠키의 장점과 단점

장점

  • 간단하고 편리하게 클라이언트의 상태 정보를 저장하고 관리할 수 있습니다.

  • 서버의 부하를 줄일 수 있습니다.
    쿠키에 저장된 정보는 서버에 요청할 때마다 전송되므로, 서버에서 별도로 데이터베이스나 세션을 관리할 필요가 없습니다.

단점

  • 보안에 취약합니다.
    쿠키는 평문으로 저장되고 전송되므로, 중간에 탈취되거나 변조될 수 있습니다. 또한, 쿠키에 저장된 정보는 클라이언트에서도 수정할 수 있으므로, 신뢰할 수 없습니다.

  • 용량과 개수에 제한이 있습니다.
    쿠키는 하나당 4KB 이하의 용량을 가지며, 도메인당 20개 이하의 쿠키만 저장할 수 있습니다. 따라서, 많은 양의 정보를 저장하기에는 부적합합니다.

  • 쿠키는 문자열 형태로만 데이터를 저장할 수 있습니다.

  • 네트워크 트래픽을 증가시킵니다.
    쿠키는 서버에 요청할 때마다 전송되므로, 불필요한 데이터가 네트워크에 부하를 줄 수 있습니다.

세션이란?

세션은 HTTP 프로토콜의 무상태성을 보완하기 위한 기술입니다.
HTTP 프로토콜은 클라이언트와 서버가 요청과 응답을 주고받은 후에 연결을 끊어버리기 때문에, 서버는 클라이언트의 상태를 알 수 없습니다. 이런 특성은 웹 서비스에서 로그인, 장바구니, 채팅 등의 기능을 구현하기 어렵게 만듭니다.

세션서버에 클라이언트의 상태 정보를 저장하는 방법입니다.
세션은 클라이언트가 처음 접속할 때 서버에 생성되고, 고유한 세션 ID가 부여됩니다. 이 세션 ID는 쿠키나 URL에 담겨서 클라이언트에게 전달됩니다.
클라이언트는 다시 요청을 보낼 때 세션 ID를 함께 보내서 자신을 식별합니다. 서버는 세션 ID를 통해 클라이언트의 정보를 찾아서 적절한 응답을 줍니다.

세션의 장점과 단점

장점

세션을 통해 HTTP 상태유지를 하는 장점은 다음과 같습니다.

  • 쿠키보다 보안성이 높습니다.
    쿠키는 클라이언트에 저장되기 때문에 변조나 탈취될 위험이 있습니다. 세션은 서버에 저장되기 때문에 외부에서 접근하기 어렵습니다.

  • 쿠키보다 용량 제한이 없습니다.
    쿠키는 한 도메인당 4KB 이하의 데이터만 저장할 수 있습니다. 세션은 서버의 메모리나 디스크에 저장할 수 있기 때문에 용량 제한이 없습니다.

  • 쿠키보다 다양한 데이터 타입을 저장할 수 있습니다.
    쿠키는 문자열 형태로만 데이터를 저장할 수 있는 것에 반해 세션은 객체나 배열 등의 복잡한 데이터 타입도 저장할 수 있습니다.

단점

세션을 통해 HTTP 상태유지를 하는 단점은 다음과 같습니다.

  • 서버의 부하가 증가합니다.
    세션은 서버의 자원을 사용하기 때문에 많은 세션이 생성되면 서버의 메모리나 디스크 공간이 부족해질 수 있습니다.

  • 네트워크 비용이 증가합니다.
    세션 ID를 전달하기 위해서는 쿠키나 URL에 추가적인 데이터를 붙여야 합니다. 이는 네트워크 트래픽을 증가시킵니다.

  • 분산 환경에서 관리하기 어렵습니다.
    여러 대의 서버가 하나의 웹 서비스를 제공하는 경우, 각 서버마다 세션 정보를 동기화해야 합니다. 이는 복잡한 로직과 추가적인 비용을 발생시킵니다.

0개의 댓글