In computing, a stateless protocol is a communications protocol in which no session information is retained by the receiver, usually a server. Relevant session data is sent to the receiver by the client in such a way that every packet of information transferred can be understood in isolation, without context information from previous packets in the session. This property of stateless protocols makes them ideal in high volume applications, increasing performance by removing server load caused by retention of session information. A stateless protocol does not require the server to retain session information or status about each communicating partner for the duration of multiple requests. In contrast, a protocol that requires keeping of the internal state on the server is known as a stateful protocol. A TCP connection-oriented session is a stateful connection because both systems maintain information about the session itself during its life. Examples of stateless protocols include the Internet Protocol, which is the foundation for the Internet, and the Hypertext Transfer Protocol, which is the foundation of data communication for the World Wide Web. The stateless design simplifies the server design because there is no need to dynamically allocate storage to deal with conversations in progress. If a client session dies in mid-transaction, no part of the system needs to be responsible for cleaning up the present state of the server. A disadvantage of statelessness is that it may be necessary to include additional information in every request, and this extra information will need to be interpreted by the server.
Examples
An example of a stateless protocol is HTTP, meaning that each request message can be understood in isolation. Contrast this with a traditional FTP server that conducts an interactive session with the user. During the session, a user is provided a means to be authenticated and set various variables, all stored on the server as part of the user's state.
Stacking of stateless and stateful protocol layers
There can be complex interactions between stateful and stateless protocols among different protocol layers. For example, HTTP is an example of a stateless protocol layered on top of TCP, a stateful protocol, which is layered on top of IP, another stateless protocol, which is routed on a network that employs BGP, another stateful protocol, to direct the IP packets riding on the network. This stacking of layers continues even above HTTP. As a workaround for the lack of a session layer in HTTP, HTTP servers implement various session management methods, typically utilizing a unique identifier in the cookie or parameter that allows the server to track requests originating from the same client, and effectively creating a stateful protocol on top of HTTP.