TCP抓包和数据包分析

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字段状态

  1. SYN表示建立连接,
  2. FIN表示关闭连接,
  3. ACK表示响应,
  4. PSH表示有 DATA数据传输,
  5. 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

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粤M温同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值