ØWhen contacts browse a website, data about their interactions with Sitecore is stored in session state until the end of the session, when it is committed to xConnect.
ØxConnect then updates information about the session, and any changes in the contact's data, in the analytics and contact database.
ØIt is, however, possible for a single contact to have two or more sessions on the same website at the same time. This can happen when a contact is using different devices or multiple browsers on the same device.
ØYou must have a session state server to keep track of all of the concurrent sessions for the contact.
Session state types
Private
ØContains information about contact visit information, such as pages viewed, goals converted, or campaigns triggered. Private session state is private to the browser accessing the website.
ØIf a contact accesses a website simultaneously from their desktop and mobile phone, each device will have its own private session state.
ØThe default timeout of private sessions is 20 minutes.
Shared
ØContains information that can be shared across multiple active sessions. This includes any contact information that has been loaded into the tracker at the start of the session.
ØThis includes, for example, data related to contacts and devices. This data is still private to the contact but it is accessible from all current sessions made by the same contact.
Session state processes
You can configure both private and shared session state as either in process (InProc) or out of process.
In process
ØThe default session state provider that comes with the Microsoft .NET Framework. It uses internal memory to track interactions and visits.
ØIt is the most suitable way of handling private session state for all data related to a specific interaction (single visitor session or visit). It is the recommended mode to use for CM servers.
Out of process
ØOut of process means that you use an external ASP.NET session state provider. Sitecore comes with the following session state providers for configuring out of process session state:
1. Sitecore ASP.NET Session State Provider for Redis.
2. Sitecore ASP.NET Session State Provider for Microsoft SQL Server.
ØFor shared session state, if you have two or more CD servers you must use out of process.
ØOut of process is not supported on CM servers.
Get More Details here https://doc.sitecore.com/en/developers/101/platform-administration-and-architecture/scaling-and-configuring-session-state.html