51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2703|回复: 1
打印 上一主题 下一主题

[原创] 【大话性能】如何在服务器上抓包,测试必备技能

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-9-29 16:13:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

很多时候,开发或者产品不一定能给出很规范的接口或者相关文档,搞不好有些都只是通过口头传递信息,此时,我们就需要掌握独立抓包分析请求的方法,避免被动的等待,像我工作中就遇到过,请求时基于soap协议的,是一个硬件网关设备和平台的交换,一个事件就包含多次的交互,我就是利用抓包进行分析和模拟请求的。

更多高级的jmeter用法或者性能测试技巧,可以参考jmeter和Jenkins的性能测试自动化高级用法

核心思路

服务基本上都是部署在Linux上,在Linux下,当我们需要抓取网络数据包分析时,通常是使用tcpdump抓取网络raw数据包存到一个文件,然后下载到本地使用wireshark界面网络分析工具进行网络包分析。

tcpdump使用

tcpdump是一款非常强大的网络抓包工具,可以在网络问题的分析中提供很多有用的信息,适用场景丰富。tcpdump的使用简单易上手,它的命令格式如下:

tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>]
[-vv][-w<数据包文件>][输出数据栏位]

其他常用参数的说明:

-c:指定要抓取的包数量。
-i:interface:指定tcpdump需要监听的接口。
-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-s: <数据包大小> 设置每个数据包的大小。
-N:不打印出host的域名部分。
-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",
默认为"inout"。
-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。
对于要抓取的数据包较大时,长度设置不够可能会产生包截断。
-e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v:当分析和打印的时候,产生详细的输出。
-vv:产生比-v更详细的输出。
-vvv:产生比-vv更详细的输出。
-w<数据包文件> 把数据包数据写入指定的文件。

常用关键字说明:


host(缺省类型): 指明一台主机
net: 指明一个网络地址
port: 指明端口号
src: 指定网络源地址
dst: 指定目标网络地址;

常见例子

下面举几个常见对例子,供大家参考。

1、对网卡eth0进行抓包,并且只抓所有进入和离开网络地址59.111.243.17的包。

tcpdump -i eth0 net 59.111.243.17

2、对网卡eth0进行抓包,并且只抓所有进入和离开网络地址59.111.243.17的包,且源端口号为80。

tcpdump –i eth0 net 59.111.243.17 and srcport 80

3、对网卡eth0进行抓包,并且只抓所有进入和离开网络地址59.111.243.17的包,抓包个数指定为10000个,并写入temp.pcap。

tcpdump -i eth0 net 59.111.243.17 -c 10000 -w temp.pcap

4、Sql语句是通过网络以文本方式传输到mysql服务器端的。因此我们完全也可以通过tcpdump这个工具把所有的sql语句捕获到。

tcpdump -i eth0 -A -s 3000 port 3306 -w sql.log

5、想要截获所有210.27.48.1的主机收到的和发出的所有的数据包,使用命令。

tcpdump host 210.27.48.1

6、想要截获主机 210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令。

tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3)

7、如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令。

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

8、如果想要获取主机210.27.48.1接收或发出的telnet包,使用命令。

tcpdump tcp port 23 host 210.27.48.1

9、后台抓包, 控制台退出也不会影响,使用命令。

nohup tcpdump -i eth1 port 110 -w /tmp/xxx.cap &

最后,只需要把导出来对cap包,放到Wireshark中分析即可。

大家可持续关注大话性能公众号,不断学习测试实战技能和高薪岗位内推。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-25 13:37 , Processed in 0.064663 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表