首页 > 系统相关 >Tcpdump和Wireshark的学习与使用

Tcpdump和Wireshark的学习与使用

时间:2024-02-04 15:47:26浏览次数:26  
标签:Tcpdump 捕获 tcp 学习 pcap Wireshark tcpdump wireshark

Tcpdump和Wireshark的学习与使用


背景

2024年2月份农历小年时。
同事为了解决一个应用忽快忽慢的问题去了上海客户那里。
第二天自己在理发时(周末)接到了他的电话,说到了一些问题情况。
比较明确的是,应用和数据库的请求经常出现 20ms 左右的高延迟的情况。

其实子很早之前学习过tcpdump和wireshark,但是具体是啥场景自己已经想不起来了。
同事问到之后只是模糊的进行了一些tcp内核参数比如nodelay、nopush等的说明。

第二天上班后又继续沟通,发现的确与最开始开会时说的可能的问题点很相似。
虽然有一些庆幸自己猜的没偏差太多,但是感觉自己对这几个工具的学习和整理太少了。

网络其实比操作系统还要复杂, 自己还是需要大量的学习和整理才可以。 

关于tcpdump和wireshark

学习来源: 
https://cloud.tencent.com/developer/article/1407601
基本命令
tcpdump -n -vvvv -i ens32 host 192.168.58.101 and port 8080 -w data.cap
复制
-n:不转换主机名、端口号(开启后看到的是IP地址,而不是主机名,
    实际使用中我们一般都比较关注服务器IP地址)
-v:显示详细信息,v越多信息越多
-i:指定网络接口,也就网卡的名字,常用的有eth0,eth1等,
    如果要监听所有网卡就是用-i any。
-w:抓取的包写入到文件,方便后续分析。实际中经常使用tcpdump抓包保存,
    然后使用Wireshark分析
-r:抓到的包也可以tcpdump打开再分析,tcpdump -n -vvvv -r data.cap 
-c:指定抓取的包的数目
-s:指定抓取的数据的长度

常用过滤条件

常用抓包命令
抓 HTTP GET 数据
tcpdump -i ens33 'tcp[(tcp[12]>>2):4] = 0x47455420'
# "GET "的十六进制是 47455420

抓 SSH 返回
tcpdump -i ens33 'tcp[(tcp[12]>>2):4] = 0x5353482D'
# "SSH-"的十六进制是 0x5353482D

抓 DNS 请求数据
tcpdump -i ens33 udp dst port 53

大于600字节
tcpdump -i ens33 'ip[2:2] > 600'

过滤器规则是tcpdump的核心技能,否则抓取的包太多,也根本无法分析。

过滤器的关键词有:host, port, net, src, dst, icmp, tcp, udp, http
逻辑关键词:and, or, not
包头过滤
 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0'

TCP的flags

[S] – SYN (开始连接)
[.] – 没有标记 (一般是确认)
[P] – PSH (数据推送)
[F] – FIN (结束连接)
[R] – RST (重启连接)
复制
为了提高网络效率,一个包也可以包含标志的组合,比如[S.],[FP.]

 seq:包序号
 cksum:校验码(见下面常见问题)
 win:滑动窗口大小
 length:承载的数据(payload)长度length,如果没有数据则为0

需要注意:
数据包中出现很多的cksum 0xxxx incorrect错误:
是因为操作系统为了提高网络效率不再计算校验码,
而是交给网卡计算。

tcp与wireshark的联合使用

联合使用方法:

使用 tcpdump 抓包:

tcpdump 是一个在类Unix操作系统中广泛使用的命令行抓包工具。你可以使用它来捕获网络流量,
并将捕获的数据包导出到一个文件中,以供之后分析。
例如,以下命令将捕获来自某个特定网络接口(eth0)的所有数据包,
并将它们保存到一个名为 capture.pcap 的文件中:
tcpdump -i eth0 -w capture.pcap

-i eth0 表明选择名为 eth0 的网络接口进行捕获。 
-w capture.pcap 表明将捕获的结果写入 capture.pcap 文件中。

使用 Wireshark 分析:

当你使用 tcpdump 捕获数据后,可以使用 Wireshark 打开 .pcap 文件进行详细分析。 
Wireshark 提供了用户友好的界面和强大的分析功能,如图表、流量统计、过滤器和协议解码器等。
你只需在 Wireshark 中打开之前保存的 capture.pcap 文件,
就可以看到所有的网络流量,并使用 Wireshark 提供的工具来进行深入分析。

