【计算机网络】TCP心跳机制、TCP粘包问题

news2024/12/24 15:08:39

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
更多计算机网络知识专栏:计算机网络🔥
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述


目录

  • 一、心跳机制
  • 二、粘包问题

一、心跳机制

在长连接下,可能有很长一段时间没有数据往来,为了保持长连接存活,存在心跳机制

每隔几分钟就发送一个固定信息给服务端,服务端收到后也回复一个固定信息,以表示连接仍然有效

同时 心跳机制还可以用于检测连接是否断开或出现故障

但是 心跳机制会增加网络流量

在这里插入图片描述

二、粘包问题

由于TCP是基于字节流传输,没有边界,可以合并,合并拆不开就是粘包

(UDP没有这个问题,因为UDP每个消息都有明确的边界)

解决办法:

  • 1.设置标志位(开始/结束)
    在数据包中的开始和结束位置添加标志位,对端收到数据根据标志位进行拆包
    标志位可能与数据内容冲突,导致拆包失败

  • 2.固定包大小
    将每个数据包的大小固定,接收端根据固定大小来接收数据,从而避免粘包问题
    可能会造成数据浪费

  • 3.先发数据长度,再发数据包
    在发送数据前,先发送数据长度,接收端和发送端都要在协议中定义好数据长度
    额外发送数据长度会增加网络流量

  • 4.短连接
    每次只发送一个完整的数据包,然后关闭连接
    增加连接建立和关闭的开销

粘包问题发生在传输层和应用层之间


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1327213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低代码和纯代码:双向奔赴,共创未来ing……

低代码开发是近年来迅速崛起的软件开发方法&#xff0c;让编写应用程序变得更快、更简单。有人说它是美味的膳食&#xff0c;让开发过程高效而满足&#xff0c;但也有人质疑它是垃圾食品&#xff0c;缺乏定制性与深度。你认为低代码到底是美味的膳食还是垃圾食品呢&#xff0c;…

工业缺陷检测深度学习方法综述——学习笔记(评价:这篇华科大的文章错误百出,学术一点都不严谨,别误人子弟了好吧。。。)

文章目录 摘要1 引言2 问题定义与研究现状2.1 问题定义2.2 问题难点与挑战2.2.1 数据难点2.2.2 任务挑战 2.3 研究概述 3 检测算法3.1 缺陷模式已知3.1.1 传统方法简述3.1.2 深度学习方法 3.2 缺陷模式未知3.2.1 传统方法简述3.2.2 深度学习方法(1) 基于图像相似度的方法(i) 基…

芋道前端框架上线之后发现element-ui的icon图标全部乱码

前言 最近发现线上有人反映图标全部是乱码&#xff0c;登录上去看确实乱码&#xff0c;刷新就好最后一顿搜&#xff0c;发现是sass版本不兼容导致的图标乱码问题 解决办法 1.先把sass升级到1.39.0 2.来到vue.config.js文件配置代码-如果是芋道前端框架不用配置自带 css: {lo…

I.MX6ULL_Linux_驱动篇(48)linux I2C驱动

I2C 是很常用的一个串行通信接口&#xff0c;用于连接各种外设、传感器等器件。本章我们来学习一下如何在 Linux 下开发 I2C 接口器件驱动&#xff0c;重点是学习 Linux 下的 I2C 驱动框架&#xff0c;按照指定的框架去编写 I2C 设备驱动。本章同样以 I.MX6U-ALPHA 开发板上的 …

一些错误的集合

目录 第一章、1.1&#xff09;前端找不到图片1.2&#xff09;1.3&#xff09;1.4&#xff09; 第二章、2.1&#xff09;2.2&#xff09;2.3&#xff09; 第三章、3.1&#xff09;3.2&#xff09;3.3&#xff09; 第四章、4.1&#xff09;4.2&#xff09;4.3&#xff09; 友情提…

ZKP Pasta Curves

