【网络调试工具】wrieshark&tcpdump

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协议

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值