TCP与UDP传输的学习

news2024/11/24 20:09:19

       void *memset(void *s, int c, size_t n);

功能:将一块内存空间的每个字节都设置为指定的值;这个函数通常用于初始化一个内存空间,或者清空一个空间;

参数:viod * s  空类型指针,指向要填充内存块;(空间/内存的起点);

      Int c 填充空间的值;通常为无符号字符;(空间/内存中填充的值是什么);

              Size_t  n 表示要填充的字节数(字节长度);

返回值:返回这块填充空间的起始地址;

粘包问题:

       粘包(Packet Splitting or Message Smuggling)是指在网络通信中,当发送的数据包大小超过接收端设定的最大长度限制时,可能会将大数据包分割成几个小包发送。接收端收到这些小包后,由于它们各自独立,如果不按照原来的顺序重组,就可能导致数据解析错误,形成乱序或者丢失部分信息。

       Tcp流式套接字;数据与数据之间没有边界,导致可能多次的数据粘到一起;

例如,在TCP协议中,如果POST请求体过大,服务器可能设置了一个固定大小的缓冲区来接收数据。若一次性发送的数据超过了这个缓冲区大小,就会发生粘包现象,导致后续的小包被视为新的请求,造成数据混淆。

为了避免粘包问题,通常的做法有:

  1. 规定一些数据与数据之间的间隔符;(如:”\aa” “\r\n”);
  2. 可以指定要发送的数据的长度;
  3. 或者将数据打包来避免粘包问题;
  4. 数据分块:预先确定好每个数据包的大小,并添加边界标识,如消息头信息中包含总数据长度;
  5. 使用适当的序列号或确认机制:如TCP协议的确认应答,保证数据包按顺序到达;
  6. 使用持久连接(Keep-Alive)或长轮询/WebSockets等技术,保持连接打开,直到所有数据都已发送完毕

     ssize_t recv(int sockfd, void *buf, size_t len, int flags);

相当于文件操作中的read;

参数:int flags 非阻塞方式:默认接收方式为0;

                       阻塞方式:MSG_DONTSAIT

       ssize_t send(int sockfd, const void *buf, size_t len, int flags)

相当于文件操作中的write;

参数:int flags 非阻塞方式:默认接收方式为0;

                       阻塞方式:MSG_DONTSAIT

总结:TCP 和 UDP的协议特点

TCP

UDP

1.面向连接;

1.无连接;

2.可靠传输;

2.不可靠;

3.字节流;

3.数据包;

网络测试常用工具

关于TCP和UDP协议的形式

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

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

相关文章

android13 隐藏状态栏里面的飞行模式 隐藏蓝牙 隐藏网络

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3.代码分析 4.代码修改 5.编译运行 6.彩蛋 1.前言 android13 隐藏状态栏里面的飞行模式,或者其他功能,如网络,蓝牙等等功能,隐藏下图中的一些图标。 2.问题分析 这里如果直接找这个布局的话,需要跟的逻…

ubuntu /windows 安装COLMAP

目录 一、COLMAP简介 二、ubuntu安装COLMAP 三、windows安装COLMAP 一、COLMAP简介 COLMAP 是一款用于3D重建和图像处理的软件,它结合了计算机视觉算法和优化技术,用于从一组图像中构建三维结构。COLMAP 是一个全功能的通用视觉测距和三维建模工具&a…

免费的AI认证考试

努力保持领先地位 过去几年,科技行业发展速度越来越快,尤其是人工智能和大型语言模型(LLM) 的出现。 作为该领域的资深软件开发人员,我也注意到一个人的经验很快就会变得过时。 就在几年前,神经网络和深度学习风靡一时。虽然这…

三星计划今年HBM4设计,2025年初开始样品测试

三星计划今年晚些时候完成首款HBM4内存设备的设计定稿,2025年初开始样品测试 根据nN Elec援引行业消息人士的报道,三星计划在今年晚些时候完成首款HBM4内存设备的设计定稿,并预计将于2025年初开始样品测试。该公司预计将采用其最新一代10纳米…

全新 Firebase AI 开发助手,助力构建应用的每一步

作者 / 助理产品经理实习生 Aayush Bandopadhyay 使用 Firebase 构建应用可以变得更加简单! 了解 Firebase 中的 Gemini,从构思应用创意到编写安全代码,都将成为您的最佳助手。这个功能强大的新工具集成在 Firebase 控制台中,可以…

如何在算家云搭建模型mPLUG-Owl3(智能对话)

一、模型介绍 1. 项目背景与概述 mPLUG-Owl3 是阿里巴巴 mPLUG 团队最新发布的通用多模态大模型,该模型在理解和处理复杂多图及长视频内容方面实现了显著突破。这一创新成果不仅提升了模型的推理效率,还保持了高度的准确性,为多模态大模型的…

