The difference is in the nature of the connection they define between a client and a server.Telnet and FTP, for example are stateful protocols
The client connects to the server, conducts a series of operations via that conneciton, and then disconnects.Then server can associate all of the requests together and knows that thy all came from the same user.
In internet jargon, the server associates a state with the connection
-it remembers who the user is, and what it is that they are doing.For example, when u FTP to mama, u as a client request a file for download, the FTP(mama) server can associate the request with previous ones and work out which file u requested,like sometimes it pops messages saying,"do u want to overwrite? or modify changes".It also creates a log file which u can easily view with the ws_ftp program.
HTTP , on the other hand is a Stateless Protocol.It is concerned with requests and responses,which are simple,isolated transactions.This is perfect for simple web browsing, where each request typically results in a file(an HTML document or a GIF image etc) being sent back to the client.The server does not need to know whether a series of requests come from the same, or from different clients, or whether those requests are related or distinct.
So associating the requests together and maintaining the user state on server is of great interest which is technically called a "Session Tracking" of the user.
Using Cookies or Servlet API's session tracking tools we can do the session tracking.
A session can be defined as a series of related interactions between
a single client and the web server which take place over a period of time.This
session could be a series of transactions that a user makes while buying
a calling card online or listening to the music on the new msnexplorer.