http协议是无状态协议,即下一次的http请求与上一次的http请求没有任何关系,是一次独立的请求,没有任何上下文关系,即不记录上下文。但是TCP是有状态的协议,TCP下一次传输的报文段和上一次传输的报文段是有顺序关系的,最终要按照报文段里的序列号对所有报文段进行重排序。
HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。
无状态服务器是指一种把每个请求作为与之前任何请求都无关的独立的事务的服务器。
《TCP/IP协议族》(第二版)第546页有这样一句话:
虽然HTTP使用TCP的服务,但HTTP本身是无状态协议,客户发送请求报文来初始化这个事务,服务器发送响应来回答。
《TCP/IP协议族》(第二版)第274页:
由于需要清楚地掌握在连接建立,连接终止以及数据传送时,所发生的所有不同事件,TCP软件是以有限自动机的形式来实现的。有限状态机是能够经历有限数目状态的一种机器,在任何时候,这个机器处于某一个状态。若没有其它事件发生,这个机器就一直出于那个状态,事件可以使机器转入到一个新的状态,或者事件完成同样的动作,换言之,事件是加到状态上的输入,它可以改变这个状态并产生输出。
常见的协议,比如TCP协议是有状态的协议,HTTP协议,UDP协议,FTP协议都是无状态协议。
无状态与短连接与长连接的关系?
无状态和短连接与长连接没任何关系。
短连接与长连接指的是TCP连接什么时候断开相关的,无状态指的是每次请求都是独立的,即http协议本身是无状态的,即下一次的http请求与之前的任何http请求没有任何关系,没有任何上下文关系。
参考:
如何理解有状态协议和无状态协议?
HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。
什么是有状态协议?什么是无状态协议?TCP是有状态协议,暗含着什么意思?