目的:网络的问题,数据传输的问题很难直观的看出来,需要使用抓包软件查看数据传输背后发生了什么(运维必会技能)
1.概述:
目标:
抓出指定协议的数据包
抓出指定端口的数据包
抓出指定ip的数据包

目录
Togglewireshak
#抓出指定协议的数据包
icmp #ping数据包,tcp,udp,http,arp
https数据包:过滤器输入tls
#抓出指定端口的数据包
tcp.port==80#源/目标ip为80端口
tcp.srcport==80 过滤源端口80的数据
tcp.dstport==80 过滤目标端口80的数据
udp.port==53
#抓出指定ip的的数据包
ip.addr==10.0.200 过滤源ip或目标ip是10.0.0.200的数据包
ip.src==10.0.0.200 过滤源ip为10.0.0.200的数据包
ip.dst==10.0.0.200 过滤目标ip为10.0.0.200的数据包
#不固定内容的过滤:
比较大小(端口) 过滤端口<=1024的数据包
tcp.port<=1024 > < == >= <= !=
过滤器可以使用正则,wireshark中不是所有的指标都支持正则过滤
#过滤http协议中包含的baidu.com的数据包
http ~ “baidu.com”
~或者matches 支持正则,”“中必须为字符串格式
contains不支持正则
#过滤网络域名中有数字的
http.host ~”[0-9]+.com”
在过滤器中可以用与或非来表示,##注意tcpdump只能用and or !,不能用&|
and,&& 并且
or,||或者
!取反

tcpdump
tcpdump:根据协议名抓包只能抓4层及4层以下的包,抓更高层或者特殊协议需要用端口号
tcpdump+协议名 tcpdump -i eth0 -n icmp
-i 指定网卡
-n 防止ip反向解析为名字,虚拟机中没什么影响,公有云很费时间

tcpdump -nn -i eth0 port 80 查看80端口数据
显示结果含义:
[S] SYN 发送连接请求
[S.] SYN,ACK 收到请求,申请连接
[.] ACK 确认连接
[F.] FIN,ACK 发送FIN请求申请断开
[.] ACK 收到请求
[F.]FIN,ACK 请求断开
[.]ACK 收到,确认断开
[P.]PSH,ACK传输数据
-v显示各行详细数据,-vvv更详细
-w保存(write)
tcpdump -vvv -nn -i eth0 host 223.5.5.5(host后填写本机DNS解析地址)
同时本机dig命令www.baidu.com抓本机DNS包

案例:tcpdump+wireshark使用 怎么保存tcpdump结果
tcpdump -vvv -nn -i eth0 port 80 or port 53 -w httpd-dns.pcap
.pcap的文件用wireshark就能打开
显示GOT 0表示已经得到了0个80/553数据包
抓80端口时用curl访问本机不行,本机curl和端口没有数据传输,抓包时尽量避免自己访问自己,否则可能没数据
ctrl+c保存

抓包小结:灵活运用wireshark可视化工具