区别与注意事项:

权限:
1. 使用 tcpdump 通常需要 root 权限,因为它需要访问网络接口进行原始数据包捕获。
2. Wireshark 通常不需要 root 权限打开 .pcap 文件进行分析,但捕获数据时需要。

性能考虑:
1. 捕获大量流量时,tcpdump 可以在没有图形用户界面的服务器上运行,减少资源消耗。
    对于可能导致性能下降的高流量网络,使用 tcpdump 的 -C(按文件大小切割)和
    -W(限制文件数量)选项可以轮替保存捕获的文件,避免产生一个非常大的文件。

滤波:
1. tcpdump 的滤波语法与 Wireshark 的不同。了解 tcpdump 
    的滤波语法可以让你更精确地捕获所需数据。
    当使用 tcpdump 过滤数据包时,需要特别小心以确保你不会无意中过滤掉重要的流量。
    
安全性:
1.捕获网络流量可能会涉及敏感数据,因此应确保你有权限进行这些操作,
并确保保存的 .pcap 文件安全。

存储空间:
长时间运行 tcpdump 可能会消耗大量的磁盘空间。
需要定期检查存储空间并根据需要管理 .pcap 文件。

时间同步:
1. 确保抓包时,服务器或计算机的时间是正确同步的,以便对事件进行正确的时间线分析。

将 tcpdump 捕获的数据包在 Wireshark 中进行分析,结合了 tcpdump 的高效数据捕获和 
Wireshark 的强大数据分析能力。通过这种方式,你可以准确、高效地监测和诊断网络问题。

关于wireshark的使用

下载:
https://2.na.dl.wireshark.org/win64/Wireshark-4.2.2-x64.exe
https://2.na.dl.wireshark.org/win64/WiresharkPortable64_4.2.2.paf.exe
# 注意下面这个是 使用手册
https://www.wireshark.org/download/docs/Wireshark%20User%27s%20Guide.pdf

需要注意 可以选择 Portable的安装文件。绿色版的可以移动文件夹就可以了。 
不需要重启机器

需要说明 这是2024.2.4最新版本的下载地址。

wireshark的简史

Wireshark简史
在1997年末,Gerald Combs需要一种追踪网络问题并且想要学习更多网络知识的工具,
因此他开始编写Ethereal(Wireshark项目的原始名称)来解决这两个问题。
在经历了几次开发停顿后,Ethereal于1998年7月发布了0.2.0版本。
几天后,补丁、bug报告和鼓励的话语纷纷涌现,Ethereal开始走向成功之路。
不久,Gilbert Ramirez看到了它的潜力,并向项目贡献了一个低级解析器。

1998年10月,Guy Harris正在寻找比tcpview更好的工具,
于是开始应用补丁并向Ethereal贡献解析器。

1998年末,Richard Sharpe在进行TCP/IP课程时发现了它在这些课程上的潜力,
并开始检查它是否支持他所需的协议。尽管当时它还未支持这些协议,
但可以轻松地添加新的协议。因此,他开始贡献解析器并提交补丁。
从那时起,为该项目做出贡献的人员名单变得越来越长,
几乎所有的贡献者都是从Wireshark尚未处理的协议开始,然后复制现有的解剖器代码,
并将代码贡献给团队。

2006年,该项目更名为Wireshark。

2008年,经过十年的发展,Wireshark终于发布了1.0版本。
这个发布版本被认为是第一个完整的版本,最低限度地实现了功能。
其发布与第一次Wireshark开发者和用户大会——Sharkfest同时举行。

2015年,发布了Wireshark 2.0版本,这个版本具备了全新的用户界面
。
2023年,Wireshark移交给Wireshark基金会,
这是一个在美国税务法501©(3)条款下运作的非盈利性组织。
该基金会提供项目的基础设施,主办SharkFest(我们的开发者和用户大会),
并倡导低级网络教育。

Wireshark的使用注意事项

今天与李畅老师沟通, 其实wireshark的 tcp流图形是一个很好的工具。

可以使用过滤条件, 选择一定的范围之后, 点击

统计->TCP流图形->显示往返时间等进行展示。


