专栏名称: 程序猿
本微信公众号:imkuqin,为程序员提供最新最全的编程学习资料的查询。目前已经开通PHP、C/C++函数库、.NET Framework类库、J2SE API查询功能。
今天看啥  ›  专栏  ›  程序猿

别搞混了!

程序猿  · 公众号  · 程序员  · 2024-11-11 18:08

主要观点总结

本文介绍了TCP的Keepalive和HTTP的Keep-Alive的区别和原理。两者实现层面不同,HTTP的Keep-Alive是应用层实现的长连接功能,可以减少TCP连接建立和释放的开销;而TCP的Keepalive是内核实现的保活机制,用于检测连接的存活状态。

关键观点总结

关键观点1: HTTP的Keep-Alive(长连接)

HTTP协议采用请求-应答模式,为了多次使用同一个TCP连接发送和接收多个HTTP请求/应答,减少了连接建立和释放的开销。在HTTP 1.1默认开启Keep-Alive,可通过请求包头中的Connection字段控制其开启和关闭。

关键观点2: TCP的Keepalive(保活机制)

TCP的Keepalive是内核实现的保活机制,用于在双方没有数据交互的情况下,通过发送探测报文来确定对方TCP连接的存活状态。应用程序需要通过设置SO_KEEPALIVE选项来使用此功能。

关键观点3: HTTP流水线技术

基于HTTP长连接实现的流水线技术允许客户端在同一TCP连接中一次性发送多个请求,而无需等待服务器的响应,减少了整体响应时间。但也存在队头阻塞问题。


文章预览

来自公众号: 小林coding 之前有读者问了我这么个问题: 大致问题是, TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗? 这是个好问题,应该有不少人都会搞混,因为这两个东西看上去太像了,很容易误以为是同一个东西。 事实上, 这两个完全是两样不同东西 ,实现的层面也不同: HTTP 的 Keep-Alive,是由 应用层(用户态)  实现的,称为 HTTP 长连接; TCP 的 Keepalive,是由  TCP 层(内核态)  实现的,称为 TCP 保活机制; 接下来,分别说说它们。 HTTP 的 Keep-Alive HTTP 协议采用的是「请求-应答」的模式,也就是客户端发起了请求,服务端才会返回响应,一来一回这样子。 请求-应答 由于 HTTP 是基于 TCP 传输协议实现的,客户端与服务端要进行 HTTP 通信前,需要先建立 TCP 连接,然后客户端发送 HTTP  请求,服务端收到后就返回响应,至此「请求-应答」 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览