计算机毕业设计选题推荐-花园管理系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Blender----利用DEM(tif)生成三维模型

首先需要安装Blender GIS这个插件:https://github.com/domlysz/BlenderGIS 一、TIFF的导入 可以通过GIS桌面端线查看DEM数据的信息,在blender中我们最好把TIF转换成3857或者其他投影的形式,推荐转成3857(web mector)投影是因为构建的模型可…

Leetcode-day31-01背包问题

46. 携带研究材料 1.dp数组代表的是什么? 这里的dp数组是一个二维数组,dp[i][j]是从前i个物品中任选放入容量j内的最大价值。 2.递推公式。 不放物品i:由dp[i - 1][j]推出,即背包容量为j,里面不放物品i的最大价值&am…

【时时三省】(C语言基础)数组参数

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 一维数组传参 一维数组传参 数组大小可以省略 也可以写成指针 如果这个一维数组是个指针数组 写成指针数组 或者写成二级指针 这个上面列的都是正确的写法 二维数组传参 第5行的写法是不行…

一条微博,让联想少卖16亿?

关注卢松松,会经常给你分享一些我的经验和观点。 万万没想到,联想起诉的第一个自媒体博主竟然是万能的大熊。 微博账号“万能的大熊”因造谣联想集团,被判向联想赔礼道歉,要在微博账号首页置顶位置发布致歉声明并连续保留30日&…

【访问者模式】设计模式系列:解锁复杂对象结构的秘密武器

文章目录 访问者模式详解:理论与实践1. 引言1.1 访问者模式的历史背景1.2 模式的动机与应用场景1.3 为什么选择访问者模式 2. 访问者模式概述2.1 定义2.2 问题场景2.3 模式结构 3. 模式优缺点分析3.1 优点3.2 缺点 4. 访问者模式实现步骤4.1 创建抽象元素接口4.2 实…

GitHub 与 AWS CodeCommit

代码库对决 欢迎来到雲闪世界。在软件开发领域,高效管理代码至关重要。Git 存储库等版本控制系统 (VCS) 是无名英雄,为代码更改、协作和历史跟踪提供了安全避风港。在选择合适的存储库平台时,出现了两个巨头:GitHub 和 AWS CodeC…

【前端面试】看react源码,解读useState

点击:react git 链接 截止2024.8.22最新版本如下 React hooks 源码好深,hook封装位于packages/react-reconciler/src/ReactFiberHooks.js hook的数据类型: export type Hook = {memoizedState: any,baseState: any,baseQueue: Update<any, any> | null,queue: an…

Vue vue/cli3 与 vue/cli4 v-for 和 v-if 一起使用冲突

问题描述 异常信息&#xff1a;[vue/no-use-v-if-with-v-for] The this.$router.options.routers expression inside v-for directive should be replaced with a computed property that returns filtered array instead. You should not mix v-for with v-if.eslint-plugin-v…

基础算法--高精度数据(1)

高精度数据处理一般内容简单&#xff0c;写代码难度较大&#xff0c;可能部分内容涉及基础数学、初等数论等知识。请小心食用。不过本节不会给大家太难的高精度处理&#xff0c;我们第一次接触&#xff0c;不能劝退大家对吧。 高精度算法是指&#xff0c;利用基础或高级的数学…

pygame—炸弹牌(可做课设)

游戏介绍 在5X5的数字宫格里翻牌&#xff0c;翻出所有的2和3即可获胜每一格只能是0、1、2、3&#xff0c;第六列和最第六行为 X | Y&#xff0c;X代表该列或该行的数字总和&#xff0c;Y代表该列或该行的0的个数控制难度&#xff0c;每行每列的数字总和不超过9该游戏需要一定运…

Vue3学习笔记之数据绑定篇(0823)

学习完Vue2 的C友们&#xff0c;今天继续追赶Vue3的大潮流吧&#xff01; 废话不多说&#xff0c;直接上代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"…

MobaXterm接触session会话保存14个的限制

问题描述 在我们使用MobeXterm的过程中&#xff0c;发现session保存了14个之后&#xff0c;再无法继续保存了&#xff1b; 原因是免费版本的MobeXterm的最大个数被限制了&#xff0c;需要进行破解&#xff1b; MobaXterm-keygen解除session保存限制的python脚本 可以使用上面…

计算机的错误计算(七十一)

摘要 计算机的错误计算&#xff08;七十&#xff09;探讨了大数的正割函数的错误计算。本节讨论另外一类数值&#xff1a; 附近数 的正割函数的计算精度问题。 例1. 已知 计算 若用 在 Python下编程计算&#xff0c;则有 若在 Excel 中计算&#xff0c;则有&#xff1a…