linux tcpdump的使用详解

Tcpdump是linux下的网络数据包分析工具,

TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump就是一种免费的网络分析工具,尤其其提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。

 

 

上次在做一个kv的java客户端,连接到kv c++ server端的时候老是没有返回数据,也不清楚是否已经连接上,于是通过tcpdump诊断是否已经收到连接,并且诊断tcp包的内容是否跟c++ client连接到c++ server端的包内容是否一致。

 

常用选项:

-w 写到文件,-r 从文件读取 通过表达式来过虑

 

-c 指定多少包之后中止

-F 从文件中读取表达式

-i 多个网卡时,可以用于指定什么网卡

-l 输出时行缓冲

-n 不会将ip地址转成hostname,也就是不会进行dns查询

-nn 不会将已知的协议转换成名称

-s length 表明每个包的需要记录下来的大小,一般设置为0表示全记录

-v 输出包的详细信息,比如ttl,长度等

 

 



 

三种限定方式进行过滤

type : host net port portrange

比如: host foo, net 10.0.0.0 ?

dir: 传输方向,src dst and or 

proto: 协议类型,ether, fddi, tr, wlan, ip, ip6, ?arp, ?rarp, ?decnet, tcp ?and ?udp.?

其它可用

less length: 包的长度要小于length

greater length: 包的长度要大于length

 

 

 

组合子表达式

通过or[||]、and[&&]与not[!] 

有括号,需要转义

?tcpdump host helios and \( hot or ace \)

tcpdump  src 10.20.150.206查看源地址为该ip的包



 

Tcp输出分析

格式
src > dst: flags data-seqno ack window urgent options
Flags are some combination of S (SYN), F (FIN), P (PUSH), R (RST), W (ECNCWR) or E (ECN-Echo), or a single ‘.’ (no flags).
data-seqno 发送的数据序列
Ack 下一个数据序列的起始
Window 窗口大小

Tcp 22端口中的数据


 
Wireshark分析
tcpdump tcp port 22 –w a.pcap 



 
posted @ 2012-08-02 20:07  MXi4oyu  阅读(252)  评论(0编辑  收藏  举报