前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈TCP协议的长连接和短连接

浅谈TCP协议的长连接和短连接

原创
作者头像
海风极客
发布2023-12-06 23:03:38
4224
发布2023-12-06 23:03:38
举报
文章被收录于专栏:扯编程的淡扯编程的淡

首先先说一个结论,无论是HTTP的长连接还是TCP的长连接,最终都是基于TCP的长连接,因为HTTP是基于TCP的上层网络协议。

1 长连接&短连接比较

HTTP1.0协议不支持长连接,从HTTP1.1协议以后,连接默认都是长连接。那么长连接和短连接有什么不同呢?

(1)概念不同

  • 长连接:HTTP客户端与服务端先建立连接,连接建立后不断开,然后再进行不断的数据传输。
  • 短连接:HTTP客户端与服务端每进行一次数据传输时才进行通讯连接,传输完成后立即断开连接。

(2)传输数据过程不同

  • 长连接:TCP三次握手打开连接—> HTTP报文传输—> 保持连接—> HTTP报文传输—> ...—> TCP四次挥手关闭连接
  • 短连接:TCP三次握手打开连接—> HTTP报文传输—> TCP四次挥手关闭连接

2 长连接原理

连接的保活:KeepAlive

首先想到的是KeepAlive 机制。他有三个参数:

  • tcp_keepalive_time
  • tcp_keepalive_probes
  • tcp_keepalive_intvl

KeepAlive 并不是 TCP 协议的一部分,但是大多数操作系统都实现了这个机制。KeepAlive 机制开启后,在一定时间内(一般时间为 7200s,参数tcp_keepalive_time)在链路上没有数据传送的情况下,TCP 层将发送相应的KeepAlive探针以确定连接可用性,探测失败后重试 10(参数tcp_keepalive_probes)次,每次间隔时间 75s(参数tcp_keepalive_intvl),所有探测失败后,才认为当前连接已经不可用。

但是,默认 TCP 连接并不启用 Keep-alive,若要打开的话要显式地调用 setsockopt(),来设置保活包的发送间隔、等待时间、重试个数等配置。在全局层面,Linux 还默认有 3 个跟 Keep-alive 相关的内核配置项可以调整:tcp_Keepalive_time,tcp_Keepalive_probes,还有 tcp_Keepalive_intvl。

参考:

https://network.51cto.com/article/603345.html

https://time.geekbang.org/column/article/482610

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 长连接&短连接比较
  • 2 长连接原理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档