쿠키와 세션을 공부하기 전에 다음의 경우를 생각해 보자. 우리가 전화로 여행사를 통하여 항공기 좌석을 예약한다고 가정하자. 우선 항공기 예약을 하려면 통화 중인 여행사 직원에게 원하는 날짜 및 시간, 목적지 등과 함께 자신의 간단한 신상을 제공할 것이다. 그러면 여행사 측에서 고객에게 예약번호를 부여한 후 항공기 예약을 완료하게 되고 전화를 끊는다. 그러나 사정이 생겨 후에 예약 내용을 변경하거나 취소 하려면 여행사에 전화를 걸어 자신의 예약번호 또는 이름, 주민등록번호와 같이 자신이 누구임을 밝힐 수 있는 정보를 고객이 여행사에 먼저 알려 줘야 한다. 그래야 항공기의 예약을 변경 또는 취소할 수 있기 때문이다. 만약 여행사에 전화를 걸어 예약과 관련된 정보(예약번호, 이름, 주민등록번호 등)를 알려주지 않고 무작정 예약을 변경 또는 취소한다고 하면 여행사 직원은 너무나도 당연한 얘기지만 올바른 처리를 할 수 없을 것이다.
http 접속은 사용자(클라이언트 또는 웹브라우저)로부터 웹 서버로 접속 요구가 시작되면 서버가 접속을 요구한 클라이언트로 데이터(일반적으로 HTML)를 보내기위해 연결을 설정한다. 그 후 데이터를 전송하고 데이터가 전송되면 그 연결을 지속적으로 유지하지 않고 자동으로 끊는다. 그 후 서버는 또 다른 접속 요구를 기다리고 위와 같은 방법으로 다른 클라이언트로부터의 접속요청을 처리한다. 다음 그림은 http 접속 과정을 나타낸 것이다.
이 방법은 연결이 지속적으로 유지되는 것에 비해 서버 및 네트워크의 부하를 많이 줄일 수 있지만 서버와 클라이언트 사이에 지속적인 정보를 유지하기가 어렵다.
Daum(http://www.daum.net)을 예를 들어보자. Daum에서 웹메일을 이용하기 위해서는 로그인을 해야한다. 이 때 로그인이 성공적으로 이루어지면 웹메일을 이용할 수 있는 화면으로 이동하여 메일읽기, 메일보내기 등 다양한 서비스를 이용할 수 있다. 이 때 각 서비스는 메뉴화면에서 해당 메뉴를 클릭함으로써 이용할 수 있다. 그러나 서비스를 이용하기 위해 메뉴를 클릭한다는 것은 이미 로그인 이라는 하나의 http 접속 주기(요청, 연결, 전송, 해제)를 완료하고 새로운 접속을 요청하고 있음을 의미한다. 즉 이 상황은 앞의 예에서 전화를 걸어 항공기 예약을 마친후 나중에 어떠한 사정으로 인하여 예약을 변경하는것에 비유될 수 있다. 따라서 로그인 후 각종 서비스를 이용하기위해 클릭을 하여 서버로 새로운 접속을 요구하게 되면 서버는 접속을 요구한 사용자가 어떤 사용자인지를 파악할 방법이 없습니다. 이를 위해서는 전화를 통한 예약 변경시 전화를 걸어 예약번호와 같은 자신의 정보를 직원에게 알려주는 것과 같은 방법으로 사용자가 서버에게 자신을 알릴 수 있는 어떤 정보를 알려줘야 한다. 바로 이러한 일련의 작업은 쿠키 또는 세션이라 불리는 기술을 통해서 구현할 수 있다.