一文教会实战网络抓包和分析包

话不多说 , 直接上图看内容

一文教会实战网络抓包和分析包

文章插图
 
#显形“不可见”的网络包
网络世界中的数据包交互我们肉眼是看不见的 , 它们就好像隐形了一样 , 我们对着课本学习计算机网络的时候就会觉得非常的抽象 , 加大了学习的难度 。
但莫慌 , 自从有了两大分析网络包的利器:tcpdump 和 Wireshark , 我们“看不见”的数据包 , 再也没有那么神秘了 。
唉 , 当初大学学习计网的时候 , 要是能知道这两个工具 , 就不会学的一脸懵逼 。
 
TCPdump 和 Wireshark 有什么区别?
 
tcpdump 和 Wireshark 就是最常用的网络抓包和分析工具 , 更是分析网络性能必不可少的利器 。
 
  • tcpdump 仅支持命令行格式使用 , 常用在 linux 服务器中抓取和分析网络包 。
  • Wireshark 除了可以抓包外 , 还提供了可视化分析网络包的图形页面 。
 
所以 , 这两者实际上是搭配使用的 , 先用 tcpdump 命令在 Linux 服务器上抓包 , 接着把抓包的文件拖出到 windows 电脑后 , 用 Wireshark 可视化分析 。
当然 , 如果你是在 Windows 上抓包 , 只需要用 Wireshark 工具就可以 。
 
tcpdump 在 Linux 下如何抓包?
 
tcpdump 提供了大量的选项以及各式各样的过滤表达式 , 来帮助你抓取指定的数据包 , 不过不要担心 , 只需要掌握一些常用选项和过滤表达式 , 就可以满足大部分场景的需要了 。
假设我们要抓取下面的 ping 的数据包:
一文教会实战网络抓包和分析包

文章插图
 
要抓取上面的 ping 命令数据包 , 首先我们要知道 ping 的数据包是 icmp 协议 , 接着在使用 tcpdump 抓包的时候 , 就可以指定只抓 icmp 协议的数据包:
一文教会实战网络抓包和分析包

文章插图
 
那么当 tcpdump 抓取到 icmp 数据包后 ,  输出格式如下:
一文教会实战网络抓包和分析包

文章插图
 
一文教会实战网络抓包和分析包

文章插图
 
从 tcpdump 抓取的 icmp 数据包 , 我们很清楚的看到 icmp echo 的交互过程了 , 首先发送方发起了 ICMP echo request 请求报文 , 接收方收到后回了一个 ICMP echo reply 响应报文 , 之后 seq 是递增的 。
我在这里也帮你整理了一些最常见的用法 , 并且绘制成了表格 , 你可以参考使用 。
首先 , 先来看看常用的选项类 , 在上面的 ping 例子中 , 我们用过 -i 选项指定网口 , 用过 -nn 选项不对 IP 地址和端口名称解析 。其他常用的选项 , 如下表格:
一文教会实战网络抓包和分析包

文章插图
 
接下来 , 我们再来看看常用的过滤表用法 , 在上面的 ping 例子中 , 我们用过的是 icmp and host 183.232.231.174 , 表示抓取 icmp 协议的数据包 , 以及源地址或目标地址为 183.232.231.174 的包 。其他常用的过滤选项 , 我也整理成了下面这个表格 。
一文教会实战网络抓包和分析包


推荐阅读