首页 > 短链接

长链接和短链接的区别有哪些?

2024-01-19 浏览: 105

短连接相比长链接有以下几个优势:

1. 短连接更好识别,短链接相比长链接,更加容易被记住

2. 短连接可信度更高,一长串链接非常容易造成客户不信任的感觉

3. 方便传播,变色龙短链的短连接带绿标,不会被腾讯、QQ等屏蔽

4. 方便灵活:短连接对应的地址可以在后台随意更换,不用开发再去改代码

在线生成短网址地址:https://qr.bslyun.com 快去试试吧~

当使用TCP协议进行网络通信时,必须在服务器和客户端之间建立连接,才能进行真正的读写操作。读写操作完成后,双方可以在不再需要连接时释放连接。连接的建立需要3次握手,释放需要4次握手,所以每次连接的建立都需要资源消耗和时间消耗

TCP 短连接

我们模拟一个短 TCP 连接的情况。客户端向服务器发起连接请求,服务器接收到请求后,然后双方建立连接。客户端向服务器发送消息,服务器响应客户端,然后完成一次读写。此时,任何一方都可以发起关闭操作,但一般是客户端先发起关闭操作。为什么呢,一般的服务器不会在回复客户端后立即关闭连接,当然也有特殊情况。从上面的描述来看,短连接一般只在客户端/服务器之间传递一次读写操作

长链接和短链接的区别:短连接的优点是管理起来比较简单,现有的连接都是有用的连接,不需要额外的控制手段

TCP 长连接

下来,我们将模拟长连接的情况。客户端向服务器发起连接,服务器接受客户端连接,双方建立连接。客户端和服务端完成一次读写后,不会主动关闭它们之间的连接,后续的读写操作会继续使用这个连接。

首先说一下TCP/IP详解中提到的TCP keep-alive功能。保活功能主要是为服务器应用程序提供的。服务器应用程序想知道客户端主机是否崩溃,以便它可以代表客户端使用资源。如果客户端已经消失,在服务器上留下一个半开的连接,并且服务器正在等待来自客户端的数据,那么服务器应该远离等待来自客户端的数据。 keep-alive功能就是在服务端connect上尝试检测这个半开的连接。

如果给定的连接在两个小时内没有任何操作,服务器会向客户端发送一个探测段。客户端主机必须处于以下四种状态之一:

客户端主机仍在运行并可从服务器访问。客户端的TCP响应正常永久短链接,服务器知道对方正常。服务器会在两小时后重置保活计时器。

长链接和短链接的区别

客户端主机已崩溃并正在关闭或重新启动。在任何一种情况下,客户端的 TCP 都没有响应。服务器将不会收到对探测的响应,并将在 75 秒后超时。服务器总共发送 10 个这样的探测,每个探测间隔为 75 秒。如果服务器没有收到响应,则认为客户端主机已关闭并终止连接。

客户端主机崩溃并已重新启动。服务器将收到对其 keepalive 探测的响应,这是一个重置,导致服务器终止连接。

客户端运行正常,但服务器无法访问。这种情况和2类似。TCP能发现的是没有收到对探测的响应。

长连接和短连接操作流程

短接的操作步骤为:

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

长连接的操作步骤为:

建立连接-数据传输...(保持连接)...数据传输-关闭连接

长链接和短链接的区别:优缺点分析

从上面可以看出,长连接可以省去更多的TCP建立和关闭操作,减少浪费,节省时间。对于频繁请求资源的客户端,长连接更适合。但是,这里有一个问题。 keepalive函数的检测周期太长直观:长链接和短链接的区别,只检测TCP连接的存活,是一种比较温和的做法。遇到恶意连接时,keepalive功能不够用。在长连接的应用场景中,客户端一般不会主动关闭它们之间的连接。如果客户端和服务器之间的连接没有关闭永久短链接,就会出现问题。随着客户端连接数的增加,服务端迟早需要采取一些策略,比如关闭一些长时间没有读写事件的连接,以免一些恶意连接对服务器造成损害服务器端服务;如果条件允许,可以使用客户端机器粒度化,限制每个客户端的最大长连接数,完全可以避免麻烦的客户端影响后端服务。

短连接对于服务器来说更易于管理,所有现有连接都是有用的连接,无需额外的控制手段。但是如果客户端请求频繁,就会浪费时间和带宽在 TCP 设置和关闭操作上。

长连接和短连接的产生取决于客户端和服务器采用的关闭策略。具体应用场景采用具体策略。没有完美的选择,只有合适的选择。

什么时候使用长连接和短连接?

长连接多用于频繁操作,点对点通信,连接数不能太多。每个 TCP 连接都需要三步握手,这需要时间。如果每个操作都是先连接再操作,处理速度会大大降低,所以每次操作后不会断开连接,下次处理时直接发送数据包。好的,不需要建立TCP连接。例如,长连接用于数据库连接。如果使用短连接进行频繁通信,会出现socket错误,频繁创建socket也是一种资源浪费。

另一方面,WEB站点等http服务一般都使用短链接,因为长连接会给服务器消耗一定的资源,而成千上万甚至上亿客户端的连接和WEB站点一样频繁使用短链接。它将节省一些资源。如果使用长连接,同时有上千个用户,如果每个用户占用一个连接,可想而知。所以并发量很大,但如果每个用户不需要频繁操作,最好使用短连接。

标签: 长链接和短链接的区别有哪些?