常用网络测试工具以及解决tcp协议带来得问题

news2024/11/16 9:23:44
一、解决粘包问题
1.1、tcp的特点

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

1.2、拆包

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

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

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

多次发的东西一次性接受

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

1.3、解决粘包问题

原因:

tcp 流式套接字

数据与数据之间没有边界

导致

可能多次的数据粘到一起

解决:

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

eg、”\aa"\r\n"

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

3、自己将数据打包

eg、

struct msg

{

int size;

char data[100]

}

相当于自己把自己打成一个包,和其他人不是一个,没有办法融合

2、加延时,让先把东西发过去,间隔一下,相当于就是跑出去了,被拉了一下,两人错开了

1.4、程序过程中遇到的问题

因为是文件IO,标准IO的问题,读写问题,因为fgets,先去底层取数据,我们把东西拿走了,而等文件IO,去取数据的时候东西已经没有了。

 signal(SIGCHLD,handler);
    char buf1[1024] = "3.c";
    write(fd,buf1,strlen(buf1)+1);
    //sleep(1);
    int file = open(buf1,O_RDONLY);
    write(fd,"\r\n",2);

解决办法

在网络里面有专门的读写操作

fgets()后面的参数需要一个流指针,后面是一个流指针,遇到\n结束,并且将\n读到

这样我们就可以将文件描述符,转换成字符流指针,通过fgets来获取这些信息,再设置一个标志符,来进行区分所发送的信息。

send()发数据

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

recv()

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

flag是指可以指定在网络中接收的方式

前面三个参数和read参数一致

 二、常用网络测试工具

ifconfig //查看主机上,网卡网络信息
ping                //测试 两台主机之间是否连通
telnet                //远程登录工具
ssh                    //硬件(开发板)
netstat                //查看当前主机上,活动的网络进程的相关的状态信息
arp                        //(ipc找mac)

2.1、# 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

开启telnet结果图

 2.2、ssh安装
    • /ssh登录 ubuntu 需要安装以下的服务
      sudo apt-get install openssh-server openssh-client
2.3、 抓包安装
  1. sudo apt install wireshark
  2. sudo wireshark(启动)

 2.4、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
2.5、netstat 测试查看网络端口使用情况
  • //正在活动的 常看tcp的//用的最多的
  • netstat -anp
  • -a //a] ]
  • 直接显示 ip port 的数字形式-n ll
  • -p //显示 进程的 程序名 和 pid
  • netstat-n                =-->列出当前所有网络端口使用情况
  • -tnetstat-n              =-->列出所有TCP通信的端口信息
  • netstat-n-U             =-->列出所有UDP通信的端口信息
  • netstat -n -i             =-->列出默认网络接口(网卡)上的通信信息
  • netstat -lnp | grep 8888             i===>查看指定端口上的通信详情

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

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

相关文章

vue3使用i18n实现国际化

