长连接和短链接的区别

2023-11-10

长连接意味着进行一次数据传输后,不关闭连接,长期保持连通状态。如果两个应用程序之间有新的数据需要传输,则直接复用这个连接,无需再建立一个新的连接。就像下图这样。
在这里插入图片描述
它的优势是在多次通信中可以省去连接建立和关闭连接的开销,并且从总体上来看,进行多次数据传输的总耗时更少。缺点是需要花费额外的精力来保持这个连接一直是可用的,因为网络抖动、服务器故障等都会导致这个连接不可用,甚至是由于防火墙的原因。所以,一般我们会通过下面这几种方式来做“保活”工作,确保连接在被使用的时候是可用状态:

1.利用 TCP 自身的保活(Keepalive)机制来实现,保活机制会定时发送探测报文来识别对方是否可达。一般的默认定时间隔是 2 小时,你可以根据自己的需要在操作系统层面去调整这个间隔,不管是 linux 还是 windows 系统。

2.上层应用主动的定时发送一个小数据包作为“心跳”,探测是否能成功送达到另外一端。 保活功能大多数情况下用于服务端探测客户端的场景,一旦识别客户端不可达,则断开连接,缓解服务端压力。
提前多说一句,如果在做了高可用的分布式系统场景中运用长连接会更麻烦一些。因为高可用必然包含自动故障转移、故障隔离等机制。这恰恰导致了一旦发生故障,客户端需要及时发现哪些连接已处于不可用状态,并进行相应的重连,包括重新做负载均衡等工作。

了解完了长连接,那么短连接就很容易理解了。短连接意味着每一次的数据传输都需要建立一个新的连接,用完再马上关闭它。下次再用的时候重新建立一个新的连接,如此反复。
在这里插入图片描述

它的优势是由于每次使用的连接都是新建的,所以基本上只要能够建立连接,数据就大概率能送达到对方。并且哪怕这次传输出现异常也不用担心影响后续新的数据传输,因为届时又是一个新的连接。缺点是每个连接都需要经过三次握手和四次握手的过程,耗时大大增加。

另外,短连接还有一个致命的缺点。我们回到前面提到的维基百科对 socket 的定义,其中说到 socket 包含通信协议、目标地址、状态等。实际当你在基于 socket 进行开发的时候,这些包含的具体资源主要就是这 5 个:源 IP、源端口、目的 IP、目的端口、协议,有个专业的叫法称之为“五元组”。在一台计算机上只要这五元组的值不重复,那么连接就可以被建立。然而一台计算机最多只能开启 65535 个端口,如果现在两个进程之间需要通信,作为服务端的 IP 和端口必然是固定的,因此单个客户端理论上最多只能与服务端同时建立 65535 个 socket 连接。如果除去操作系统和其它进程所占用的端口,实际还会更少。所以,一旦使用不当,在很短的时间内建立了大量连接,端口很容易被占用完。这不但会导致自身无法正常工作,还会影响到同一台计算机上的其它进程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

