抓包

1.只抓包头

一般能抓到的每个包(称为“帧”更准确,但是出于表达习惯,本书可能会经常用“包”代替“帧”和“分段”)的最大长度为1514字节,启用了Jumbo Frame(巨型帧)之后可达9000字节以上,而大多数时候我们只需要IP头或者TCP头就足够分析了。在Wireshark上可以这样抓到包头。

新版本的wireshark(2.x以后)的Options对话框变化比较大,限制单包的方法是:捕获->选项,找到要抓包的接口,选中它,找到列表标题中的捕获长度(B),单击对应栏,发现变为可输出状态,在这里输入限制的单包大小即可(同旧版本的Limi each packet to)"Limit each packet to"的值。

一般设个偏大的数字:80字节,也就是说每个包只抓前80字节。这样TCP层、网络层和数据链路层的信息都可以包括在内。

如果问题涉及应用层,就应该再加上应用层协议头的长度。如果你像我一样经常忘记不同协议头的长度,可以输入一个大点的值。即便设成200字节,也比1514字节小多了。

用tcpdump命令抓包时可以用"s"参数达到相同效果。比如以下命令只抓etho上每个包的前80字节,并把结果存到/tmp/tcpdump.cap文件中。

[root@server/]#tcpdump -i eth0 -s 80 -w /tmp/tcpdump.cap

2.只抓必要的包

可以在开始捕获之前应用捕获过滤器,这样就可以过滤掉不需要的数据包

tcpdump命令抓包时,也可以用"host"参数达到相同效果。比如以下命令只抓与1.1.1.1通信的包,并把结果存到/tmp/tepdump.cap文件中。

[root@server-1/]#tcpdump -i eth0 host 1.1.1.1 -w /tmp/tcpdump.cap

注意:设置过滤捕获器之前务必三思,以免把有用的包也过滤掉,尤其是容易被忽略的广播包。当然有时候再怎么考虑也会失算,比如我有一次把对方的IP地址设为filter,结果一个包都没抓到。最后只能去掉filter再抓,才发现是NAT(网络地址转换)设备把对方的IP地址改掉了。

3.标记数据包

抓的包除了要小,最好还能为每步操作打上标记。这样的包一目了然,赏心悦目。比如

要在Windows上抓一个包含三步操作的问题,我会这样抓。

ping <IP> -n 1-l 1ping <IP> -n 1-l 2ping <IP> -n 1-l 3ping <IP> -n 1-l 4

byte的数目表示是第几步,这样就算在步骤很多的情况下也不会混乱。

个性化设置

1.时间设置

我经常需要参照服务器上的日志时间,找到发生问题时的网络包。所以就把Wireshark的时间调成跟服务器一样的格式。

单击视图->时间显示格式->选择对应的时间格式,就可以实现此设置。

2.自定义数据包颜色

不同类型的网络包可以自定义颜色,比如网络管理员可能会把OSPF等协议或者与Spanning Tree Protocol(生成树协议)相关的网络包设成最显眼的颜色。

而文件服务器的管理员则更关心FTP,SMB和NFS协议的颜色。我们可以通过视图->着色规则来设置颜色。

如果已经有一套非常适合你工作内容的配色方案,可以请从导出,然后导入到你的Wireshark里。

3.更多设置

更多的设置可以在编辑->首选项窗口中完成。

这个窗口的设置精度可以达到一些协议的细节。比如在此窗口单击Protocols-->TCP就可以看到多个TCP相关选项,将鼠标停在每一项上都会有详细介绍。假如经常要对Sequence Number做加减运算,不妨选中Relative sequence numbers,这样会使Sequence number看上去比实际小很多。

过滤

很多时候,解决问题的过程就是层层过滤,直至找到关键包。前面已经介绍过抓包时的Capture Filter功能了。其实在包抓下来之后,还可以进一步过滤,而且这一层的过滤功能更加强大。

要说过滤的作用与技巧,就算专门写一本小册子都不为过。篇幅所限,本文只能“过滤”出最适合初学者的部分。

1.过滤规则

最简单的用法就是直接输入要过滤的协议,比如直接输入arp就会过滤出arp的数据包

2.追踪流

IP地址加port号是最常用的过滤方式。除了手工输入ip.addreq <IP地址>

&& tcporteq <端口号>之类的过滤表达式。

Wireshark还提供了更快捷的方式:右键单击感兴趣的包,选择追踪流(选择TCP还是UDP要视传输层协议而定)

就可以自动过滤,而且该Stream的对话内容会在新弹出的窗口中显示出来。

经常有人在论坛上问,Wireshark是按照什么过滤出一个TCP/UDP Stream的?

答案就是:两端的IPport

单击Wireshark的统计->Conversations,再单击TCP或者UDP标签就可以看到所有的Stream。

3.鼠标帮助过滤

我们有时因为Wireshark而苦恼,并不是因为它功能不够,而是强大到难以驾驭。比如在过滤时,有成千上万的条件可供选择,但怎么写才是合乎语法的?虽然http://www.wireshark.org/docs/dfref/提供了参考,但经常查找毕竟太费时费力了。

Wireshark考虑到了这个需求,右键单击Wireshark上感兴趣的内容,然后选择作为过滤器应用->选中,就会在Fiter 中自动生成过滤表达式。在有复杂需求的时候,还可以选择AndOr等选项来生成一个组合的过滤表达式。

让wireshark自动分析

有些类型的问题,我们根本不需要研究包里的细节,直接交给Wireshark分析就行了。

