TCPDUMP学习记录
tcpdump提供常用命令,用于抓取网络层数据。在linux环境下常用tcpdump抓取网络层数据,然后保存为.cap文件,将数据文件导入Wireshark(网络数据分析工具)进行分析
-
安装tcpdump
[root@hadoop104 ~]# yum install tcpdump #截获某IP的主机的网络数据包 tcpdump host 192.168.126.129 #抓10万个包,存在test.txt文件里,-n的意思是不对原地址和目的地址进行DNS查询 tcpdump -c 100000 -w /home/qiyou/Desktop/test001.txt -n #-r是读文件,-X是以ASCII码显示内容。-VV是以详细的报文信息显 tcpdump -r /home/qiyou/Desktop/test001.txt -X -vv #tcpdump为了方便wireshark工具认识,保存的文件名是xx.cap后缀 tcpdump -nn -s 0 host 192.168.126.129 and port -80 -w wire1.cap #使用tcpdump只抓取http包 tcpdump -XvvennSs 0 -i ens33 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 #tcpdump抓取具体某个网页的数据包 tcpdump -s 0 tcp port 80 -w test002.cap #实践:1.打开firefox之后,输入www.sohu.com,先不运行 tcpdump -s 0 tcp port 80 -w test002.cap #再刷新页面 #做过测试,firefox没有输入任何命令时,抓取的数据包为0 #用wireshark——open打开,并用statistic来统计 #-w 选项用来把数据报文输出到文件 tcpdump -i ens33 -s0 -w test.pcap
-
抓取所有经过指定网络接口上的数据包
测试:抓取ens33网卡接口 tcp协议 100个tcp报文 并将抓取的报文写入到tcpdump.cap文件
便于使用wireshark进行离线分析;如果网卡接口eth1抓取不到报文,可能机器的流量走的是网卡接口eth0
[root@hadoop104 ~]# tcpdump tcp -i ens33 -c 100 -w tcpdump.cap tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes ^C2 packets captured 3 packets received by filter 0 packets dropped by kernel
(抓取成功但不完整)
tcpdump不会抓取本机内部通讯的报文。根据网络协议栈的规定,对于报文,即使是目的地是本机,也需要经过本机的网络协议层,所以本机通讯肯定是通过API进入了内核,并且完成了路由选择。【比如本机的TCP通信,也必须要socket通信的基本要素:src ip port dst ip port】
-
想抓取访问某个网站时的网络数据。比如网站 http://www.baidu.com/
-
通过tcpdump截获主机www.baidu.com发送与接收所有的数据包
tcpdump -i ens33 host www.baidu.com
-
访问百度
wget www.baidu.com
-
想要看到详细的http报文,并将抓取到的结构存入文件
[root@hadoop104 demo01]# tcpdump -A -i ens33 -w baidu.cap host www.baidu.com #访问 [root@hadoop104 demo01]# wget www.baidu.com
-
查看http请求和响应的方法
上面红色为请求信息,下面蓝色为响应 信息
-