长连接和短链接的区别 的相关文章

  • CMake进阶(一)设置编译选项

    CMake 进阶 一 设置编译选项 CMake设置编译选项 构建Debug版本和Release版本 CMake文件设置 编译过程 CMake设置编译选项 在cmake脚本中 设置编译选项可以通过add compile options命令 也
  • 【超细节】Vue3的属性传递——Props

    目录 前言 一 定义 二 使用 1 在 setup 中 推荐 2 非 setup 中 3 对象写法的校验类型 4 使用ts进行类型约束 5 使用ts时props的默认值 三 注意事项 1 Prop 名字格式 2 对象或数组类型的默认值 3
  • 第十届蓝桥杯 修改数组 (研究生组)

    修改数组 问题描述 给定一个长度为 N 的数组 A A1 A2 AN 数组中有可能有重复出现的整数 现在小明要按以下方法将其修改为没有重复整数的数组 小明会依次修改 A2 A3 AN 当修改 Ai 时 小明会检查 Ai 是否在 A1 Ai
  • hp服务器g5 u盘装系统,hp 440g5怎么装系统

    惠普probook440g5为一款14英寸高性能商务办公本 在升级了英特尔酷睿i7 8代系列处理器后 配合显卡迸发出超凡的性能 很适合外出携带使用 那这款惠普笔记本怎么安装操作系统 今天小编就为大家分享hp 440g5怎么装系统 hp 44
  • PowerMod@快速幂取模

    图片链接 快速幂取模使用心得 看到过于大的数不要害怕 要学会细致分析 想想取模的作用 不就是帮你把大数化小了吗 include
  • 最强自动化测试框架Playwright(25)-浏览器

    Browser Playwright Python 方法 创建page页面 from playwright sync api import sync playwright def run playwright firefox playwri
  • 深度学习正则化

    在设计机器学习算法时不仅要求在训练集上误差 且希望在新样本上 的泛化能 强 许多机器学习算法都采 相关的策略来减 测试误差 这 些策略被统称为正则化 因为神经 络的强 的表示能 经常遇到过拟 合 所以需要使 不同形式的正则化策略 正则化通过
  • JavaWeb-通过表格显示数据库的信息(jsp+mysql)

    login jsp h2 登录 h2 br
  • python+numpy+pandas数据类型+类/对象

    写代码时逻辑明确 但是被各种数据类型以及对象类型搞蒙了 补习并简单记录一下 在进行数据分析之前需要对数据进行数据处理 其中就包含转化数据格式 可以先查看数据信息 再依据分析需求对进行处理 编写python程序时各种数据类型以及对象的类型以及
  • 微信测试账号 (2)-消息验证sha1签名

    在第1篇中实现了收发微信消息 但是没有做验证 本篇将介绍微信如何使用sha签名 对消息进行认证 其中安全相关的概念 如sha1散列值 签名等 可参考web安全 1 验证参数 GetMapping handler public String
  • live555 server 搭建

    一 直接下载live555MediaServer可执行程序 二 Live555在linux平台上编译 下载源码包 http www live555 com liveMedia live555 latest tar gz 1 解压 2 生成M
  • CCPC-南阳比赛总结

    打铁归来 感触好多 记得英语课上 收到晓红老师的消息 说给我们争取下了国赛的名额 我们感觉好幸运 没想到最后打铁了 这个结果也不太意外 下面说下 这几天的行程 反思 下一步的目标 15号 淄博到济南 15 16号 济南 郑州 南阳 17号
  • 如何过滤 map

    获取 EntrySet 然后正常使用 stream 的 filter 过滤 Entry 最后再转为 Map 即可 对 map 过滤 filter Test public void testMapFilter Map
  • OCJP题库1Z0-851(21/30)

    这套题我参考了这篇文章 以及一些百度上找的内容 再加上自己的解释 总结下来的详解 第1题 1 Given a pre generics implementation of a method 11 public static int sum
  • 申请被拒模板 (六)

    这里只是模板 仅供学习 出现任何问题 与博主无关 Hi xxxxx We really appreciate the time and effort you took to connect with us and apply for the
  • nginx配置详解

    一 什么是nginx nginx是一款自由的 开源的 高性能的HTTP服务器和反向代理服务器 同时也是一个IMAP POP3 SMTP代理服务器 Nginx作为一个HTTP服务器进行网络的发布处理 另外Nginx可以作为反向代理进行负载均衡
  • 【数据分析】为什么要学习分析方法?

    为什么要学习分析方法 如果你有以下这些症状 没有数据分析意识 工作由拍脑袋决定 而不是靠数据分析来支持决策 统计时的数据分析 做了很多图表 却发现不了业务中存在的问题 只会使用工具的数据分析 谈起使用工具的技巧头头是道 但是面对问题 还是不
  • 用C++实现softmax函数(面试经验)

    背景 今天面试字节算法岗时被问到的问题 让我用C 实现一个softmax函数 softmax是逻辑回归在多分类问题上的推广 大概的公式如下 i n p u t
  • Unity的C#编程教程_56_Namespace 详解

    文章目录 Namespaces Tour of Namespaces Namespaces 命名空间使得我们可以组织和管理我们的代码库 假设我们设置一个脚本名叫 Weapon using System Collections using S
  • python整段代码注释-Python中注释(多行注释和单行注释)的用法实例

    Python中注释 多行注释和单行注释 的用法实例 发布时间 2020 09 30 23 18 32 来源 脚本之家 阅读 97 前言 学会向程序中添加必要的注释 也是很重要的 注释不仅可以用来解释程序某些部分的作用和功能 用自然语言描述代

