HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    模拟tcp发包工具

    发布时间:2023-03-19 11:07:28     稿源: 创意岭    阅读: 74        问大家

    大家好!今天让创意岭的小编来大家介绍下关于模拟tcp发包工具的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    本文目录:

    模拟tcp发包工具

    一、tcp调试助手怎么用 linux

    TCP调试助手是一个辅助调试UDP/TCP的工具软件,支持TCP Server、TCP Client、UDP等通信模式,为网络调试提供极大的方便。

    如何建立一个UDP连接?

    用TCP调试助手,选择UDP方式。打开两个,填写好端口号,然后互联就可以了!

    二、TCP、UDP协议测试

    基于Nodejs、socket.io,开发了TCP和UDP服务平台,帮助大家做TCP和UDP协议的测试

           在做硬件终端与服务器通信时,由于没有服务器、没有TCP或UDP服务后台,非常不方便进行TCP、UDP协议的测试,我这里为大家分别提供TCP和UDP测试平台。

          TCP测试服务平台信息:

          TCP协议硬件地址(报文上报地址)IP:47.107.99.203 端口:8002

          客户端TCP报文查看和报文下发地址:   http://47.107.99.203:8012/

         UDP测试服务平台信息:

         UDP协议硬件地址(报文上报地址)IP:47.107.99.203 端口:5003

         客户端UDP报文查看和报文下发地址: http://47.107.99.203:8013/

         如下进行简单演示硬件终端与服务平台的交互过程

        1、TCP协议终端与平台交互过程演示

        1.1 打开浏览器输入客户端地址:  http://47.107.99.203:8012/ ,即可访问到测试TCP协议的前端页面,如下图所示

    1.2 用TCP调试工具进行测试,输入终端测试服务器地址IP:47.107.99.203 端口:8002,建立SOCKET连接,并向服务器发送报文,如下图所示

    1.3 服务器接收到终端发送的报文,并实时的展示出来,如下图所示

    1.4 在下发输入框,输入需要下发的报文,然后点击”SEND”按钮,服务平台将向终端发送报文,如下图所示,终端接收到服务平台发送的报文

    2、UDP协议终端与平台交互过程演示

        2.1 打开浏览器输入客户端地址: http://47.107.99.203:8013/ ,即可访问到测试UDP协议的前端页面,如下图所示

       2.2 用UDP调试工具进行测试,输入终端测试服务器地址IP:47.107.99.203   端口:5003,建立UDP连接,并向服务器发送报文,如下图所示

      2.3   服务器接收到终端发送的报文,并实时的展示出来,如下图所示

    2.4 在下发输入框,输入需要下发的报文,然后点击”SEND”按钮,服务平台将向终端发送报文,如下图所示,终端接收到服务平台发送的报文

    三、如何使用 JMeter 对 TCP 协议的服务进行负载测试

    1.建立一种类型测试

    这里只描述简单的tcp测试建立步骤,因为目前支持的测试类型很多,无法一一陈述,功能细节部分可以参考JMeter文档

    1)创建测试线程组

    2)根据需要设定线程组参数

    3)建立TCP采样

    3)配置TCP采样参数

    基本上一个简单的测试计划就完成了,点击运行采样,就会将文本发送出去。

    2.高级功能配置

    1)配置结果查看监听器

    有时候需要查看线程组执行结果情况,这个可以通过设定采样结果查看

    针对上面配置的线程组应该执行6次,也就是发送6条消息,通过监控器可以看到的确有6个采样结果,说明执行成功

    2)配置变量

    有时候需要在报文中加上一些变化的内容,可以通过在文本中增加变量设定来实现

    如增加一个变量名 bank, 其值为 1111,在前面发送的报文中加上${bank}即可引用,如

    执行之后就可以在监控器中看到报文中有1111了

    3)配置TCP 二进制报文

    大多数情况下,报文可能非纯文本形式,常常都是不可读的二进制,所以这种情况下需要配置二进制报文。当前JMeter支持HEX形式,也就是16进制的报文输入配置

    参考: https://wiki.apache.org/jmeter/UserManual/Reference/TcpSampler

    当前支持三种格式 1.TCPClientImpl(默认) 2.BinaryTCPClientImpl 3.LengthPrefixedBinaryTCPClientImpl

    使用二进制方式需要做如下几件事:

    a.把普通文本报文翻译成HEX格式,可以找文本编辑器做这件事。比如notepad++,打开文本文件

    Ctrl+A全选内容,paste到一个新文件,替换掉所有空格

    3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e3c544c533e3c707273636f64653e6c6f67696e3c2f707273636f64653e3c69643e313233343536373c2f69643e3c746f6b656e3e75736a64666a6b736137356b733833326f6b7564736a643934383737616b6a6475613c2f746f6b656e3e3c2f544c533e

    如果报文还需要加上头的话,需要额外计算一下。比如增加一个command id和报文长度。比如上文中文本长度在编辑器状态栏上显示155长,假定command id是1.

    System.out.println("155 hex " + Integer.toHexString(155)); --- 9b

    System.out.println("1 hex " + Integer.toHexString(1)); ---1

    如果command id是4个字节那么16进制字符串就是 00 00 00 01

    如果length也是4个字节那么16进制字符串就是 00 00 00 9b

    去掉空格加入到前面报文中就拼成如下新报文

    000000010000009b3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e3c544c533e3c707273636f64653e6c6f67696e3c2f707273636f64653e3c69643e313233343536373c2f69643e3c746f6b656e3e75736a64666a6b736137356b733833326f6b7564736a643934383737616b6a6475613c2f746f6b656e3e3c2f544c533e

    再把新报文放入发送字符串输入框中。

    b.修改JMeter启动配置,就是前文提到的指定BinaryTCPClientImpl适配

    在jmeter.properties文件中找到如下部分,修改一下

    #---------------------------------------------------------------------------

    # TCP Sampler configuration

    #---------------------------------------------------------------------------

    # The default handler class

    #tcp.handler=TCPClientImpl

    tcp.handler=BinaryTCPClientImpl

    重新执行TCP测试,可以看到服务器端正常收到报文,如图

    jmeter测试TCP服务器,使用TCP采样器模拟发送TCP请求。

    TCP采样器:打开一个到指定服务器的TCP / IP连接,然后发送指定文本并等待响应。

    jmeter模拟发送TCP请求的方法:

    1.新建线程组,然后在线程组中新建TCP采样器

    TCP采样器中填写服务器地址、端口和“要发送的文本”,其它选项根据需要选填:

    re_use connection表示重复发送连接请求

    close connection 关闭连接

    如果TCP请求需要用户名/密码,可以在登录配置中填写

    2.新建“察看结果树”监视器,查看发送的请求和响应的结果。如果需要发送16进制报文这个地方会失败。

    jmeter发送16进制TCP报文的方法:

    很多TCP服务器报文为16进制,并且多数不能转换成文本发送,而jmeter默认发送文本。

    jmeter.properties中修改tcp.handler=BinaryTCPClientImpl ,启动jmeter重新发送,抓包查看既是16进制的tcp报文。

    另一个方法:可以在工作台新建–非测试元件–Property Display,Property Display中修改jmeter.properties只对当前进程有效。

    四、Tcpdump 用法详解

    大部分 Linux 发行版都内置了 Tcpdump 工具。如果没有,也可以直接使用对应的包管理器进行安装(如: $ sudo apt-get install tcpdump 和 $ sudo yum install tcpdump )

    通过表达式可以对各种不同类型的网络流量进行过滤,以获取到需要的信息。这也是 tcpdump 强大功能的一个体现。

    主要有 3 种类型的表达式:

    指定网络接口

    # tcpdump -i <dev>

    原始信息输出模式

    # tcpdump -ttttnnvvS

    更详细的输出,不解析主机名和端口名,使用绝对序列号,方便阅读的时间戳

    通过IP地址过滤

    # tcpdump host 10.2.64.1

    HEX 输出

    # tcpdump -nnvXSs 0 -c1 icmp

    通过源地址和目标地址进行过滤

    # tcpdump src 10.2.67.203

    # tcpdump dst 10.2.67.203

    通过子网进行过滤

    # tcpdump net 10.2.64.0/24

    监听指定端口号

    # tcpdump port 515

    指定协议

    # tcpdmp icmp

    端口范围

    # tcpdump portrange 21-23

    通过包大小过滤

    # tcpdump less 32

    # tcpdump greater 64

    # tcpdump <= 128

    写入 PCAP 文件

    # tcpdump port 80 -w capture_file

    读取 PCAP 文件

    # tcpdump -r capture_file

    可以通过命令选项的不同组合(使用 逻辑运算符 )完成更复杂的任务。运算符包括以下3种:

    # tcpdump src 10.2.64.29 and dst port 80

    即捕捉从指定主机(10.2.64.92)发出,且目标端口为 80 的所有网络数据

    # tcpdump src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16

    即捕捉从指定子网(192.168.0.0/16)发送到目标子网(10.0.0.0/8 和 172.16.0.0/16)的所有网络数据

    # tcpdump src 192.168.56.1 and not dst port 22

    即捕捉从指定主机(192.168.56.1)发出,且目标端口不为 22 的所有网络数据

    # tcpdump 'tcp[13] & 32!=0' 所有 URGENT ( URG ) 包

    # tcpdump 'tcp[13] & 16!=0' 所有 ACKNOWLEDGE ( ACK ) 包

    # tcpdump 'tcp[13] & 8!=0' 所有 PUSH ( PSH ) 包

    # tcpdump 'tcp[13] & 4!=0' 所有 RESET ( RST ) 包

    # tcpdump 'tcp[13] & 2!=0' 所有 SYNCHRONIZE ( SYN ) 包

    # tcpdump 'tcp[13] & 1!=0' 所有 FINISH ( FIN ) 包

    # tcpdump 'tcp[13]=18' 所有 SYNCHRONIZE/ACKNOWLEDGE ( SYNACK ) 包

    其他指定标志位的方式如:

    # tcpdump 'tcp[tcpflags] == tcp-syn'

    # tcpdump 'tcp[tcpflags] == tcp-fin'

    一些特殊的用法

    # tcpdump 'tcp[13] = 6' RST 和 SYN 同时启用的数据包(不正常)

    # tcpdump 'tcp[32:4] = 0x47455420' 获取 http GET 请求的文本

    # tcpdump 'tcp[(tcp[12]>>2):4] = 0x5353482D' 获取任何端口的 ssh 连接(通过 banner 信息)

    # tcpdump 'ip[8] < 10' ttl 小于 10 的数据包(出现问题或 traceroute 命令)

    # tcpdump 'ip[6] & 128 != 0' 非常有可能是黑客入侵的情况

    A tcpdump Tutorial and Primer with Examples

    以上就是关于模拟tcp发包工具相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    模拟器ip地址修改器

    有没有模拟装修房子的软件(手机上自己设计房子装修软件)

    安卓模拟器排行榜(安卓模拟器排行榜2020)

    文案狗ai文章生成(ai智能文章生成器)

    石头城公园景观设计(石头城公园景观设计理念)