安装vue-i18n npm install vue-i18n创建一个ts文件用于存储各种翻译 globalLang.ts的内容如下: export default {"cn": {},"en": {},"de": {},"es": {},"fr": {},"id": {},"it": {},&quo…

HDMI画面发白

这个问题困扰我很久了,今天在抖音上看到了解决方案! https://v.douyin.com/Ceie2g2s/ 量化范围:有限范围改成全范围。

Tomcat安装部署

简介 Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。 简单来说,Tomcat是一个WEB应用程序的托管平台&…

关于elementui table组件 —— 竖向表格

前端模拟数据方式&#xff1a; html代码&#x1f447;&#xff1a; <template><el-table :data"tableData" style"width: 60%;margin-top:20px" stripe :show-header"false" border :row-style"rowStyle"><el-table…

培训第三十五天(容器的基础命令使用)

1、创建一个容器并同时执行echo命令 # 快速启动一个容器执行特定的一次性命令并查看输出结果&#xff0c;输出结果后容器直接退出[rootdocker ~]# docker run -it --namea0 centos:latest echo "abc"abc[rootdocker ~]# docker psCONTAINER ID IMAGE COMMAND …

FreeRTOS 快速入门(六)之互斥量

目录 一、互斥量1、基本概念2、运作机制3、死锁现象4、递归互斥量 二、优先级反转和优先级继承问题1、优先级反转问题2、优先级继承问题 三、互斥量函数1、互斥量1、创建 2、获取互斥量3、释放互斥量4、删除互斥量 一、互斥量 1、基本概念 互斥量又称互斥信号量&#xff08;本…

Vue.js学习笔记(七)使用sortablejs或el-table-draggable拖拽ElementUI的el-table表格组件

文章目录 前言一、el-table-draggable是什么&#xff1f;二、使用步骤1.安装使用2.sortablejs 总结 前言 记录 el-table-draggable 插件使用方法。 一、el-table-draggable是什么&#xff1f; el-table-draggable的存在就是为了让vue-draggable支持element-ui中的el-table组件…

Lesson 81+82 Roast beef and potatoes

Lesson 8182 Roast beef and potatoes 词汇 bath n. 洗澡&#xff0c;浴缸 搭配&#xff1a;have a bath 泡澡 相关&#xff1a;take a shower 淋浴&#xff0c;冲个澡    shower&#xff1a;花洒&#xff0c;喷头 例句&#xff1a;Bobby总是在傍晚洗澡。    Bobby alw…

基于预训练模型,进行氨基酸序列编码,用于深度学习模型构建

本团队提供生物医学领域专业的AI&#xff08;机器学习、深度学习&#xff09;技术支持服务。如果您有需求&#xff0c;请扫描文末二维码关注我们。 在对氨基酸序列数据进行深度学习模型构建时&#xff0c;首先需要将字符形式的序列数据进行编码操作。最简单的当然是One-hot编码…

【Java】/* 双向链式队列 和 循环队列 - 底层实现 */

一、链式队列 1. 使用双向链表实现队列&#xff0c;可以采用尾入&#xff0c;头出 也可以采用 头入、尾出 (LinkedList采用尾入、头出) 2. 下面代码实现的是尾入、头出&#xff1a; package bageight;/*** Created with IntelliJ IDEA.* Description:* User: tangyuxiu* Date: …

[kaggle竞赛] 毒蘑菇的二元预测

毒蘑菇的二元预测 您提供了很多关于不同二元分类任务的资源和链接&#xff0c;看起来这些都是Kaggle竞赛中的参考资料和高分解决方案。为了帮助您更好地利用这些资源&#xff0c;这里是一些关键点的总结&#xff1a; Playground Season 4 Episode 8 主要关注的竞赛: 使用银行…

2024/8/22 英语每日一段

Belgian triathlete Claire Michel ultimately said it was a virus and not bacteria from the water that made her sick after a swim. But Belgium’s Olympic committee said in a statement that it hoped “lessons will be learned” for future Olympics. “We are th…

鸿蒙(API 12 Beta3版)【使用ImageEffect编辑图片】图片开发指导

场景介绍 ImageEffect提供了一系列接口用于图像的编辑。开发者可以通过ImageEffect接口处理不同图像输入类型Pixelmap、NativeWindow、NativeBuffer或Uri&#xff0c;获得滤镜处理效果。 针对ImageEffect&#xff0c;常见的开发场景如下&#xff1a; 通过ImageEffect提供的N…

iOS 18 Beta 7测试版本体验,无新功能,修复已知bug

近日苹果公司发布了iOS 18 beta7版本&#xff0c;版本号22A5346a。那iOS 18beta7版本是否比其他的测试版要更好用呢&#xff1f;以下测试结果仅供果粉参考&#xff0c;一机一况&#xff0c;以个人实际体验为准。 一、日常使用体验 1、App响应非常快&#xff0c;动画过渡时间稍…

【高等代数笔记】线性方程组的解法(三、四、五)

1. 线性方程组的解法 由于这个视频课的分p十分抽象&#xff0c;我还是把一节完整的课学完再发表笔记吧&#xff0c;要不然太零碎了。 接上一篇文章 阶梯形方程组为 { x 1 − x 2 2 x 3 − 1 0 0 \left\{\begin{array}{l} x_{1}-x_{2}2 \\ x_{3}-1 \\ 00 \end{array}\righ…

dll错误修复工具:一键解决系统DLL错误产生的程序问题(新手入门)

dll错误修复工具&#xff0c;主要解决导致Windows系统上程序出错的各种dll相关问题。金舟DirectXDLL一键修复提供了全面的且快速的扫描功能&#xff0c;能够检测出导致程序故障的任何dll错误&#xff0c;并且一键进行修复。 一、什么是dll文件 dll是系统的动态链接库文件&…

6年赚了300亿孙悟空才是真财神!带火文旅、引发装机热潮、搅动A股....这波热度你蹭到了吗?

《黑神话&#xff1a;悟空》上线后一博主连续32小时直播&#xff0c;观看人数超3000万&#xff0c;涨粉近46万&#xff01;该主播个人收益或高达85万元&#xff01;游戏里的36个取景地中&#xff0c;山西独占27个。8月20日&#xff0c;小西天景区出售门票比去年同期增长300%。 …

前端面试题-vue框架

1. 聊聊为什么会出现 React、vue 这样的框架&#xff0c;他们的出现解决了什么问题 用户界面越来越复杂&#xff0c;框架采用声明式的写法&#xff0c;将界面的构建和数据的管理分离出来&#xff0c;大大提升开发效率和维护效率。 &#xff08;1&#xff09;原生JS实现不太方…

如何在Visio中画精准的圆弧,角度标记,弧度标记(已解决)

1、导入 “绘图工具形状” 打开 Visio--》 然后&#xff1a; 点击 绘制工具形状 之后&#xff0c; 在界面会出现 绘制工具形状的选项 如下 本人 使用圆弧 &#xff0c;弧线功能&#xff0c;然后两头增加箭头&#xff0c;实现角度标注&#xff0c;如下

【Qt开发】建立自己的Qt基本类、函数库封装 包括图表、多线程、串口等

【Qt开发】建立自己的Qt基本类、函数库 包括图表、多线程、串口等 文章目录 前言QtCharts绘图继承QObject的QThread多线程QSerialPort串口配置、发送、接收回调函数附录&#xff1a;C语言到C的入门知识点&#xff08;主要适用于C语言精通到Qt的C开发入门&#xff09;C语言与C的…