tcpdump是Linux系统下的一款抓包命令集,工作原理是基于网卡抓取流动在网卡上的数据包。在Linux系统中由于tcpdump命令的简单和强大,我们一般直接使用tcpdump命令来抓取数据包。保存之后,拖下来在wireshark中分析
一、TCP数据包抓取
tcpdump常用参数:
-c:表示要抓取的包数量,比如-c 100表示我要抓取100个满足条件的包。
-i:表示指定对哪个网卡接口进行抓包,比如-i eth0,表示对eth0这个网卡进行抓包
-n:不对具体ip地址进行域名解析,直接显示ip地址
-nn:不对具体ip进行域名解析,并且端口号也不显示服务的名称,直接显示数字
-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。
-w:将抓包数据输出到文件中而不是打印到屏幕上。
以下这两个参数:可作抓包的时候打印出信息,作为参考,毕竟我们要在wireshark分析的
-XX:输出数据包的头部数据。
-vvv:打印和分析的时候,产生非常详细的输出
1、环境
博主这边,BMC(Linux系统)中有一个Client客户端,简称BMCClient,安卓卡(安卓系统)中有一个Server端,简称CardServer,BMCClient和CardServer基于TCP连接.
2、情景介绍和逻辑分析
如果出现网络不稳定或者网络丢包等情况,就会影响BMCClient和CardServer之间收发消息,可能存在BMCClient发送的消息,CardServer程序未接收到;也可能是CardServer程序发送的消息,BMCClient程序未接收到。这时,就需要两端抓包分析
3、抓包命令
根据BMC和安卓卡的网卡,指定网卡抓包
BMC中查询网卡的方法:ip addr (或者ifconfig)
博主BMC中使用的网卡是br0,因此抓包抓取的是br0网卡的
(1)、抓取BMC tcp包 (或者.pcap)
tcpdump -i br0 -w /home/bmctest.cap BMC tcp包 (或者.pcap)
(2)、抓取安卓卡 tcp包
tcpdump -i eth1 -w /home/cardtest.cap
(3)、其他常用抓包命令
a、抓取所有该网卡和该IP之间,收到的数据,src表示服务器收到的数据,如果该参数缺省,默认抓取所有数据
tcpdump -i eth0 src host 192.39.45.66
b、抓取所有该网卡和该IP之间,收到的数据,dst表示服务器发出去的数据,如果该参数缺省,默认抓取所有数据
tcpdump -i eth0 dst host 192.39.45.66
c、查看8080端口号的会话数据包,port表示端口号,后面比如跟8080。-n表示不对具体ip地址做域名解析,直接显示会话两边的具体ip地址
tcpdump -n -i eth0 port 8080 and host 192.39.45.66
d、一条完整的常用抓包命令
tcpdump -c 10 -nn -i eth0 tcp dst port 8080 and host 192.39.45.66 -w /home/xxx/MyTest.pcap
二、使用wireshark工具分析数据包
TCP的状态FLAGS字段状态
- SYN表示建立连接,
- FIN表示关闭连接,
- ACK表示响应,
- PSH表示有 DATA数据传输,
- RST表示连接重置
常用筛选方法使用示例如下:
1、根据ip筛选
IP源地址(Source):可以理解为发送方的IP
IP目的地址(Destination):可以理解为接收方的IP
(1)、筛选IP源地址为5.5.13.165的数据包---------------------- ip.src==5.5.13.165
(2)、筛选IP目的地址为 5.5.13.81的数据包---------------------- ip.dst == 5.5.13.81
一般看PSH状态的,可以看到传输的数据
(3)、筛选5.5.13.165 到 5.5.13.81的数据包---------------------- ip.src==5.5.13.165 && ip.dst == 5.5.13.81
(4)、筛选IP为5.5.13.81的数据包---------------------- ip.addr==5.5.13.81
2、根据port筛选
TCP源端口:可以理解为发送方的端口
TCP目的端口:可以理解为接收方的端口
(1)、筛选TCP源端口为10302的数据包----------------------tcp.srcport==10302
(2)、筛选TCP目的端口为16678的数据包----------------------tcp.dstport == 16678
(3)、筛选TCP端口为10302的数据包----------------------tcp.port==10302
3、 根据目的ip和目的端口筛选数据包----------------------ip.dst == 5.5.13.165 && tcp.dstport==10302
4、筛选mac地址为04:f9:38:ad:13:26的数据包----------------------eth.src == 04:f9:38:ad:13:26
三、TCP三次握手过程
四、丢包示例,丢包时,比较明显的会出现很多TCP Dup ACK
文章来源:https://www.toymoban.com/news/detail-639982.html
文章来源地址https://www.toymoban.com/news/detail-639982.html
到了这里,关于TCP抓包和数据包分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!