HTTP 쿠키와 세션

@장태근· April 06, 2025 · 4 min read

웹은 지식을 공유하기 위해 등장했다. 웹을 동작시키는 핵심은 HTTP다. HTTP는 서버와 클라이언트의 요청을 기억하지 않는 무상태(Stateless) 프로토콜로 설계됐다. 초기에는 간단한 요청과 응답을 주고받았기 때문에 충분했다.

쿠키(Cookie)

웹은 상업적으로 발전하기 시작했다. 온라인 쇼핑몰 같은 맞춤 서비스를 제공하기 위해서는 이전 요청을 기억해야 한다. 1994년, 문제를 해결하기 위해 넷스케이프(Netscape) 개발자 루 몬틀리(Lou Montulli)는 쿠키(Cookie)를 고안했다.

쿠키는 사용자가 웹 사이트에 접속할 때 서버가 브라우저에게 전달하는 작은 데이터 조각이다. 브라우저는 로컬에 데이터를 저장하고, 다시 방문할 때 요청과 쿠키를 함께 전달한다. 서버는 쿠키를 통해 사용자를 식별한다. 덕분에 사용자는 매번 로그인하지 않아도 맞춤형 서비스를 제공받을 수 있다.

세션(Session)

하지만 쿠키는 브라우저에 저장하기 때문에 보안상 문제와 쿠키의 한계가 있었다. 단점을 보완하기 위해 1995년 세션(Session)이 등장했다.

세션은 서버가 직접 사용자의 정보를 관리하고 저장한다. 서버는 클라이언트의 요청마다 세션이라는 저장소를 생성하고 세션 아이디를 쿠키에 담아 응답한다. 클라이언트가 서버로 다시 요청할 때 세션 아이디를 함께 전달하면, 서버는 사용자를 쉽게 판별할 수 있다.

따라서 쿠키는 세션을 위한 열쇠가 됐고, 세션은 서버에서 더욱 안전하고 효과적으로 사용자 상태를 관리할 수 있다.

정리

  • HTTP는 상태를 유지하지 않는 무상태 프로토콜이다.
  • 상태를 유지하기 위해 쿠키와 세션이 등장했다.
  • 쿠키는 클라이언트에서 세션을 식별하는 열쇠 역할을 한다.
  • 세션은 서버에서 관리되는 사용자 상태 관리 저장소다.

마치며

태산같던 HTTP도 시작은 간단했다. 문제를 해결하기 위해 점점 새로운 개념을 도입한 점이 가장 흥미로웠다. 이어지는 캐시, 토큰과 같은 기술도 어떤 문제를 해결하기 등장했는지 중점으로 접근하면 개념 정리에 유용할 것 같다.

참고 자료

@장태근
개발자. 명료한 생각이 명료한 글이 된다.