linux下使用tcpdump抓取数据包

  • 我们都知道windows系统下抓包有强大的wireShark工具,Linux下则可以使用tcpdump进行抓包。

tcpdump命令格式

tcpdump option proto dir type

  • option : 可选参数
  • -w 写数据到文件
  • -r 从文件读数据
  • -A 以ASCII码方式显示每一个数据包(不显示链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据
  • proto : 协议。
  • tcp
  • udp
  • ether
  • wlan
  • ip
  • ip6
  • dir : 方向。
  • src 源地址
  • dst 目的地址
  • type : 类型。
  • host 主机
  • net 网络
  • port 端口
  • portrange 端口范围

举例

  • tcpdump host 192.168.10.100 抓取该ip地址上的所有数据包
  • tcpdump src port 8088 抓取源端口号8088上的所有数据包
  • tcpdump portrange 8000-8080 抓取这个端口范围的所有数据包
  • tcpdump tcp 抓取所有tcp数据包
  • tcpdump -i lo 抓取本地回环包

tcpdump输出内容介绍

19:50:51.802675 IP ubuntu.53284 > 182.92.205.179.10088: Flags [P.], seq 1:7, ack 23, win 64218, length 6
  • 19:50:51.802675 时间
  • IP 网络协议
  • ubuntu.53284 发送方地址以及端口号
  • 182.92.205.179.10088 接收方地址以及端口号
  • Flags [P.] flags标识符。有以下几种
  • [S] SYN(开始连接)
  • [P] PSH(推送数据)
  • [F] FIN (结束连接)
  • [R] RST(重置连接)
  • [.] 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG)
  • seq 序列号
  • ack 确认号
  • length 数据长度

抓包分析

  • 命令:tcpdump host 182.92.205.179
  • 先抓取这个地址上的所有数据包

三次握手

20:28:44.659214 IP ubuntu.53310 > 182.92.205.179.10088: Flags [S], seq 3892635409, win 64240, options [mss 1460,sackOK,TS val 3092868458 ecr 0,nop,wscale 7], length 0
20:28:44.686879 IP 182.92.205.179.10088 > ubuntu.53310: Flags [S.], seq 1283407174, ack 3892635410, win 64240, options [mss 1460], length 0
20:28:44.686916 IP ubuntu.53310 > 182.92.205.179.10088: Flags [.], ack 1, win 64240, length 0
  • 可以看到客户端先发送了一个SYN请求,服务端回应了一个ACK + SYN,客户端回应了一个ACK,三次握手建立连接。(这里flags里面的点就是ACK)

数据传输

  • 客户端发送了一个"hello"字符串
20:29:09.856194 IP ubuntu.53310 > 182.92.205.179.10088: Flags [P.], seq 1:7, ack 1, win 64240, length 6
20:29:09.856332 IP 182.92.205.179.10088 > ubuntu.53310: Flags [.], ack 7, win 64240, length 0
  • flags标志位为P,表示进行数据推送。

四次挥手

20:24:52.536351 IP ubuntu.53304 > 182.92.205.179.10088: Flags [F.], seq 1, ack 1, win 64240, length 0
20:24:52.536547 IP 182.92.205.179.10088 > ubuntu.53304: Flags [.], ack 2, win 64239, length 0
20:24:52.561859 IP 182.92.205.179.10088 > ubuntu.53304: Flags [FP.], seq 1, ack 2, win 64239, length 0
20:24:52.561889 IP ubuntu.53304 > 182.92.205.179.10088: Flags [.], ack 2, win 64240, length 0
  • 客户端发起断开请求FIN,服务端回应ACK,服务端发起断开请求FIN,客户端回应ACK。完成四次挥手断开连接。

备注

  • 具体三次握手和四次挥手,以及数据的推送过程在这里就不详细分析了,其实和wireShark差不多,可以参考我在另一篇文章中的详细分析。
  • wireShark抓包分析tcp

输出

  • 如果你觉得在linux下分析数据不方便,我们可以把抓取到的数据包保存到文件中
tcpdump -w tcpdata.pcap host 182.92.205.179 
  • 然后把tcpdata.pacap文件传到windows系统下,可以直接使用wireShark打开进行分析。

参考

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值