HTTP 프로토콜은 웹에서 데이터를 주고받는 데 사용되는 통신 규약이다. 그러나 HTTP 프로토콜은 기본적으로 상태를 유지하지 않는 비연결성, 무상태성을 특징으로 하는 프로토콜이다.
이로 인해 웹 서버는 클라이언트가 동일한 사용자인지를 식별하는데 어려움을 겪을 수 있다. 세션과 쿠키는 이러한 문제를 해결하기 위해 도입된 메커니즘이다.
세션은 웹 애플리케이션 서버와 클라이언트 사이에서 유지되는 상태 정보이다. 일반적으로 세션은 서버측에서 관리되며, 클라이언트가 서버에 접속하면 서버는 클라이언트에게 고유한 세션 ID를 부여한다 .이 세션 ID는 보통 쿠키를 통해 클라이언트에 저장되어 다음 요청 시에 사용된다.
클라이언트가 서버에 접속하면, 서버는 새로운 세션 ID를 생성하고 클라이언트에게 전달한다.
클라이언트는 세션 ID를 쿠키로 저장하거나 URL 매개변수에 포함하여 서버에 전달한다.
서버는 세션 ID를 사용하여 클라이언트를 식별하고, 클라이언트의 요청을 처리하며 상태 정보를 유지한다.
보안성
세션 ID는 쿠키로 저장되므로 클라이언트는 세션 데이터를 직접 수정할 수 없다.
서버 부하
세션 데이터는 서버 측에서 관리되므로 서버에 부하를 줄 수 있다.
세션 만료
일정 시간이 지나면 세션은 자동으로 만료될 수 있다.
쿠키는 클라이언트 측에서 사용자 정보를 유지하는 데 사용되는 작은 데이터 조각이다. 클라이언트가 서버에 요청을 보낼 때, 쿠키는 요청과 함께 전송되며 서버는 이를 읽어 클라이언트를 식별하고 상태 정보를 유지한다.
서버가 응답을 생성할 때, 쿠키를 생성하고 클라이언트에게 전달한다.
클라이언트는 쿠키를 저장하고, 이후 서버에 요청을 보낼 때마다 쿠키를 함께 전송한다.
서버는 클라이언트가 전송한 쿠키를 읽어 사용자를 식별하고, 필요한 상태 정보를 유지한다.
지속성
쿠키는 만료 날짜를 설정하여 일정 기간 동안 유지될 수 있다.
용량 제한
클라이언트가 보관할 수 있는 쿠키의 개수와 크기에는 제한이 있다.
클라이언트 저장소
쿠키는 클라이언트 측에 저장되므로 서버에 부하를 줄이는 데 도움이 된다.
저장 위치
세션은 서버에 저장되고, 쿠키는 클라이언트에 저장된다.
데이터 보안
세션은 서버에 저장되기 때문에 보안성이 더 높은 반면, 쿠키는 클라이언트에 저장되므로 보안에 취약할 수 있다.
용도
세션은 주로 로그인 상태 유지, 장바구니 등과 같은 사용자 상태 정보를 유지하기 위해 사용된다. 쿠키는 사용자 선호도, 사용자 추적 등과 같은 다양한 용도로 사용된다.
저장 용량
세션은 서버 메모리에 저장되므로 용량 제한이 없지만, 쿠키는 클라이언트 측에 저장되여 용량 제한이 있을 수 있다.
세션과 쿠키는 웹 개발에서 중요한 개념이고, 각각의 특징과 활용 방법을 이해하는 것은 웹 애플리케이션 개발과 보안에 필수적이다. 세션은 서버에 데이터를 저장하여 보안성을 강화하고, 쿠키는 클라이언트에 데이터를 저장하여 서버 부하를 줄인다. 이러한 차이점을 이해하고 적절하게 활용하여 웹 애플리케이션을 개발하는 것이 좋다.