tcpdump发生在哪里
tcpdump是linux下的一款抓包工具。网络数据报传至设备网卡,由网卡驱动交给操作系统处理。操作系统根据协议处理包,将处理后得到的报文放入用户缓存中。tcpdump发生在系统处理之后,放入用户缓存之前。
基本使用说明
命令的层次:tcpdump option proto direction type
option:抓包时各种操作;
proto:抓什么协议的包(ipv4,arp等)
direction:根据包源抓(src:发出源;dst:目的)
type:网络类型(host:指定主机ip;port;指定端口;net:指定网段)
wireshark的过滤指令和这个基本一致。
option
-D:查看有哪些可抓取的接口;
-i xxx:指定抓取接口(网卡eth0,wifi等);
-w xxx:指定保存文件(路径+名称,或名称);
-r xxx:从保存的文件中读数据,而不是从接口中;
-A:用ascii码显示捕获的数据包;
-c n:捕获n个数据包;
-n:直接显示i捕获包的ip地址,而不是显示域名;
-e:显示出包的mac地址;
proto
tcpdump tcp:抓tcp的包;
direction
tcpdump src xxx:捕获数据源为xxx的数据包;
tcpdump dst xxx:捕获目的为xxx的数据包;
type
tcpdump port 80:抓端口为80的包。
结语
tcpdump抓到的包是经过协议处理的,也就是说如果因为窗口大小、队列大小而丢失的包是不会抓到的。但是可以通过ifconfig的tx,rx看到。
tcp抓到的包导入wireshark中,可以通过wireshark相关工具分析丢包率等信息,更加方便实用。