Linux实用命令|Tcp抓包指南


Tcpdump工具笔记 【Linux实用命令|Tcp抓包指南】参考链接:tcpdump高级过滤 - 九卷 - 博客园
作用: 对网络上的数据包进行截获的包分析工具
常用参数:

  • -a 将网络地址和广播地址转变成名字
  • -e 在输出行打印出数据链路层的头部信息
  • -i 指定监听的网络接口
  • -n 不进行IP地址到主机名的转换
  • -nn: 表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务
  • -A: 以ascii的方式显示数据包,抓取web数据时很有用
  • -X: 数据包将会以16进制和ascii的方式显示
  • -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
用过的表达式:host 主机;port 端口;src host 发包主机;dst host 收包主机。多个条件可以用and、or组合,取反可以使用 !
常用命令: 抓取包含端口22的数据包
tcpdump -i eth0 -vnn port 22
抓取源ip是10.10.10.122数据包。
tcpdump -i eth0 -vnn src host 10.10.10.122
抓取目的ip是10.10.10.122数据包
tcpdump -i eth0 -vnn dst host 10.10.10.122
在传输内容中过滤compute关键字
tcpdump -i eth0 -en -A | grep compute
curl主机未开放的端口时抓包:
tcpdump -n port 6378

结果示例:
15:06:22.672654 IP 123.57.147.74.37224 > 172.25.30.241.6378: Flags [S], seq 2597256390, win 29200, options [mss 1460,sackOK,TS val 3372580901 ecr 0,nop,wscale 7], length 0 15:06:22.672667 IP 172.25.30.241.6378 > 123.57.147.74.37224: Flags [R.], seq 0, ack 2597256391, win 0, length 0
结果分析:
tcpdump 的TCP输出结果详解_雨僧的技术博客_51CTO博客
  • [S] 表示这是一个SYN请求
  • [.] 表示这是一个ACK确认包,(client)SYN->(server)SYN->(client)ACK 就是3次握手过程
  • [P] 表示这个是一个数据推送,可以是从服务器端向客户端推送,也可以从客户端向服务器端推
  • [F] 表示这是一个FIN包,是关闭连接操作,client/server都有可能发起
  • [R] 表示这是一个RST包,与F包作用相同,但RST表示连接关闭时,仍然有数据未被处理。可以理解为是强制切断连接
  • win 342是指滑动窗口大小
  • length 12指数据包的大小

    推荐阅读