zoukankan      html  css  js  c++  java
  • 万兆网调试(转)

    reference: https://blog.csdn.net/ningjinghai11/article/details/81984907

    使用wireshark抓包注意事项:

    由于网卡默认的一包数据比较小,应该手动设置成巨包格式。

    步骤:

    1.点击配置

    2.高级->巨帧数据包->选择4096字节。

    抓包数据显示如下:

    可见收到的万兆网UDP包,源地址为192.168.1.10,目的地址为192.168.1.5,源即fpga板卡,目的即主机的万兆网卡。

    数据分析:

    以太网帧格式:

    Ethernet II类型以太网帧的最小长度为64字节(6+6+2+46+4),最大长度为1518字节(6+6+2+1500+4)。其中前12字节分别标识出发送数据帧的源节点MAC地址和接收数据帧的目标节点MAC地址。(注:ISL封装后可达1548字节,802.1Q封装后可达1522字节)。

    接下来的2个字节标识出以太网帧所携带的上层数据类型,如下:

    IPv4: 0x0800

    ARP:0x0806

    PPPoE:0x8864

    802.1Q tag: 0x8100

    IPV6: 0x86DD

    MPLS Label:0x8847

    (1)源MAC+目的MAC+TYPE

    001b_21bd_be04为目的MAC,即万兆网卡的MAC;bbbb_bbbb_bbbb为源MAC地址,即FPGA板卡的AMC地址。(12字节)

    0800为以太网类型(2字节),

    (2)data段 此处的总包长包括此段的长度20字节+UDP包长  总包长=0x4500开始的20个字节+UDP包长

    4500(2字节);啥意思不清楚

    089c为总包长(=2204),8e57为帧序号,0x0000为flag,0x80(128)为Time to live , 0x11(17)为protocol UDP; 

    209a为header_checksum,c0a8_010a为源IP地址(192.168.1.10),c0a8_0105为目的IP地址(192.168.1.5);

    (3)UDP包段

    UDP包长(2184)=source_port(2字节)+destination_port(字节)+udp_length(2字节)+checksum(2字节)+data(2176字节)

    1B58为source_port_ID(=7000),1784为destination_port_ID(6020),0888为udp_length(2184),69d7为checksum;

    后面的为data 2176字节。

    wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)

    首先说几个最常用的关键字,“eq” 和 “==”等同,可以使用 “and” 表示并且,“or”表示或者。“!" 和 "not” 都表示取反。


      一、针对wireshark最常用的自然是针对IP地址的过滤。其中有几种情况:

      (1)对源地址为192.168.0.1的包的过滤,即抓取源地址满足要求的包。

               表达式为:ip.src == 192.168.0.1

      (2)对目的地址为192.168.0.1的包的过滤,即抓取目的地址满足要求的包。

               表达式为:ip.dst == 192.168.0.1

      (3)对源或者目的地址为192.168.0.1的包的过滤,即抓取满足源或者目的地址的ip地址是192.168.0.1的包。

               表达式为:ip.addr == 192.168.0.1,或者 ip.src == 192.168.0.1 or ip.dst == 192.168.0.1

      (4)要排除以上的数据包,我们只需要将其用括号囊括,然后使用 "!" 即可。

               表达式为:!(表达式)

      二、针对协议的过滤

      (1)仅仅需要捕获某种协议的数据包,表达式很简单仅仅需要把协议的名字输入即可。

                    表达式为:http

      (2)需要捕获多种协议的数据包,也只需对协议进行逻辑组合即可。

               表达式为:http or telnet (多种协议加上逻辑符号的组合即可)

      (3)排除某种协议的数据包

               表达式为:not arp      !tcp

      三、针对端口的过滤(视协议而定)

      (1)捕获某一端口的数据包

               表达式为:tcp.port == 80

      (2)捕获多端口的数据包,可以使用and来连接,下面是捕获高端口的表达式

               表达式为:udp.port >= 2048

      四、针对长度和内容的过滤

      (1)针对长度的过虑(这里的长度指定的是数据段的长度)

               表达式为:udp.length < 30   http.content_length <=20

      (2)针对数据包内容的过滤

          表达式为:http.request.uri matches "vipscu"  (匹配http请求中含有vipscu字段的请求信息)

  • 相关阅读:
    Fiddler-常用技巧
    Fiddler-工作原理
    C语言-EOF和feof()判断文件结尾的区别
    C语言-一个fopen函数中未使用二进制模式(b)引发的血案
    VIM-不常用或不知道的技巧
    C语言-srand种子详解
    C语言-字符串操作函数
    C语言-Makefile经典教程(掌握这些足够)
    分布拟合——正态/拉普拉斯/对数高斯/瑞利 分布
    曲线拟合——(2)拉普拉斯/瑞利/对数正态 曲线
  • 原文地址:https://www.cnblogs.com/limanjihe/p/9889193.html
Copyright © 2011-2022 走看看