抓取网页数据工具(tcpdump“不可见”的网络包网络世界中的数据包交互 )
优采云 发布时间: 2022-04-06 12:09抓取网页数据工具(tcpdump“不可见”的网络包网络世界中的数据包交互
)
显示“不可见”的网络数据包
网络世界中数据包的交互是肉眼看不见的。它们似乎是看不见的。当我们从课本中学习计算机网络时,我们会感到非常抽象,从而增加了学习的难度。
更不用说,我自己在大学时也是这样做的。
直到下班后,我才知道了两个强大的网络分析工具:tcpdump 和 Wireshark。这两个强大的工具将我们“不可见”的数据包一目了然地呈现在我们眼前。
唉,我在大学学习极网的时候,如果知道这两个工具,我就不会这么糊涂了。
tcpdump 和 Wireshark 有什么区别?
tcpdump 和 Wireshark 是最常用的网络数据包捕获和分析工具,是分析网络性能必不可少的工具。
所以,这两者实际上是一起使用的。首先在Linux服务器上使用tcpdump命令抓包,然后将抓到的文件拖到Windows电脑上,使用Wireshark进行可视化分析。
当然,如果您在 Windows 上捕获数据包,只需使用 Wireshark 工具即可。
Linux下tcpdump如何抓包?
tcpdump 提供了大量的选项和各种过滤器表达式来帮助您捕获指定的数据包,但是不用担心,您只需要掌握一些常用选项和过滤器表达式即可满足大多数场景的需求。
假设我们要捕获以下 ping 数据包:
要抓包上面的ping命令包,首先要知道ping包是icmp协议的,然后在使用tcpdump抓包的时候,可以指定只抓icmp协议包:
那么当tcpdump抓到icmp包时,输出格式如下:
在从tcpdump抓到的icmp数据包中,我们可以清晰的看到icmp echo的交互过程。首先,发送方发起一个ICMP echo request request消息,接收方收到后返回一个ICMP echo reply响应消息。文本,之后 seq 递增。
我在这里也为大家整理了一些最常见的用法,并绘制成表格供大家参考。
首先,我们来看看常用的选项。在上面的 ping 示例中,我们使用 -i 选项指定网络端口,使用 -nn 选项不解析 IP 地址和端口名称。其他常用选项如下表所示:
tcpdump 常用选项
接下来,我们来看看常用的过滤表用法。在上面的 ping 示例中,我们使用了 icmp 和 host 183.232.231.174 ,意思是捕获 icmp 协议的数据包以及源地址或目的地的数据包地址是 183.232.231.174。其他常用的过滤选项,我也整理了下表。
tcpdump 常用过滤器表达式类
说了这么多,你应该已经发现,tcpdump虽然功能强大,但是输出格式并不直观。
所以,在工作中,tcpdump只是用来抓数据包,不是分析数据包,而是将tcpdump抓到的数据包保存为pcap后缀文件,然后使用Wireshark工具分析数据包。
Wireshark 工具如何分析数据包?
除了抓包之外,Wireshark 还提供了一个图形页面,用于对网络数据包进行可视化分析。同时,它还内置了一系列汇总分析工具。
以上面的ping为例,我们可以使用下面的命令将抓包保存到ping.pcap文件中
然后将ping.pcap文件拖到电脑上,用Wireshark打开。打开后可以看到如下界面:
真的吗?在 Wireshark 页面上,您可以更直观地分析数据包,不仅显示每个网络包的头部信息,还可以使用不同的颜色来区分不同的协议。由于此数据包捕获只有 ICMP 协议,因此只有紫色条目。 .
接下来,在网络包列表中选择一个网络包后,在其下方的网络包详情中,可以更清楚的看到该网络包在协议栈各层的详细信息。例如,以网络包号 1 为例:
ping 网络数据包
Wireshark 采用分层的方式显示每一层的包头信息,清晰的向我们展示“不可见”的数据包。有什么理由不学习计算机网络吗?见面是不是太晚了?
从ping的例子可以看出,网络分层就像是有条不紊的分工。每一层都有自己的职责范围和信息。上层协议完成工作后,交给下一层,最后是一个完整的网络包。