keepalive传输层的TCP协议,keep-alive应用层的HTTP协议 TCP的keepalive是在ESTABLISH状态的时候,双方空闲没有数据传输,多次发送心跳包检测连接是否存活(如果每次返回的都是RST,而不是ACK,则释放当前连接)。而HTTP的keep-alive说的是如何避免进行重复的TCP三次握手和四次挥手的环节,目的在于短时间内在同一个连接上进行多次请求/相应 keepalive只能检测连接是否存活,不能检测连接是否可用。例如,某一方发生了死锁,无法在连接上进行任何读写操作,但是操作系统仍然可以响应网络层keepalive包。 keep-alive并不是默认开启的,在Linux系统上没有全局的选项去开启TCP的keep-alive。开启keep-alive的应用必须在TCP的Socket中单独开启。 http长连接是为了复用连接,减少握手 tcp长连接是为了探测存活,是在ESTABLISH状态时