linux tcpdump

tcpdump

tcpdump是unix系统下一个命令行抓包工具,需要使用root权限。

常用参数

host,指定一台主机。
port,指定端口。
net,指定网段。
src,指定目标地址。
dst,指定源地址。
tcp/udp/arp等,指定通信协议

-i指定网络接口
-D列出所有的网口,linux网口命名(en开头的是以太网口,wl开头的是无线网卡)。
-S用绝对值列出TCP的序号。
-n使用数字名字而不是主机名字(比如说https的端口号使用443而不是https)。
-c num指定接收num个包。

TCP包的一些字段

查看man手册。
Flag中
S是SYN,
F是FIN,
P是PUSH,(表示发送方通知接收方通讯层应该尽快的将这个报文段交给应用层。一般传输层都是隔几个报文统一上交数据。设置了PUSH就是尽快上交。)
R是RST,
U是URG,
W是ECN CWR
E是ECN-Echo
.是ACK。
win是对方接收缓冲区的大小。

查看DNS查询报文

在本机上运行sudo tcpdump udp dst port 53,即指定目标端口号为53即可。

查看TCP三次握手

使用命令sudo tcpdump host www.baidu.com -c 10 -n -vv可以查看TCP连接的前10个报文。

参考文献

1.https://blog.csdn.net/renrenhappy/article/details/5929702
2.https://segmentfault.com/a/1190000002554673