【网络调试工具】wriesharktcpdump

TcpDump

tcpdump抓包命令

网络报文的参数非常多,在实际抓包的时候都是采用条件过滤的选项来获取我们关心的报文。

1.基于IP地址过滤:host

tcpdump host 192.168.10.100

数据包的ip可以细分为源ip和目标ip两种:

# 根据源ip进行过滤
tcpdump -i eth2 src 192.168.10.100
# 更具目标ip进行过滤
tcpdump -i eth2 dst 192.168.10.200

2.基于网段进行过滤:net

若ip范围是一个网址,可以直接这样指定

tcpdump net 192.168.10.0/24

网段也可以再细分为源网段和目标网段

# 根据源网段进行过滤
tcpdump src net 192.168
# 根据目标网段进行过滤
tcpdump dst net 192.168

3.基于端口进行过滤:port

使用port就可以指定特定端口进行过滤

tcpdump port 8888

端口也可再细分为源端口,目标端口

# 根据源端口进行过滤
tcpdump src port 8088# 根据目标端口进行过滤 
tcpdump dst port 8088# 通知过滤两个端口
tcpdump port 80 or port 8088
tcpdump port 80 or 8088# 抓取一定范围内端口
tcpdump portrange 8000-8080
tcpdump src portrange 8000-8080
tcpdump dst portrange 8000-8080# 针对一些常见协议的默认端口,也可以直接使用协议名,而不用具体的端口号
# 比如http == 80,https == 443
tcpdump tcp port http

4.基于协议进行过滤:proto

# 只想查看icmp的包
tcpdump icmp# 只查看tcp的包
tcpdump tcp

5.将网络报文写入pcap文件

# 抓取eth0上的所有报文并写入.pcap文件中
tcpdump -i eth0 -w /data/test1.pcap# 抓取eth0上的所有报文并写入.pcap文件,再后台运行
tcpdump -i eth0 -w /data/test1.pcap &

抓取结束后kill -2 tcpdmp-pid,取处pcap文件,放入wireshark中解析

6.过滤规则组合

# 抓一个来自10.5.2.3,发往任意主机的3389端口的包
tcpdump src 10.5.2.3 and dst port 3389

参考文章:

肝了三天,整了一份全网最全(中文) tcpdump 抓包指南_tcpdump抓broadcast-CSDN博客

Wireshark

Wireshark提示

1 . Tcp previous segment lost(tcp先前的分片丢失)
2 . Tcpacked lost segment(tcp应答丢失)
3 . Tcp window update(tcp窗口更新)
4 . Tcp dup ack(tcp重复应答)
5 . Tcp keep alive(tcp保持活动)
6 . Tcp retransmission(tcp重传)
7 . Tcp ACKed unseen segument (tcp看不见确认应答)
8 . tcp port numbers reused(tcp端口重复使用)
9 . tcp retransmission(tcp重传)
10 . tcp fast retransmission (tcp快速重传)
11 . TCP Previoussegment lost(发送方数据段丢失)
12 . tcp spurious retransmission(tcp伪重传)

Wireshark着色规则

Wireshark默认有一组着色规则,可以在Packet Details面板中展开包的帧部分,查看着色规则。

image

在View | Coloring Rules中,打开着色规则窗口,可以自己创建、删除、选中、去除。

image

Wireshark抓取TCP三次握手和四次挥手

三次握手建链

image

四次挥手断链

image

参考:

(图文并茂,权威最详细)Wireshark抓包分析 TCP三次握手/四次挥手详解-腾讯云开发者社区-腾讯云 (tencent.com)

Wireshark异常情况

1.[TCP Spurious Retransmission]

TCP虚假重传:

发送端认为发送的package已经丢失了,所以重传了,尽管此时接收端已经发送了对这些包的确认。

实际上并没有超时,但看起来超时了,导致虚假超时重传的原因有很多种:

1.对于部分移动网络,当网络发生切换时会导致网络延时突增

2.当网络的可用带宽突然变小时,网络rtt会出现徒增的情,这会导致虚假超时重传

3.网路丢包(原始和重传的包都有可能丢包)会导致虚假重传超时

2.[TCP Retransmission]

超时引发的数据重传

