嵌入式学习day33

tcp的特点

面向字节流特点,会造成可能数据与数据发送到一块,成为粘包,数据之间不区分

拆包

因为缓冲区的大小,一次性发送的数据会进行拆分(大小不符合的时候)

就和水一样一次拆一次沾到一块,不好对数据进行拆分

字节流就是像水一样,一个接着一个往过流,字节流,紧挨着,

多次发的东西一次性接受

在底层下面,socket 会在发送数据会等一下,时间到了就一次性发送

粘包问题:

原因:

tcp流式套接字

数据与数据之间没有边界感

导致,可能多次的数据粘到一起

解决:

1.规定一些数据与数据之间的间隔符

“/aa” “/r/n”

2.可以指定要发送的数据的长度

3.自己将数据包打包

struct msg

{ int size;

char data[100];

};

struct msg data = {5, “1.txt”};

recv(read)
send(write)

wireshark

抓包工具 --- 抓取网络上数据

telnet 应用层协议

传输层 tcp

网络层 ip

数据链路层

物理层

ubuntu开启telnet服务 

sudo apt-get install openbsd-inetd
sudo apt-get install telnetd
sudo /etc/init.d/openbsd-inetd restart
注意:
安装之前,确保ubuntu能上网
ping www.baidu.com
# 查看 telnet服务是否开启
sudo netstat -a | grep telnet

wireshark过滤使用


过滤规则:

1、根据ip地址过滤
ip.srC = x.X.X.X
ip.dst =- x.x.x.x
根据端口过滤:tcp.srcportXX;二
tcp.dstportXX;二三
udp.srcportZ-XX;
udp.dstportXX:
根据协议类型过滤:
tcp udp icmptelnet
任意组合以上条件抓包:
如果与的关系:and
ip.src == 192.168.1.100 and tcp.dstport == 9999
如果或关系:Or
ip.src == 192.168.1.100 or ip.dst == 192.168.1.102
tcp host 192.168.1.100

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

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

相关文章

测试用例的设计

*涉及概念来源于《软件测试的艺术》 目录 一、为什么要设计测试用例? 二、黑盒测试与白盒测试介绍 三、测试用例常见设计方法 1.黑盒测试(功能测试) 2.白盒测试(结构测试) 四、测试策略 五、测试用例怎么写 一、为什么要设计测试用例? 由于时间…

Git 的基本使用

1.创建 Git 本地仓库 仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来,例如下面代码创建了gitcode_linux的文件夹,之后再对其进行初始化。创建⼀个 Git 本地仓库对应的命令为 git init &#xff0c…

少年我看你有缘,这部《html标签大合集》就送你了

HTML标签是用于定义网页结构和内容的元素。标签通常是成对出现的&#xff0c;由开始标记和结束标记组成&#xff0c;开始标记使用尖括号< >包围&#xff0c;结束标记使用尖括号和斜杠/包围。开始标记中的元素属性可以提供额外的信息。 1.基础标签 html 标签 head 头标…

Codeforces Round 967 (Div. 2) C题Guess The Tree

题目链接 令1是根&#xff0c;我们可以一层一层的递推出去。容易知道询问a&#xff0c;b如果结果是c&#xff0c;那么c就是a&#xff0c;b路径上的中点。我们可以先让根1和其他n-1个点都询问一遍&#xff0c;如果返回值是1&#xff0c;那么这些点就是第二层&#xff0c;深度为2…

【注解】反序列化时匹配多个 JSON 属性名 @JsonAlias 详解

JsonAlias 注解是 Jackson 提供的一个功能强大的注解&#xff0c;允许一个字段在反序列化时匹配多个 JSON 属性名。它适用于在处理多种输入数据格式时&#xff0c;或当 JSON 数据的键名可能变化时。 一、JsonAlias 的作用 多种别名&#xff1a;JsonAlias 允许你为一个字段定义…

ZNS SSD是不是持久缓存的理想选择?

随着数据量的增加和技术的进步&#xff0c;对于高效、可靠的存储解决方案的需求日益增长。传统的基于块的SSD虽然具有成本效益和持久性的优点&#xff0c;但在处理写密集型和更新密集型工作负载时存在局限性。 NAND闪存的特点是数据只能按页&#xff08;例如4KiB&#xff09;写…

2024年最新最全的【大模型学习路线规划】从零基础入门到精通!

2024年最新最全的大模型学习路线规划&#xff0c;对于零基础入门到精通的学习者来说&#xff0c;可以遵循以下阶段进行&#xff1a; 文章目录 一、基础准备阶段数学基础&#xff1a;编程语言&#xff1a;深度学习基础&#xff1a; 二、核心技术学习阶段Transformer模型&#xf…