image

总结

有点长了, 改天继续写wireshark的用法与过滤使用等。

标签:Tcpdump,捕获,tcp,学习,pcap,Wireshark,tcpdump,wireshark
From: https://www.cnblogs.com/jinanxiaolaohu/p/18006346

相关文章

  • Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)
    原文:Hands-OnMachineLearningwithScikit-Learn,Keras,andTensorFlow译者:飞龙协议:CCBY-NC-SA4.0第十六章:使用RNN和注意力进行自然语言处理当艾伦·图灵在1950年想象他著名的Turing测试时,他提出了一种评估机器匹配人类智能能力的方法。他本可以测试许多事情,比如......
  • Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(二)
    原文:Hands-OnMachineLearningwithScikit-Learn,Keras,andTensorFlow译者:飞龙协议:CCBY-NC-SA4.0第三章:分类在第一章中,我提到最常见的监督学习任务是回归(预测值)和分类(预测类)。在第二章中,我们探讨了一个回归任务,使用各种算法(如线性回归、决策树和随机森林)来预测房屋价......
  • (2024.1.29-2024.2.4)C语言学习小结
    本周主要围绕《HeadfirstC》这本书展开C语言学习,按照计划,我学习了的内容。基本内容这周学习的内容像是上学期最后的内容的扩展、延申、深入,高级函数那块有点绕但慢慢啃下来还可以接受。以下是思维导图:遇到的问题与解决、经验教训等问题0(上周的问题这周才解决):看到书里......
  • Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(五)
    原文:Hands-OnMachineLearningwithScikit-Learn,Keras,andTensorFlow译者:飞龙协议:CCBY-NC-SA4.0第十二章:使用TensorFlow进行自定义模型和训练到目前为止,我们只使用了TensorFlow的高级API,Keras,但它已经让我们走得很远:我们构建了各种神经网络架构,包括回归和分类......
  • Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(六)
    原文:Hands-OnMachineLearningwithScikit-Learn,Keras,andTensorFlow译者:飞龙协议:CCBY-NC-SA4.0第十四章:使用卷积神经网络进行深度计算机视觉尽管IBM的DeepBlue超级计算机在1996年击败了国际象棋世界冠军加里·卡斯帕罗夫,但直到最近计算机才能可靠地执行看似......
  • 软件测试学习笔记丨App自动化基础
    查看设备IDadbdevices查看设备的Android系统版本adbshellgetpropro.build.version.r-elease查看想要启动app的包名adbshellpmlistpackages查看想要启动app的启动页面adbshellmonkey-p${package.name}-vvv1获取app的启动页面adblogcat|grep-idisplayedadb......
  • Argocd学习
    argocd官网文档链接ArgoCD官网文档在K8S集群使用argocd命令将集群添加到argcd的cluster列表中argocdclusteraddkubernetes-admin@iamdemo--nameiamdemo--kubeconfig/root/.kube/config遇到一个添加失败的问题,通过修改/root/.kube/config的server:https://iamdemo.tp......
  • 跟着思兼学习3D打印 Klipper 固件系列文章合集
    (01)XY电机方向调整新方法|使用force_move快速校准CoreXY电机方向(02)打印平台中心校准与调整|校准打印平台中心,最大化打印尺寸(03-1)加速度计与输入整形器|1,推荐。固件烧录,查找Klipper引脚定义,加速度计采样(03-2)番外1-自定义stm32f103bootloader|2编译st......
  • 很好用的python游戏环境(续):强化学习算法走迷宫游戏环境(导航问题 navigation):分享一个pyt
    前文分享了一个python下的maze游戏环境,本文再给出一个不错的实现项目,这个项目的实现更加的简单,并且可视化界面做的很好看,是用tkinter框架做的可视化:相关:迷宫游戏python实现Github地址:https://github.com/wonanut/Maze-Game/tree/Maze-game-v1.0.7......
  • 很好用的python游戏环境:强化学习算法走迷宫游戏环境(导航问题 navigation):分享一个pyth
    项目的GitHub地址(作者:莫凡):https://github.com/MorvanZhou/mmaze运行的示例代码:importmmazestart=(0,0)end=(10,10)m=mmaze.generate(width=11,height=11,symmetry="horizontal")solutions=m.solve(start=start,end=end)m.plot(solution=solutions[0],star......