HTTP长连接和TCP长连接有什么区别?

507 阅读1分钟

HTTP长连接

释义

HTTP长连接,是应用层实现的长连接,被称为HTTP长连接。基于同一个TCP连接的断开时间实现,在同一个HTTP连接中,可以发送多个HTTP请求。

启用/关闭方式

HTTP1.1之前,需要我们在请求头中加入Connection: Keep-Alive,而在HTTP1.1之后,请求是默认开启长连接的,如果需要关闭,需要在请求头中加入Connection: close

原理

一般web服务提供keepalive_timeout的超时时间设置,如果在完成一个http请求之后,超时时间内未发送新的请求,就会触发回调函数释放该连接。建立任何一个HTTP连接,都需要使用TCP三次握手建立连接和四次挥手断开连接

TCP长连接

释义

TCP长连接是基于TCP层实现的,通常被称为TCP保活机制

启用/关闭方式

开启TCP保活机制需要通过socket接口设置SO_KEEPALIVE选项才能生效。

原理

如果tcp连接的两端一直没有数据交互,达到了保活机制的时间,内核里的TCP协议栈就会发送探测报文,如果对端程序正常响应,则tcp保活时间将会被重置,否则以此类推,重试到指定次数之后,将会报告连接死亡,此时连接将会断开