导航:首页 > 方法技巧 > tcp长连接方法

tcp长连接方法

发布时间:2024-12-16 16:53:48

㈠ 一文搞懂 HTTP、TCP 的长连接和短连接

HTTP 协议与 TCP/IP 协议的关系在于,HTTP 属于应用层协议,在传输层使用 TCP 协议,在网络层使用 IP 协议。TCP 协议主要解决如何在 IP 层之上可靠地传递数据包,确保在网络上的另一端收到所有发端发出的数据包,并且顺序与发出顺序一致。TCP 有可靠、面向连接的特点。

HTTP 协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。这意味着,打开一个服务器上的网页与之前打开的服务器上的网页之间没有任何联系。HTTP 是一个无状态的面向连接的协议,尽管无状态不代表 HTTP 不能保持 TCP 连接,也不代表 HTTP 使用的是 UDP 协议(无连接)。

长连接和短连接的解释如下:

短连接:

建立连接 -> 传输数据 -> 关闭连接

HTTP 是无状态的,浏览器和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束后就中断连接。如果客户端浏览器访问的某个 HTML 或其他类型的 Web 页中包含有其他的 Web 资源,如 JavaScript 文件、图像文件、CSS 文件等,每遇到这样一个 Web 资源,就会建立一个 HTTP 会话。

从 HTTP/1.1 起,默认使用长连接,使用长连接的 HTTP 协议在响应头会加入代码,以保持连接特性。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输 HTTP 数据的 TCP 连接不会关闭。实现长连接需要客户端和服务端都支持长连接。

HTTP 协议的长连接和短连接,本质上是 TCP 协议的长连接和短连接。

在 TCP 协议中,网络通信时采用 TCP 协议时,在真正的读写操作之前,server 与 client 之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接。建立连接需要 3 次握手,而释放连接需要 4 次握手,因此每个连接的建立和关闭都需要消耗资源和时间。

长连接和短连接的使用场景有所不同。长连接适用于操作频繁、点对点通讯且连接数不能太多的情况,例如数据库连接,这样可以减少建立连接和关闭连接的操作,提高处理速度。短连接适用于服务器管理较为简单,存在的连接都是有用的连接,不需要额外控制手段,同时客户端请求频繁的情况下,避免在 TCP 的建立和关闭操作上浪费时间和带宽。

长连接和短连接的生命周期主要由客户端和服务端的关闭策略决定。正常情况下,一条 TCP 长连接建立后,只要双方不提出关闭请求并且没有出现异常情况,这条连接可以持续存在,操作系统不会自动关闭它,甚至经过物理网络拓扑的改变之后仍然可以使用。一条连接可能保持几天、几个月、几年甚至更长时间,只要不出现异常情况或由用户主动关闭。

检测长连接是否中断的方法包括在应用层使用 heartbeat 主动检测和改变 socket 的 keepalive 选项,以使 socket 检测连接是否中断的时间间隔更小,以满足实时性需求。通过设置 SO_KEEPALIVE 属性、修改内核关于网络方面的配置参数以及 TCP 层选项 TCP_KEEPIDLE、TCP_KEEPINTVL 和 TCP_KEEPCNT 来实现。

㈡ 长链接、短链接与连接池

在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于 TCP/IP 协议,数据传输之前,双方通过“ 三次握手 ”建立连接,当数据传输完成之后,又通过“ 四次挥手 ”释放连接,以下是“三次握手”与“四次挥手”示意图:

三次握手建立连接示意图:

四次挥手释放连接示意图:

长、短连接是相对通信时间而言的。长连接相对短连接而言,多了一个 保持连接 的过程,可以在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。

短连接的操作步骤是:

建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接

client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次请求就完成了。这时候双方任意都可以发起close操作,不过一般都是client先发起close操作。上述可知,短连接一般只会在 client/server间传递一次请求操作。

短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。

长连接的操作步骤是:

建立连接——数据传输…(保持连接)…数据传输——关闭连接

client向server发起连接,server接受client连接,双方建立连接,client与server完成一次请求后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

TCP长连接保持的两种办法:

自定义心跳消息头.,一般客户端主动发送到服务端,服务器接收后进行回应(也可以不回应),以便能够侦测连接是否异常断开。

通过设置TCP keepalive的属性,并设置发送底层心跳包的时间间隔。TCP keepalive是在底层定时发送心跳报文,服务器端接收到底层的心跳报文直接丢弃,不关心其内容。


HTTP协议是无状态的,在HTTP/1.0中默认使用短连接,客户端和服务器每进行一次HTTP操作,浏览器就会重新建立一个HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性,使用长连接的HTTP协议,会在响应头加入这行代码:

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

基于TCP/IP协议,我们可以知道,频繁的连接创建和销毁都需要消耗资源,而连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接进行访问,这样省略了创建连接和销毁连接的过程。这样性能上得到了提高。

以数据库连接池为例,基本原理如下:

连接池技术带来的好处:

由于连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及临时进程/线程的数量)。

连接池在初始化过程中,往往已经创建了若干连接置于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。

在较为完备的连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规连接操作中可能出现的资源泄漏。

以PHP开发为例,基于PHP-FPM机制实现的Web服务,并不容易实现连接池,而常驻内存的开发框架,例如workerman、swoole 则可以简单实现连接池功能。PHP-FPM机制下的连接池需要借助第三方Proxy实现,例如:

㈢ 长连接和短连接的区别

品牌型号:华为MateBook D15
系统:Windows 11
1、使用方法不同。长连接是client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。短连接是Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。
2、操作过程不同。长连接的操作步骤是:建立连接、数据传输..、保持连接、数据传输、关闭连接。短连接的操作步骤是:建立连接、数据传输、关闭连接、建立连接、数据传输、关闭连接。
3、使用时机不同。长连接:短连接多用于操作频繁,点对点的通讯,而且长连接数不能太多的情况。每个TCP连接的建立都需要三次握手,每个TCP连接的断开要四次握手。短连接:web网站的http服务一般都用短连接。因为长连接对于服务器来说要耗费一定的资源。像web网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省一些资源。

阅读全文

与tcp长连接方法相关的资料

热点内容
手机一个小时充满电的方法 浏览:61
vivo手机账户密码在哪里设置方法 浏览:68
奶粉快递的正确方法 浏览:428
八段锦与功能性训练方法 浏览:177
立潮头的正确使用方法 浏览:647
主轴类零件的常见精度检测方法 浏览:945
水文统计原理能想象到的研究方法 浏览:37
怀柔大扁仁的食用方法 浏览:843
纸房子的制作方法步骤 浏览:227
pc板安装过程中要注意的安全方法 浏览:521
熟地黄的作用及食用方法视频 浏览:880
v字型种植方法 浏览:238
如何冷静理智处理问题的方法 浏览:508
魔方恢复方法视频 浏览:370
更年期便秘的治疗方法 浏览:218
鱼白子的制作方法视频 浏览:291
麦粒肿民间治疗方法 浏览:757
牛筋草怎样吃用食用方法 浏览:453
治疗口臭土方法有哪些 浏览:825
综合实战能力训练方法 浏览:322