随机推荐

  • main.c:9:21: fatal error: sqlite3.h: 没有那个文件或目录

    今天在 Ubuntu 里看别人代码时 头文件里面有个
  • 2023普华永道中国首席数据官调研

    导读 在中国2 500家最大的上市企业中 首席数据官或类似管理岗的渗透率仅为1 3 远低于全球27 的水平 首席数据官的推广任重道远 其中 金融行业和通讯 媒体与科技行业的首席数据官或类似管理岗的数量位居前两位 也与这几个行业的数字化转型发
  • 【100天精通Python】Day48:Python Web开发_WSGI网络服务器网关接口与使用

    目录 1 WSGI接口 1 1 CGI 简介 1 2 WSGI 简介 1 3 定义 WSGI 接口 1 3 1 应用程序 Application 1 3 2 服务器 Server 1 4 WSGI 接口的使用示例 1 5 WSGI接口的优势
  • bp网络拟合函数 matlab_基于RBF神经网络的曲线拟合

    目前 在人工神经网络的实际应用中 绝大部分的神经网络模型是采用误差逆传播 error BackPropagation BP 网络和它的变化形式径向基函数 Radial Basis Function RBF 神经网络 RBF网络是一种高效的前
  • 微信小程序使用image组件显示图片的方法

    本文实例讲述了微信小程序使用image组件显示图片的方法 分享给大家供大家参考 具体如下 1 效果展示 2 关键代码 index wxml 代码如下
  • Lightgbm 直方图优化算法深入理解

    一 概述 在之前的介绍Xgboost的众多博文中 已经介绍过 在树分裂计算分裂特征的增益时 xgboost 采用了预排序的方法来处理节点分裂 这样计算的分裂点比较精确 但是 也造成了很大的时间开销 为了解决这个问题 Lightgbm 选择了
  • ubuntu16.04 使用astra s摄像头

    Astra相机使用方法 官网链接 https orbbec3d com develop Astra相机 GitHub orbbec ros astra camera ROS wrapper for Astra camera 普通相机 Git
  • mac安装lrzsz后运行卡死解决办法

    lrzsz的安装配置具体参见 https segmentfault com a 1190000012166969 上述完成后 若可以正常使用 万事大吉 如出现卡死的情况 可以查看配置文件 usr local bin iterm2 recv
  • openwrt 之通过uci 设置参数

    在openwrt中 默认一种配置文件 默认的路径 etc config 在这里面的所有配置文件如需要修改只需使用uci 这个指令来修改 以下uci 指令参数 root xxxx uci Usage uci
  • ubuntu自带vim配色方案

    系统版本 ubuntu 16 04 LTS 刚开始用vim的时候 大家可能会觉得默认的语法高亮的颜色不合心意 不过对于vim来说 这并不是一个问题 其实vim的配色方案是可以更改的 既可以选择系统自带的配色方案 也可以从网上下载其它配色方案
  • 简单理解Hadoop(Hadoop是什么、如何工作)

    一 Hadoop主要的任务部署分为3个部分 分别是 Client机器 主节点和从节点 主节点主要负责Hadoop两个关键功能模块HDFS Map Reduce的监督 当Job Tracker使用Map Reduce进行监控和调度数据的并行处
  • linux下部署thinkphp5项目

    准备工作 购买一个linux服务器地址 安装好linux常用的ssh工具 我这边喜欢用xshell敲命令 用filezilla传输文件 这些工具只要到官网下载就好 速度很快的 1 安装phpstudy for linux 安装下载phpst
  • java:JSONArray转byte[]字节数组

    package com xxx huali hualitest json import com alibaba fastjson JSONArray import com alibaba fastjson util Base64 publi
  • C语言运行流程

    在上一篇文章visual studio如何运行并调试C语言代码中写了如何运行并调试代码 我们就明确一个事实 即不论是嵌入式系统 亦或是普通PC电脑 对于程序的运行硬件处理器只能识别0 1的二进制码 从类人语言的C代码 需要经过一系列的转换过
  • 各种算法使用场景

    深度优先搜索BFS VS 广度优先搜索 DFS 算法就是回溯算法 BFS 相对 DFS 的最主要的区别是 BFS 找到的路径一定是最短的 但代价就是空间复杂度可能比 DFS 大很多 递归灵魂三问 labuladong 告诉你 遇到任何递归型
  • SQL Server基础Sql语句复习

    基础至极 1 创建表 create table Course Cno char 4 primary key not null 创建主键 非空 Cname char 40 not null Cpno char 4 Ccredit smalli
  • 软件测试报告bug统计,软件测试中如何有效地写Bug报告

    引言 为公众写过软件的人 大概都收到过很拙劣的bug 计算机程序代码中的错误或程序运行时的瑕疵 译者注 报告 例如 在报告中说 不好用 所报告内容毫无意义 在报告中用户没有提供足够的信息 在报告中提供了错误信息 所报告的问题是由于用户的过失
  • 【算法学习笔记】17:DFS与BFS

    1 DFS 深度优先搜索常用于解决需要给出所有方案的问题 因为它的搜索顺序就是能够得到一个完整的搜索路径 方案 后回退再去搜索其它的方案 1 1 例题 排列数字 由于要求所有排列的方案 可以每次从 1 n 1 n 1 n里拿一个数字 然后记
  • 为什么P值不再是0.05(孟德尔随机化)

    为什么P值不再是0 05 孟德尔随机化 为什么P值不再是0 05 孟德尔随机化
  • 长连接和短链接的区别

    长连接意味着进行一次数据传输后 不关闭连接 长期保持连通状态 如果两个应用程序之间有新的数据需要传输 则直接复用这个连接 无需再建立一个新的连接 就像下图这样 它的优势是在多次通信中可以省去连接建立和关闭连接的开销 并且从总体上来看 进行多