Cookies sind dazu konzipiert, Daten beim Client zu speichern und diese gespeicherten Daten bei jeder Anfrage an den Webserver zu übermitteln (was sie auch in einer gewissen Weise transparent macht).
Sessions sind hingegen konzipiert, um Daten auf dem Webserver zu speichern und diese bei entsprechender Identifikation (Sitzungs-ID) wieder zur Verfügung zu stellen. Dass die Sitzungs-ID dabei auch von einem Cookie stammen kann, ist belanglos.
Der Unterschied zwischen beiden ist vor allem, dass die Daten in einer Sitzung auf dem Webserver und in einem Cookie beim Client gespeichert werden. Die Sitzungs-Daten sind somit nur serverseitig, die Cookie-Daten jedoch clientseitig veränderbar. Dadurch sind die Cookie-Daten immer mit einer gewissen Vorsicht zu behandeln.