zoukankan      html  css  js  c++  java
  • Android 流量分析 tcpdump & wireshark

          APP竞争已经白热化了,控制好自己Android应用的流量能够给用户一个良好的用户体验噢,给用户多一个不卸载的理由。

          Android 怎样进行流量分析?用好tcpdump & wireshark这两个工具就好了。


    1、tcpdump命令格式

      tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名称 ]
              [ -i 网络接口 ] [ -r 文件名称] [ -s snaplen ]
              [ -T 类型 ] [ -w 文件名称 ] [表达式 ]
      tcpdump的选项介绍
       -a    将网络地址和广播地址转变成名字;
       -d    将匹配信息包的代码以人们可以理解的汇编格式给出;
       -dd    将匹配信息包的代码以c语言程序段的格式给出。
       -ddd    将匹配信息包的代码以十进制的形式给出;
       -e    在输出行打印出数据链路层的头部信息;
       -f    将外部的Internet地址以数字的形式打印出来。
       -l    使标准输出变为缓冲行形式;
       -n    不把网络地址转换成名字;
       -t    在输出的每一行不打印时间戳。
       -v    输出一个略微具体的信息,比如在ip包中能够包含ttl和服务类型的信息;
       -vv    输出具体的报文信息。
       -c    在收到指定的包的数目后,tcpdump就会停止;
       -F    从指定的文件里读取表达式,忽略其他的表达式;
       -i    指定监听的网络接口;
       -r    从指定的文件里读取包(这些包一般通过-w选项产生)。
       -w    直接将包写入文件里,并不分析和打印出来;
       -T    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程
    调用)和snmp(简单       网络管理协议。)

    2、tcpdump 參数 转自http://www.cnblogs.com/maifengqiang/p/3863168.html

    第一种是关于类型的keyword,主要包含host,net,port, 比如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。

    假设没有指定类型,缺省的类型是host.
    另外一种是确定传输方向的keyword,主要包含src , dst ,dst or src, dst and src ,这些keyword指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。假设没有指明方向keyword,则缺省是src or dstkeyword。
    第三种是协议的keyword,主要包含fddi,ip,arp,rarp,tcp,udp等类型。

    Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定 的网络协议。实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以能够将fddi协议包当作ether的包进行处理和 分析。

    其它的几个keyword就是指明了监听的包的协议内容。假设没有指定不论什么协议,则tcpdump将会监听全部协议的信息包。
      除了这三种类型的keyword之外,其它重要的keyword例如以下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&;或运算 是'or' ,'||';这些keyword能够组合起来构成强大的组合条件来满足人们的须要。



    下面是几个样例:
    A想要截获全部210.27.48.1 的主机收到的和发出的全部的数据包:
    #tcpdump host 210.27.48.1
    B想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信。使用命令:(在命令行中适用 括号时,一定要
    #tcpdump host 210.27.48.1 and / (210.27.48.2 or 210.27.48.3 /)
    C假设想要获取主机210.27.48.1除了和主机210.27.48.2之外全部主机通信的ip包,使用命令:
    #tcpdump ip host 210.27.48.1 and ! 210.27.48.2
    D假设想要获取主机210.27.48.1接收或发出的telnet包,使用例如以下命令:
    #tcpdump tcp port 23 host 210.27.48.1


    3、wireshark 转自 http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html



    4、Android怎样流量分析? 详细操作

    4.1、tcpdump 
    tcpdump -i any -p -vv -s 0 -w /sdcard/dump.cap
    4.2、adb pull
    adb pull /sdcard/dump.cap D:dump.cap
    4.3、wireshark
    採用wireshark查看 D:dump.cap
    4.4、具体分析
    通过wireshark分析已经能够
    假设须要更具体的分析,能够把dump.cap从wireshark里头导出成csv文件。然后再自己写个小程序分析。

    5、总结:

    Android 流量分析在Android应用后期优化是一个非常重要的方面,用好tcpdump&wireshark就能控制好应用的流量。






  • 相关阅读:
    SpringMVC中静态获取request对象 Spring中获取 HttpServletRequest对象【转载】
    springcloud 的loadbalancer 轮询算法切换方法 2021.4.3
    springboot项目启动增加图标
    rabbitmq 端口作用以及修改方法
    centos8 安装rabbitmq
    springcloud config client Value获取不到信息的问题的处理方法
    springcloud config配置git作为数据源然后启动报错 If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    Sublime Text的列模式如何操作
    centos8 安装redis
    jQuery简单的Ajax调用
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7083639.html
Copyright © 2011-2022 走看看