[Linux#41][线程] 线程的特性 | 分离线程 | 并发的问题

1.线程的特性 进程和线程的关系如下图: 关于进程线程的问题 • 如何看待之前学习的单进程&#xff1f;具有一个线程执行流的进程 线程 ID 及进程地址空间布局 pthread_ create 函数会产生一个线程 ID&#xff0c;存放在第一个参数指向的地址中。 该线程 ID 和前面说的线程 ID …

动手实现基于Reactor模型的高并发Web服务器(一):epoll+多线程版本

系统流程概览 main函数 对于一个服务器程序来说&#xff0c;因为要为外部的客户端程序提供网络服务&#xff0c;也就是进行数据的读写&#xff0c;这就必然需要一个 socket 文件描述符&#xff0c;只有拥有了文件描述符 C/S 两端才能通过 socket 套接字进行网络通信&#xff0…

4.Redis单线程和多线程

1.Redis的单线程 Redis的单线程主要是指Redis的网络IO和键值对读写是由一个线程完成的&#xff0c;Redis在处理客户端的请求时包括获取&#xff08;Socket读&#xff09;、解析、执行、内容返回&#xff08;Socket写&#xff09;等都由一个顺序串行的主线程处理&#xff0c;这…

ProxySQL 读写分离配置

ProxySQL 是一个高性能、高可用的 MySQL 代理软件&#xff0c;旨在提升 MySQL 数据库的可扩展性和性能。它可以在应用程序和 MySQL 服务器之间充当中间层&#xff0c;提供强大的路由、负载均衡和查询优化功能。 ProxySQL 的主要功能&#xff1a; 查询路由&#xff1a; ProxySQ…

MySQL DDL详细讲解和常见问题案例示范

MySQL 删除操作和连接类型详细讲解和案例示范 DDL&#xff08;Data Definition Language&#xff0c;数据定义语言&#xff09;是用于创建和修改数据库结构的语句&#xff0c;包括创建表、索引、视图&#xff0c;以及修改这些结构。本文将详细介绍MySQL DDL语句的常见用法&…

stm32hal库can使用记录

一、单片机最小系统板使用can 资料&#xff1a;https://blog.csdn.net/yoie01/article/details/136921034 https://blog.csdn.net/qq_36561846/article/details/117431769 这里面有一个问题&#xff0c;最小系统板没有can收发器&#xff0c;所以没法直接用&#xff0c;只能测…

市盈率的概念

写篇有关市盈率的【不务正业】的内容。 重要公式 市盈率 官方的定义 平均市盈率&#xff1d;∑(收盘价发行数量)/∑(每股收益发行数量)&#xff0c;统计时剔除亏损及暂停上市的上市公司。 静态市盈率 滚动市盈率&#xff08;TTM&#xff09; 股票市盈率的意义 如果某股票有较…

培训第三十四天(初步了解Docker与套接字的应用)

上午 回顾 1、主从复制&#xff08;高可用&#xff09; 2、传统的主从复制 3、gtids事务型的主从复制 4、注意 1&#xff09;server_id唯一 2&#xff09;8.X版本需要get_ssl_pub_key 3&#xff09;5.X不需要 4&#xff09;change master to 5&#xff09;stop | sta…

项目服务器登录部分

从连接池中获取上下文&#xff0c;接受连接。 async_accept 这个函数本质上是监听和接受客户端连接的结合操作。 void CServer::StartAccept() {auto& io_context AsioIOServicePool::GetInstance()->GetIOService();std::shared_ptr<CSession> new_session mak…

JS中encodeURIComponent和encodeURI函数的区别

1、encodeURIComponent函数用于对完整的URL组件进行编码&#xff0c;包括查询参数、路径片段等。 它会对所有非字母数字字符进行编码&#xff0c;并将其替换为相应的URL编码形式。这包括对特殊字符&#xff08;如冒号、斜杠、问号、等号、加号等&#xff09;的编码。encodeURI…

拍抖音在哪里去水印,三招教你快速掌握去水印技巧

在抖音上&#xff0c;我们经常会看到一些精彩的内容&#xff0c;想要保存下来&#xff0c;但往往视频上会有水印。本文将分享五个免费且高效的去除抖音视频水印的技巧&#xff0c;帮助你轻松保存无水印的视频。 技巧一&#xff1a;奈斯水印助手(小程序) 奈斯水印助手是一款专…

GIS空间数据库,基本概念

文章目录 一、前言二、空间概念三、地理空间四、空间数据五、数据库六、空间数据库七、空间数据库与传统数据库的差异7.1 信息描述差异7.2 数据管理差异7.3 数据操作差异7.3 数据更新差异7.3 服务应用差异 一、前言 数据是指客观事物的属性、数量、位置及其相互关系等的符号描…

JavaScript(30)——解构

数组解构 数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法 基本语法&#xff1a; 赋值运算符左侧的[]用于批量声明变量&#xff0c;右侧数组的单元值将被赋值给左侧变量变量的顺序对应数组单元值的位置依次进行赋值操作 const arr [1, 2, 3, 4, 5]const [a, b…