Since you are asking about ASP.NET, I'm going to assume you are talking about sessions and session state.
The HTTP protocol is stateless, meaning that it treats each request as independent, without knowledge of the previous calls to the server. A session is designated as a short period of time that the server defines where calls from the same machine will be treated being part of the same set of calls. This is a session. You can define how long a session is and what criteria will end the session.
During this session, variables and other information can be collected and used to give the user the appearance that their changes are making changes to the system (even though these changes are usually temporary). This is session state. It is the state the session is in.
This is why session and state aren't really two topics but one topic. Here is a link with more information:
http://msdn.microsoft.com/en-us/library/ms178581.aspx[
^]