쿠키와 세션은 인터넷 사용자라면 누구나 많이 들어본 단어이지만, 실상 제대로 그 개념에 대해 알고 있는 사람은 드뭅니다. 저 또한 마찬가지이기에 글을 쓰면서 정리를 해보도록 하겠습니다.
쿠키와 세션을 사용하는 이유?
서버와 클라이언트(웹 브라우저)가 통신을 할 때 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊어지는데
따라서 서버는 클라이언트가 누구인지 계속 인증을 해줘야 합니다. 그러나 이것은 매우 귀찮고 번거로운 일이며,
또한 웹페이지의 로딩을 느리게 만드는 요인이 되기도 합니다. 이러한 번거로움을 해결하는 방법이 바로 쿠키와 세션을 사용하는 것입니다.
정리하면, 클라이언트의 정보를 유지하고 관리하기 위해 사용하는 것이 쿠키와 세션이라 할수 있습니다.
1. 쿠키란?
쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다.
이 데이터파일은 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있습니다. 또한 쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조하며, 로컬이 동일한 웹사이트를 방문할 때마다 브라우저가 해당 정보를 서버로 전송합니다.
클라이언트당 300개까지 쿠키저장이 가능하며, 하나의 도메인당 20개의 값만 가질 수 있고, 하나의 쿠키값은 4KB까지 저장합니다.
정리하자면,
1. 쿠키는 클라이언트(브라우저) 로컬에 저장되는 작은 데이터 파일입니다.
2. 쿠키에는 키와 값이 들어있으며, 이를 이용해 데이터를 저장하고 관리합니다.
3. 쿠키에는 사용자 인증이나 기타 상태 정보의 유효 기간을 설정할 수 있습니다. 유효 기간 동안은 브라우저가 종료되어도 인증이 유지됩니다.
4. 클라이언트당 저장 가능한 쿠키의 개수는 일반적으로 300개까지입니다.
5. 하나의 도메인당 최대 20개의 쿠키 값을 가질 수 있습니다.
6. 하나의 쿠키 값은 보통 4KB 크기까지 저장할 수 있습니다
2. 세션이란?
세션은 서버 컴퓨터 측에서 사용자의 정보를 관리하기 위한 데이터 구조입니다.
각 클라이언트마다 고유한 세션을 생성하여 클라이언트의 상태 정보를 서버에 저장하는데, 클라이언트의 정보를 서버의 램에 담아두기 때문에 클라이언트마다 유지되는 정보를 쉽게 관리할 수 있습니다.
또한 세션의 정보는 메모리에 담겨있기 때문에 서버가 종료되거나 서비스가 다시 시작될 때 세션 정보는 사라집니다. 이를 방지하기 위해 데이터베이스나 다른 영구 저장소에 세션 데이터를 저장할 수 있습니다.
정리하자면,
1. 클라이언트마다 고유한 세션 식별자를 부여하여 사용하기에 서버는 각 클라이언트의 정보를 구분할 수 있습니다.
2. 세션은 서버 측에서 관리되므로 클라이언트가 정보를 조작하거나 변경할 수 없습니다.
3. 세션은 서버의 램에 저장되기 때문에 브라우저를 종료해도 클라이언트 정보는 보존됩니다.
4.세션의 정보가 메모리(램)에 담겨있기 때문에 서버가 종료되거나 서비스가 다시 시작될 때 세션 정보는 사라집니다. 이를 위해서 데이터베이스 또는 다른 영구저장소에 세션데이터를 저장합니다.
4. 그러나 서버의 램은 한정적이므로 너무 많은 세션 데이터가 쌓이면 성능 문제가 발생할 수 있습니다.
5. 보안성이 쿠키보다 높습니다. 클라이언트 측에서 직접 변경할 수 없으며, 보안적인 이점을 제공합니다.
즉, 서버의 정보를 클라이언트에 담아두면 쿠키, 클라이언트 정보를 서버에 담아두면 세션 이라 할수 있습니다.