tcpflow的简单用法

问题

作为一个基层的后端工程师,经常会被各式各样的人丢各种各样的bug,但是,他们通常只会说相同的一句话,怎么又出错了,快去查一下。然后,就把一口大锅摔到你的头上,拍拍手就走了。这时你的心里肯定有一万只草泥马呼啸而过,难道不能再多提供一些信息嘛。但是,你面对的可能是老板,可能是屁也不懂的产品,他们唯一能告诉你的就是他们自己的帐号信息。

这个时候,你只能登录上服务器,查看日志信息。但是,你惊奇的发现,写这个服务的码农,竟然从未输出过任何日志。真是晴天霹雳呀,幸好还有tcpflow,tcpdump这两大法宝,这次介绍如何使用tcpflow抓包查看请求的数据,以及返回的结果。

tcpflow

tcpflow是服务器上经常使用的一个小程序,它能够捕获tcp的数据流,并将其存储为方便分析和调试的格式。每一条tcp流都会被存储到独立的文件中,因此,典型的tcp流将会被分别存储为进、出两个文件。

tcpflow和tcpdump比较相似,它们都能处理来自实时或者存储到文件中的数据包。不同点是,tcpflow会重新构建真实的数据流,并且会分开存储。

虽然tcp数据包存在重传和乱序的情况,tcpflow能够按照正常的顺序重建数据流。1.0版本支持VLAN多路复用,但是,当前不支持IP fragmentation,数据流中如果存在IP fragments,不能被正常的处理。

tcpflow基于LBL Packet Capture Library,支持丰富的过滤条件。

安装

centos上使用yum安装

1
yum install tcpflow

简单使用

  • 一个简单的例子
1
tcpflow -cp -i eth0 port 18223

-c:将数据流打印到控制台,不要存储到文件中。

-p:非杂乱模式

-i:指定网络接口

port:指定监听的端口号

简单的说,将端口号18223的tcp流打印到控制台输出。

  • 只关心输入数据流
1
tcpflow -cp -i eth0 dst port 18223

dst:18223是tcp数据流的目的端口

  • 只关心输出流量
1
tcpflow -cp -i eth0 src port 18223

src:18223是tcp数据流的源端口

Comentarios