Mina book[https://o1-labs.github.io/proof-systems/specs/pasta.html?highlightpasta#pasta-curves]学习笔记 Pasta Curves Pasta Curves is a fascinating innovation in cryptography designed by Zcash. What are the Pasta Curves The Pasta Curves are a pair of e…

走过的2023:在挑战中领悟,在仿徨中成长

转眼间就到了2023年的最后一个月&#xff0c;回顾这短暂而又有意义的一年&#xff0c;可以用12个字总结&#xff1a;在挑战中领悟&#xff0c;在仿徨中成长。这篇文章我会从技术成长、职场生活、读书感悟和个人生活等几个方面&#xff0c;总结一下过去的这一年&#xff0c;梳理…

视觉设计必备!这6款工具让你事半功倍!

视觉设计师是做什么的 不同类型的行业将聘请视觉设计师&#xff0c;工作内容可能涉及设计网站、游戏、电影和其他数字设计项目。通过以下关于视觉设计师的工作描述和薪酬描述&#xff0c;我们可以进一步了解视觉设计师。 视觉设计师职位描述&#xff1a; 遵循品牌指南&#…

WEB 3D技术 three.js rotation元素旋转控制

我们在官网中搜索 Euler 循环用的 就不是三维向量了 而是欧拉角对象 但欧拉角也是绕着某个轴进行旋转 我们有两个这样的元素 官网中的 order 比较特殊 它是先旋转完 x轴 然后旋转 y轴 最后旋转z轴 order也是它默认的值 一般来讲 我们用 就改 x y z就够了 order 一般不需要 …

基于Java+Vue+uniapp微信小程序大学生心理健康服务设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

DOM是什么?

1、概述 &#xff08;1&#xff09;DOM代表文档对象模型&#xff0c;是 HTML 和 XML 文档的接口&#xff08;API&#xff09; &#xff08;2&#xff09;当浏览器第一次读取&#xff08;解析&#xff09;HTML文档时&#xff0c;会创建一个基于 HTML 文档的大对象&#xff0c;…

js中的Array.from()和Array.of()方法的用法详情

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;JavaScript小贴士 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续…

获取请求体中json数据并解析到实体对象

目录 相关依赖 前端代码 后端代码 测试结果 相关依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version> </dependency> <dependency><groupId>comm…

[软件] Image2LCD v4.0

介绍 通过打开图片, 可以提取图片的像素特征, 生成.c文件, 或者二进制文件等, 提供人们根据需要选择. 16位真彩色 每一个像素点需要用16位来表示, 分别是RGB, R: 5位 G: 6位, B: 5位, 共两个字节. 配置 tftLCD180显示屏, 官方给的参考代码, 需要如下所示设置.

Python 输入输出, 标识符, import(保留字关键字) ,注释 , 缩进

1 Python简介输入print()标识符import关键字保留字(关键字)注释缩进 Python简介 python是一门解释性语言 解释性语言的特点:它不像java c一样先编译后执行,它是直接每一行的去执行,所以遇见错误时,它会把错误之前的执行完 输入print() print() 是一个让计算机在屏幕上进行输…

FPGA模块——以太网(1)MDIO读写

FPGA模块——以太网MDIO读写 MDIO接口介绍MDIO接口代码&#xff08;1&#xff09;MDIO接口驱动代码&#xff08;2&#xff09;使用MDIO驱动的代码 MDIO接口介绍 MDIO是串行管理接口。MAC 和 PHY 芯片有一个配置接口&#xff0c;即 MDIO 接口&#xff0c;可以配置 PHY 芯片的工…

前端手动部署与自动化部署

连接服务器 先购买服务器 安装vscode插件 连接服务器 连接成功 手动部署 安装nginx 启动nginx systemctl start nginx systemctl status nginx systemctl enable nginx启动 检查状态 开机就启动nginx 开始手动部署 配置nginx 成功

flutter自定义地图Marker完美展示图片

世人都说雪景美 寒风冻脚无人疼 只道是一身正气 结论 参考Flutter集成高德地图并添加自定义Maker先实现自定义Marker。如果自定义Marker中用到了图片&#xff0c;那么会碰到图片没有被绘制到Marker的问题&#xff0c;此时需要通过precacheImage来预加载图片&#xff0c;从而解…

DC-磁盘配额

2023年全国网络系统管理赛项真题 模块B-Windows解析 题目 在DC2驱动器C:\上设置磁盘配额&#xff0c;限制磁盘空间为5G&#xff0c;警告等级为3G&#xff0c;超出配额限制时记录事件&#xff0c;超出警告等级时记录事件。 配置步骤 验证 查看DC2驱动器C:\的磁盘配额&#xf…

WPF组合控件TreeView+DataGrid之TreeView封装-粉丝专栏

wpf的功能非常强大&#xff0c;很多控件都是原生的&#xff0c;但是要使用TreeViewDataGrid的组合&#xff0c;就需要我们自己去封装实现。 我们需要的效果如图所示&#xff1a; 这2个图都是第三方控件自带的&#xff0c;并且都是收费使用。 现在我们就用原生的控件进行封装一…