Linux 命令之 - tcpdump
命令简介
tcpdump
是一个命令行工具,用于捕获和分析网络中传输的数据包。它允许用户截获网络传输的 TCP/IP 和其他数据包,是一个非常有用的网络故障排查和分析工具。tcpdump
可以直接从网络接口或已保存的文件中读取数据包,并提供过滤和转储机制。它是一个强大而灵活的数据包捕获和协议分析工具。
命令格式
1 | tcpdump [选项] [过滤表达式] |
参数说明
命令实例
基本用法
1.监视所有网络接口上的所有数据包
1 | tcpdump |
2.监视指定网络接口上的所有数据包
1 | tcpdump -i eth0 |
只捕获 eth0
网络接口的数据包。
3.监视特定 IP 地址的数据包捕获特定主机的数据包
1 | tcpdump host 192.168.1.100 |
只捕获与 IP 地址 192.168.1.100
相关的数据包。
4.查看 TCP 连接
1 | tcpdump -nn tcp |
显示所有的 TCP 数据包,不解析主机名和端口名。
5.查看 udp 连接
1 | tcpdump -nn udp |
6.查看 icmp 连接
1 | tcpdump -nn icmp |
7.监视特定端口的数据包
1 | tcpdump port 80 |
8.保存捕获的数据包
1 | tcpdump -w capture.pcap |
将捕获的数据包保存到 capture.pcap
文件中。
9.从文件中读取数据包
1 | tcpdump -r capture.pcap |
高级用法
1.网络流量统计
结合 tcpdump
和 awk
命令,可以进行简单的网络流量统计分析。
1 | # 统计每个主机的流量大小 (KB) |
2.实时网络监控
使用 tcpdump
配合其他工具,可以实现实时的网络数据包监控。
1 | # 监控 80 端口流量,实时输出到网页 |
tcpdump-websocket.py
是一个 Python 脚本,会接收 tcpdump
的数据包输出,并实时显示在网页上。
3.输出为 HTTP 请求响应格式
通过一些技巧,可以将 tcpdump
获取的 HTTP 数据包转换成标准的请求响应格式,以便于分析。
1 | tcpdump -nn -A -r capture.pcap 'tcp port 80' | sed -e 's/IP/\n\IP/' -e 's/[ ]*$/\n/' | sed '/\.$/N;/IP/d' |
以上命令会提取 capture.pcap
文件中的 HTTP 请求和响应数据,并格式化输出,方便分析。
总的来说,tcpdump
作为一款功能强大的数据包捕获和分析工具,在网络排错和分析中扮演着非常重要的角色,是 Linux 运维人员必须要掌握的命令之一。如果还有任何疑问,欢迎继续提问。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 生活日志!
评论