使用步骤分析
1.进入页面选择网卡
一般我选择的是无线网卡WLAN,双击进入抓包页面
2. 进入页面
我们会看到七七八八花花绿绿的捕获的信息,而且跳的特别快。
可以点击红色这个按钮停止抓包,蓝色的是开始抓包
在编辑-着色规则中可以看到不同的颜色代表什么协议,可以自定义颜色,下图是默认的颜色:
3.过滤信息
因为跳的特别快,我们不容易看到自己需要的内容,所以需要使用过滤器来得到我们想要的内容。
在上方的输入框中输入需要过滤的内容:
常用过滤规则
- 协议过滤:直接在Filter框中直接输入协议名,如过滤HTTP的协议就直接输入http,过滤tcp协议就输入tcp
- ip过滤:过滤源ip方法 ip.src == xx.xx.xx.xx ,过目的ip方法 ip.dst == xx.xx.xx.xx
- 端口过滤:如过滤80端口,tcp.port == 80,这是把源端口和目的端口为80的都过滤出来,若只需过滤源ip端口为80的,就使用tcp.srcport == 80,只需过滤目的ip端口为80的tcp.dstport == 80
- http模式过滤。过滤get包方法:http.request.method=="GET",http contains "GET" 。过滤post包方法:http.request.method=="POST",http contains "POST
- 时间过滤:右键需要过滤的那行,右键-作为过滤器应用-选中
- 包长度过滤:例如udp.length == 26, 这个长度是指udp本身固定长度8加上udp下面那块数据包之和,tcp.len >= 7 指的是ip数据包(tcp下面那块数据),不包括tcp本身
- 如果显示的数据包需要满足的条件不止一种,则使用and或者or 连接符。其他:eq” 和 “==”表示等同,and” 表示并且,“or”和“||”表示或者。“!” 和 “not”表示q取反。
4.封包详细信息
这个面板是我们最重要的,用来查看协议中的每一个字段。各行信息分别对应TCP/IP协议的不同层级。以下图为例,分别表示:传输层、网络层、数据链路层、物理层,一共四层。如果有应用层数据会显示第五层,即一共会出现五层。
一般来说对于这五层我会看的东西:
- 数据链路层:查看本机和服务器的MAC地址
- 网络层:查看src和dst,即查看你的ip地址和服务器的ip地址;查看使用的ip协议,如Ipv4
- 传输层:查看端口号,分析tcp三次握手和四次挥手的数据包
- 应用层:查看http请求头的字段信息
分析tcp的三次握手和四次挥手之前要知道为什么要三次握手和四次挥手:建立TCP需要三次握手才能建立,而断开连接则需要四次握手。
这里对wireshake的tcp三次握手进行简单分析:
先附个原理图
从wireshake中可以看到三次握手的过程:
第一次握手:客户端发送一个TCP,标志位为SYN=1(同步序号,用来建立连接),序号seq(Sequence number)为=0, 51722 -> 80,代表客户端请求建立连接;
第二次握手:服务器向客户端返回一个数据包,SYN=1,ACK=1,80 -> 53722,将确认序号ack(Acknowledgement Number)设置为客户的序号seq加1,即0+1=1
第三次握手:客户端收到服务器发来的包后,检查确认序号ack是否正确,标志位ACK是否为1。如果正确,客户端会再向服务器端发送一个数据包,SYN=0,ACK=1,确认序号=Y+1=0+1=1,并且把服务器发来ACK的序号seq加1发送给对方,发送序号seq为X+1=1。客户端收到后确认序号值与ACK=1,53722 -> 80,这样一次TCP连接就此建立,可以传送数据了。
在三次握手完成后,才开始传输数据,图中第四个包才是http包。这说明HTTP的确是使用TCP建立连接的。
关于wireshake的四次挥手:
当数据传送完毕,肯定是要断开TCP连接。那对于TCP的断开连接,就是四次挥手。客户端和服务端都可以主动发起关闭请求, 四次挥手使用的标志位是FIN,下面简单学习下wireshake抓的四次挥手过程。
第一次挥手:客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN和ACK置为1,序号seq=X=482,确认序号ack=1326,80->61680
第二次挥手:收到FIN后,服务端seq序号=客户端的确认序号ack=1326,服务端确认序号ack=客户端的序号seq+1=482+1=483,并将ACK=1
第三次挥手:虽然第二次挥手发送了TCP报文,但是此时客户端并未正式关闭通道,因为服务端可能还有没发完的数据,等服务端发送完数据会发送一个FIN+ACK来进行最后的确认。第三次挥手的序号和确认序号不需要改变,因为没有一来一回,只是多了一个FIN来确认结束。
第四次挥手:客户端得到服务端的结束标志FIN后,会发送ACK来确认,这时自己的序号seq=对面的确认号=483,自己的确认号ack=对面的序号seq+1=1327,ACK=1
从上面挥手和握手来看,每次需要将ACK=1时,需要对ack进行操作:当发送方的序号为x,确认序号为y时,接收方的序号就为y,确认序号为x+1。