3.[TCP Dup ACK xxx#y]

重复应答seq=xxx的表示报文到哪个序号丢失,y表示第几次丢失。

当package发生乱序或者丢失时,接收端会收到一些seq比期望值更大的package。每收到一次这种package就ack一次期望值,用以提醒发送方。

4.[TCP Out-Of-Order]

次序颠倒:

出现这个信息的原因时因为数据在传输过程中顺序乱了,也就是后一个packet的seq会小于前一个package的seq+Len

5.[TCP Fast Retransmission]

快速重传:

当发送接收到3个或以上的[TCP dup Ack],就意识到之前发的包可能丢了,于是快速重传package

6.[TCP segment of a reassembled PDU]

在用Wireshark抓包的时候,经常会看到TCP segment of a reassembled PDU,字面意思是要重组的协议数据单元(PDU:Protocol Data Unit)的TCP段。比如由多个数据包组成的HTTP协议的应答包,如下

这里的分段是指:上层协议HTTP的应答由多个分段组成,每个分段都是TCP协议的。TCP本身没有分段的概念,它的sequence number和acknowledge number 是使TCP是基于流的协议的支撑,TCP segment of a reassembled PDU的出现是因为Wireshark分析了其上层的HTTP协议而给出的摘要,如果配置Wireshark不支持HTTP协议解析

那么,同样的数据包就会变成下面的样子

每个TCP数据包都是这条流中的自身完整的一部分,TCP segment应该表述为分段是TCP协议,而不应该是TCP分段。

7.[TCP Keep-Alive]

保持连接特性 socket 发起方发包

8.[TCP Keep-Alive ACK]

保持连接特性 socket 应答方发包

数据包详细信息

image

1.Frame

物理层数据帧概况

image

2.Ethernet II

数据链路层以太网帧头部信息

image

3.802.1Q Virtual LAN

4.Internet Protocol Version4

互联网层IP包头部信息

image

IP包头:

image

5.Transmission Control Protocol

传输层数据段头部信息,此处是TCP协议

image

TCP包头:

image

6.Hypertext Transfer Protocol

应用层信息,此处是HTTP协议

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

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

相关文章

[UE 虚幻引擎] DTLoadFbx 运行时加载FBX本地模型插件说明

本插件可以在打包后运行时动态加载FBX模型。 新建一个Actor 并添加一个 DT Runtime Fbx Component。然后直接调用组件的函数 LoadFile 加载显示模型(注:不支持模型动画)FilePath : 加载模型的绝对路径。Create Collision : 是否创建碰撞体。本组件是继承于 UProceduralMeshC…

蒙特卡罗法求圆周率

蒙特卡罗法求圆周率蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真…

Serverless 使用阿里云OOS将http文件转存到对象存储

阿里云OOS提供了一种高效、灵活的解决方案,用于自动化HTTP文件到对象存储的转存。通过OOS,用户可以使用函数计算FC执行Python脚本,直接将文件从HTTP源转移到OSS,无需本地存储或额外ECS实例,降低了成本,提高了效率,并减少了错误。实践步骤包括创建OOS模板并在FC上运行。使…

MySQL随笔

1、隔离级别innoDB通过间隙锁锁定查询范围避免被其他事物修改未提交读(导致脏读)、已提交读(导致不可重复读)、可重复读(mysql默认,导致幻读)、串行化 脏读:事物执行的过程读到其他事物未提交的数据  不可重复读:事物a在多次读取某数据时,事物b进行了修改,导致食物…

Unity反射的几种方式

1.利用额外的相机将反射的内容渲染到Render Target Texture上参考:<Unity入门精要>10.2.1节 原理很简单,以反射面(例如镜子)为中心,创建一个相机,处于主相机在镜子中反射的位置,用脚本实时更改相机位置与朝向 这个相机渲染的内容不直接输出到屏幕,而是输出到一张RTT上 然…

通过v-if动态设置Element表格列时,出现闪动等问题

this.$nextTick(() => {this.$refs.table?.doLayout() //尽量加上可选链,不然可能存在获取不到table实例,造成doLayout为undefined的情况) })

测试用例设计方法六脉神剑——第一剑:入门试招,等价边界初探

1 背景及问题 G.J.Myers在《软件测试技巧》中提出:测试是为了寻找错误而运行程序的过程,一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试, 一个成功的测试是揭示了迄今为止尚未发现的错误的测试。对于新手来说,日常测试用例设计时,很少用到系统的方法论,大多…

原生html+js实现两两元素配对,用线条连接两个元素

效果如下:画线部分借鉴了“https://blogweb.cn/article/1403842582411”此链接文章作者的代码,感谢! 直接放出代码:点击查看代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>配对</title…

代码随想录算法训练营第三十天 | 51.N 皇后

51.N 皇后 题目链接 文章讲解 视频讲解递归三部曲递归函数参数 需要传入当前chessBoard和棋盘大小n,以及当前要放置皇后的行数rowvoid backtracking(vector<string>& chessBoard, int n, int row);递归终止条件 当最后一个皇后放置好后结束if(row == n) {result.pus…

使用Verdaccio创建一个本地私有库,并应用

安装verdaccio npm install -g verdaccio 直接verdaccio启动 可以先右上角登录然后先使用 npm create vite@latest 然后创建属于自己的一个vue3项目 vite-project(随便起了个名) npm i 一下 npm run dev 跑起来看看 然后创建下列文件夹style/indsx/scss .u-t…

【医疗器械产品分类规则了解】

分类目录由国家食品药品监督管理部门依据医疗器械分类规则制定: 医疗器械按照风险程度由低到高,管理类别依次分为第一类、第二类和第三类。医疗器械风险程度,应当根据医疗器械的预期目的,通过结构特征、使用形式、使用状态、是否接触人体等因素综合判定。 第一类医疗器械是…

VS下QT使用QCustomplot报错QPainter::HighQualityAntialiasing: Use Antialiasing instead

@Time:2024-06-07 @Error:VS+QT+QCustomplot 编译时报错 ERROR 4995 QPainter::HighQualityAntialiasing: Use Antialiasing instead @原因:使用标记有 deprecated 的函数。参见:/sdl(启用附加安全检查) | Microsoft Learn @解决办法:关闭编译报错或编译警告;参见:编…