TCP网络协议

embedded/2025/3/15 1:29:23/

TCP粘包

1. TCP在接收数据时,多包数据粘在了一起

2. 原因:

    1. TCP发送数据时,没有及时发走,会根据缓冲区数据的情况进行重新组包;
    2. TCP接收方,没有及时读走缓冲区数据,导致缓冲区大量数据缓存。

3. 如何解决TCP粘包:

    1.  发指定大小字节(结构体)
         struct  data
        {
             int id;
             float tmp;
             xxx;
        };

       指定在相同平台上使用,注意结构体对其齐问题。

    
     2. 发送具有指定分隔符的数据

         "hello world\n"
         "how are you\n"

     3. 封装自定义数据帧
          
          
         AA 0d 01  00 00 00 14 00 00 00 15  xx xx xx xx sum BB
         

网络抓包

网络抓包:抓取通过设备网卡的数据

wireshark:网络抓包工具:

1. 分析和追踪网络问题
2. 查看网络协议栈

安装:sudo apt-get install wireshark

1. sudo wireshark
2. 选择通信设备的网卡---》any
3. 选择抓取的过滤条件
4. 开始抓取
5. 进行一次通信

TCP报文头

标志位:
    
    1. URG: 紧急指针标志, 为1时表示紧急指针有效, 该报文应该优先传送。
    2. ACK: 确认应答标志
    3. PSH:  表示发送数据,提示接收端从TCP接收缓冲区中读走数据,为接收后续数据腾出空间
    4. RST: 重置连接标志
    5. SYN: 表示请求建立一个连接
    6. FIN: finish标志, 表示释放连接

TCP机制

     1. 应答机制:为每个数据增加序列发,发送数据时,第一个数据的序号作为报文中的序号。
                             接收方收到相关数据,会回应ACK报文,报文中的确认号是接收方下次希望接收到的数据的
                             起始序号。

     2. 超时重传机制:TCP发送数据后会在一定的时间内等待ACK,假设在指定时间ACK未收到,则视这包数据已经
                                    丢失,会重新传输这包数据。

     3. 流量控制机制:根据接收方接收数据的能力,调整窗口大小,通知发送发进行流量控制


http://www.ppmy.cn/embedded/172631.html

相关文章

TTP/HTTPS、TCP/IP 协议、RPC、Socket 通信机制

1. TTP/HTTPS TTP (HTTP) 和 HTTPS(Hypertext Transfer Protocol Secure)是基于 TCP/IP 协议的应用层协议,主要用于客户端和服务器之间的数据传输。 HTTP(超文本传输协议):这是用于 web 页面和服务器之间…

Ultravox:融合whisper+llama实现audio2text交互

Ultravox是由Fixie AI开发的一种创新型多模态大语言模型,专为实时语音交互设计。与传统的语音交互系统不同,Ultravox无需单独的语音识别(ASR)阶段,可以直接理解文本和人类语音,实现更快速、更自然的交互体验。Ultravox v0.5在语音理解基准测试中超越了OpenAI的GPT-4o Realt…

vue3在ts中动态添加DOM(1、使用render函数,2、使用tsx)

1、使用render函数和h函数 h函数创建虚拟节点&#xff08;VNode&#xff09;&#xff0c;render函数实现虚拟节点生成真实DOM元素 实现添加一个el-button按钮 <script setup lang"ts"> import { ElButton } from "element-plus"; //需要在页面中引…

Appium高级操作--从源码角度解析--模拟复杂手势操作

书接上回&#xff0c;Android自动化--Appium基本操作-CSDN博客文章浏览阅读600次&#xff0c;点赞10次&#xff0c;收藏5次。书接上回&#xff0c;上一篇文章已经介绍了appium在Android端的元素定位方法和识别工具Inspector&#xff0c;本次要介绍使用如何利用Appium对找到的元…

多源 BFS_多源最短路(十八)542. 01 矩阵 中等 超级源点思想

542. 01 矩阵 给定一个由 0 和 1 组成的矩阵 mat &#xff0c;请输出一个大小相同的矩阵&#xff0c;其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1&#xff1a; 输入&#xff1a;mat [[0,0,0],[0,1,0],[0,0,0]] 输出&#xff…

Redis 单线程架构:化繁为简的性能哲学

在分布式系统普遍采用多线程/多进程架构的今天&#xff0c;Redis 却坚持使用单线程模型处理核心业务逻辑&#xff0c;这种看似"反常识"的设计决策背后&#xff0c;隐藏着精妙的设计哲学。本文将深入剖析 Redis 单线程架构的底层密码&#xff0c;揭示其高效运转的奥秘…

蓝桥杯 17110抓娃娃

问题描述 小明拿了 n 条线段练习抓娃娃。他将所有线段铺在数轴上&#xff0c;第 i 条线段的左端点在 li&#xff0c;右端点在 ri​。小明用 m 个区间去框这些线段&#xff0c;第 i个区间的范围是 [Li​, Ri​]。如果一个线段有 至少一半 的长度被包含在某个区间内&#xff0c;…

Go 语言入门指南

Go 语言入门指南 欢迎踏入 Go 语言的奇妙世界&#xff01;Go&#xff08;亦称作 Golang&#xff09;是由 Google 开发的一门静态强类型、编译型、支持并发且具备垃圾回收机制的编程语言。自 2009 年首次发布以来&#xff0c;凭借其简洁、高效、易维护等卓越特性&#xff0c;Go…