Si, las cookies viajan en la cabecera HTTP, ejemplo al entrar al forosdelweb, tu navegador realiza una petición como la siguiente
Código:
GET / HTTP/1.1
Host: www.forosdelweb.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; es-ES; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Y el servidor puede responder algo similar a
Código:
HTTP/1.1 200 OK
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Transfer-Encoding: chunked
Date: Tue, 08 Mar 2011 11:54:48 GMT
Content-Type: text/html; charset=ISO-8859-1
Server: Apache
Set-Cookie: fdwlastvisit=1299585288; expires=Wed, 07-Mar-2012 11:54:48 GMT; path=/; domain=.forosdelweb.com
Set-Cookie: fdwlastactivity=0; expires=Wed, 07-Mar-2012 11:54:48 GMT; path=/; domain=.forosdelweb.com
Cache-Control: private
Pragma: private
X-UA-Compatible: IE=7
Set-Cookie: vbseo_loggedin=deleted; expires=Mon, 08-Mar-2010 11:54:47 GMT; path=/
Vary: Accept-Encoding
Keep-Alive: timeout=2, max=150
Como puedes ver, en la respuesta del servidor, es donde el servidor envía la cookie, en ella define ciertos parametros como su nombre, valor, expiración y path. Tambien es posible definir una cookie por el lado del cliente con Javascript.
Respecto al tema de la expiración, depende de quien la generá (el servidor o el cliente por javascript) de todas formas respetar dicha expiración depende la implementación del navegador, en si, hoy en día todos los navegadores la respetan, es posible modificar un navegador para que no lo haga. pero en general todo navegador "correcto" debería mantener la cookie hasta la fecha de expiración o hasta que el usuario las borre (lo primero que suceda).
Hay formas de tener "cookies" que duren más tiempo, una de ellas es utilizando las
Local Shared Object de Flash, ya que ellas no son eliminadas por el navegador (generalmente), de hecho actualmente no se eliminan, a menos que el mismo usuario las elimine.
De hecho ya existe una implementación (en Javascript, por lo tanto se ejecuta por el lado del cliente) llamada
evercookie y utiliza varios métodos para lograr que un tipo de cookie extremadamente persistente (recuerda que siempre va a existir la posibilidad de borrarlas).
Saludos.