1.单击Wireshark的分析->专家信息,就可以在不同标签下看到不同级别的提示信息。比如重传的统计、连接的建立和重置统计,等等。在分析网络性能连接问题时,我们经常需要借助这个功能。

2.单击统计->Service Response Time,再选定协议名称,可以得到响应时间的统计表。我们在衡量服务器性能时经常需要此统计结果。

3.单击统计->TCP 流图形,可以生成几类统计图。

4.单击统计->捕获文件属性,可以看到一些统计信息,比如平均流量等,这有助于我们推测负载状况。比如图中的网络包才35kbit/s,说明流量低得很。

5.可以通过统计->流量图更为直观的看到通信的过程

可以先编写一个过滤的规则

在流量图窗口选择限制显示过滤器就可以看到两个IP直接的通信了

最容易上手的搜索功能

与很多软件一样,Wireshark也可以通过"Control+F"搜索关键字。假如我们怀疑包里含有"error"一词,就可以按下"Control+F"之后选中"String",单选按钮,然后在Filter中输入"error"进行搜索,很多应用层的错误都可以靠这个方法锁定问题包。

将IP地址解析为域名

进入编辑->首选项->Name Resolution->resolve network(IP) addresses将IP地址解析为域名

文章整理自《wireshark网络分析就这么简单》

超详细的wireshark笔记(2)-wireshark的使用技巧相关推荐

  1. PHP取经(二)变量、标量、特殊类型、常量——超详细PHP学习笔记

    初学小白超详细PHP学习笔记 定义变量 PHP-变量名的命名规则 变量的数据类型 标量类型--布尔类型 详述数据类型中的整型 标量类型 标量类型-浮点型 标量类型-字符串 当字符串中引号遇到美元咋办? ...

  2. python超详细的常用笔记

    关注微信公众号:(新生程序员教程) 下载python的word笔记,了解更多编程语言和程序员学习网站,学习平台 目录 第1章:Python的基础篇 1.1计算机的组成[了解] 1.2.计算机如何处理程 ...

  3. Redis 超详细版教程笔记

    视频教程:[狂神说Java]Redis最新超详细版教程通俗易懂 视频地址:https://www.bilibili.com/video/BV1S54y1R7SB 目录索引 nosql 阿里巴巴架构演进 ...

  4. JVM-内存与垃圾回收篇!女朋友看了都想当架构师的超详细保姆级笔记!呕心沥血之作!看完还不会你砍我!

    1. JVM与Java体系结构 1.1 Java虚拟机 Java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成. JVM平台的各种 ...

  5. 超详细Mybatis学习笔记(可供下载)

    文章目录 1.简介 2.第一个Mybatis程序 搭建环境 编写代码 测试 3.CRUD(增删改查) 3.1.几个属性 3.2.select 3.3.insert 3.4.delete 3.5.upd ...

  6. Kafka原理--超详细(学习笔记)

    一.概念理解 ​ Kafka 是最初由Linkedin 公司开发,**是一个分布式.支持分区的(patition).多副本的(replica).**基于zookeeper协调的分布式消息系统,它的最大 ...

  7. python 大学教授整理_剑桥大学教授用时35天亲自整理,Python超详细的基础笔记

    python简介 python是一种面向对象的解释型计算机程序设计语言,python的是吉多·范罗苏姆(Guido van Rossum)于1989年发明 任何语言都有优缺点,python也不例外,p ...

  8. redis zset转set 反序列化失败_7000字 Redis 超详细总结、笔记!建议收藏

    Redis 简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库 Redis 与 其他 key - value 缓存产品有以下三个特点: Redis ...

  9. Wireshark零基础使用教程(超详细)

    「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「专栏简介」:此文章已录入专栏<网络安全快速入门> Wiresha ...

最新文章

  1. ptam tracking
  2. sqlserver sql语句|经典sql语句|实用sql语句
  3. docker网络之macvlan
  4. 艾伟:详解AJAX核心 —— XMLHttpRequest 对象 (下)
  5. 三维数组设置索引_10-Unity入门学习之C#基础9「数组」
  6. 爱奇艺深度语义表示学习的探索与实践
  7. 【Python】密码生成器
  8. 3.3.4.5. 日期计算
  9. 几何深度深度学习的学习之路
  10. “SecureCRT遇到一个致命的错误且必须关闭”处理办法
  11. 《Python算法教程简及PDF电子版下载
  12. 云计算之IasS、PasS、SaaS
  13. 《机器学习实战》--资料下载和运行环境
  14. redis-trib.rb命令详解
  15. CDH集成ES MasterNotDiscoveredException问题解决
  16. 配置路由器console接口密码和vty接口密码
  17. 最大公约数用c语言表达,c语言求最大公约数(用c语言编写求最大公约数)
  18. Opencv入门(播放AVI视频)
  19. 某客服热线呼叫中心话务分析
  20. ZOJ Problem Set - 4043 Virtual Singers(2018acm 青岛赛区热身赛)

热门文章

  1. 【Java SE】数组的打印方式
  2. Win系统速览桌面功能失效 - 解决方案
  3. SSH远程控制与访问
  4. 一加 Ace 竞速版什么时候发布 一加 Ace 竞速版配置怎么样
  5. 替换读到的文件中的某一元素 pd 格式
  6. Kettle闪退,以及Kettle资源库connect报错小解
  7. java获取手机通讯录权限_iOS6 中如何获得通讯录访问权限
  8. xorg介绍 xorg和桌面环境的关系
  9. 非常有意思的网页版在线PS
  10. STM32F103ZE和STM32F207ZG的芯片区别