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

news/2024/7/7 19:20:16

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

在这里插入图片描述


目录

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

一、心跳机制

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

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

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

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

在这里插入图片描述

二、粘包问题

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

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

解决办法:

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

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

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

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

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


在这里插入图片描述

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

http://lihuaxi.xjx100.cn/news/1908710.html

相关文章

Flask解决接口跨域问题

1、什么是跨域CROS CORS&#xff08;Cross-Origin Resource Sharing&#xff0c;跨域资源共享&#xff09;是一种浏览器安全策略&#xff0c;用于控制在一个网页应用中如何让一个域的Web页面能够请求另一个域的资源。在Web开发中&#xff0c;由于同源策略&#xff08;Same-Ori…

Android 实现热点开机后自动开启

Android 实现热点开机后自动开启 文章目录 Android 实现热点开机后自动开启一、前言二、实现方式1、在 WifiServiceImpl 启动热点2、在开机广播中开启热点 三、其他1、热点开机自启动方式总结2、热点开启流程3、热点启动相关日志4、其他热点相关知识分享 一、前言 Android 热点…

CNAS中兴新支点——什么是软件压力测试?软件压力测试工具和流程

一、含义&#xff1a;软件压力测试是一种测试应用程序性能的方法&#xff0c;通过模拟大量用户并发访问&#xff0c;测试应用程序在压力情况下的表现和响应能力。软件压力测试的目的是发现系统潜在的问题&#xff0c;如内存泄漏、线程锁、资源泄漏等&#xff0c;以及在高峰期或…

SQL---数据抽样

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

[Java]FileOutputStream的换行/续写/一次性写出一个字符串的方法

1.续写&#xff1a;FileOutputStream这个io流中的write方法默认情况下是覆盖写入的&#xff0c;如果需要追加写入&#xff0c;需要添加一个参数true 2.虽然write只能一个字符一个字符写入 但是我们可以把想输入的字符串放在str 再将str转化成byte数组 import java.io.FileOutp…

Java8为什么要引入流Stream API

Java8为什么要引入流Stream API Java 8引入流&#xff08;Stream&#xff09;API的主要原因是为了提供一种更高效、更简洁、更易于阅读和维护的方式来处理数据集合&#xff0c;尤其是在处理大量数据时。流API引入了一种新的抽象层&#xff0c;使得数据处理操作可以更加直观和函…

一些CSS的笔记

1.margin margin:0 auto 是指上下的值为0&#xff0c;左右的值为auto&#xff1b; margin:auto是指上右下左的值全都auto&#xff0c;即都是自适应的&#xff1b; margin:0; 这个是上右下左的值都为0&#xff1b; 2.vertical-align vertical-align 属性设置元素的垂直对齐方式。…

unity脚本API中OnCollisionEnter()、OnTriggerEnter()二者的区别

Unity中的OnCollisionEnter和OnTriggerEnter两个函数在日常的开发中很常见但也容易混淆&#xff0c;下面说一说两者的区别。 碰撞器&#xff08;Collider&#xff09;与触发器&#xff08;Trigger&#xff09;的概念 碰撞器&#xff08;Collider&#xff09;和触发器&#xff…