udp抓包工具_Wireshark抓包分析简单入门

    Wireshark是一款图形界面的网络嗅探器,支持多种平台,是网络流量分析的利器。在日常工作中抓包分析往往是解决根本问题的最有效手段。最近刚把《Wireshark网络分析就是这么简单》看完,写的很有意思,把一些心得和技巧分享一下。

IP TCP协议

    在正式开始抓包分析前先简单介绍下我们抓包中最常碰到的IP、TCP协议的头部信息。

63e268f7dbae84d14275007b10461e47.png

IP头部

•   版本号(4位):v4、v6

•   首部长度(4位):4比特是15,每1位代表4个字节32位一行,所以IP头部最长60个字节,固定长度20字节,选项最多40字节

•   TOS位(8位):前三位IP优先级中间四位表示TOS最后一位保留。中间四位各位被置1的意思:最小的延时、最大的吞吐量、最高的可靠性、最小的开销

•   总长度(16位):211=65535字节

•   标识(16位):标识一个数据包。

•   标志(3位):第一位DF第二位第三位保留。DF(Don't Fragment)置1表示中间路由器遇到要分片的数据包直接丢掉发送一个ICMP消息(这个消息在源端会显示一个M),MF(More Fragment)置1表示被分片数据包不是最后一个分片。

•   片偏移(13位):标识被分片数据包的顺序。

•   TTL(8位):防止路由环路时网络上出现过多数据包,每跳路由器-1。

•   协议位(8位):标识每个数据包下一个头部是什么,1为ICMP,TCP为6,17为UDP。

首部校验和(16位):校验头部完整性

e5418bb580ac345d4f9ae45e6e049752.png

•每个TCP包都会包含发送端口和接收端口,用来确定发端和收端的应用进程。五元组(源IP、目标IP、协议号、源端口、目的端口)唯一确定一个session。

•一个IP地址跟一个端口号称为一个插口对。

•序号是指数据部分第一个比特的序号。序号是一个32比特的无符号数。一个SYN包和一个FIN包分别消耗一个序号。

•确认序号是上次成功收到数据的序号+1。AB两端传输数据,A收到B传过来的上个数据包的序号为300,这个数据包的确认序号就是301,表示我下一个想收的数据包是序号为301 的数据包。确认序号指的是期待的收到下个数据包的序号。只有ACK标志位置1才有效。

•ACK包不占用任何序号,除了建立连接的第一个SYN包,其余包的ACK标志位都被置1。

•TCP为应用层提供全双工服务。连接每一端必须对两个方向维护序号。

•TCP没有选择性确认或者否认的功能。

•TCP的首部长度跟IP的类似都是4位表示TCP头部长度最长只能有60个字节,标准长度20字节,剩下40个字节在选项 。

•TCP有6个标志位,可以同时多个置1。

•window size是每一方都会提供的,这是一个流量控制技术。由数据接收方确定,这个字段是告诉发送方可以发送多少数据而未经确认。(接收方流控)

•校验和强制,覆盖TCP头部和数据,计算方法跟UDP一样要加伪首部计算。

•紧急指针, 仅当URG位为1的时候才有效。计算方法是把序号加上这个位置的序号表示紧急数据的最后一字节。起始在哪只有应用程序知道。

•最长报文段大小MSS(常见可选项),指明每次能接收的最大报文段大小。指数据部分不含TCP头部,UCP头部。

•数据也是可选的。TCP包可以不发数据

开始抓包

   Wireshark是一款免费软件,可以在官网https://www.wireshark.org/ download.html 下载相应版本进行安装。在拿到一个网络包时,我们总希望它尽可能小。因为操作一个大包相当费时,有时甚至会死机。所以抓包时应该尽量只抓必要的部分。可以通过以下设置对包的长度进行过滤,按下图配置则表示只抓取每个数据包前200个字节。

38b9a522d8a191c61d6a7c643667fbd9.png

2c60ef55cca8e6746816617a374249b6.png

      Wireshark的默认设置堪称友好,但是在不同场景下通常需要对时间显示格式进行调整。

2b85ea719126b316c0720a2ac7a80cea.png

过滤

     很多时候,解决问题的过程就是层层过滤,直至找到关键包。Wireshark提供了强大的过滤功能,方便我们可以快速找到相关的报文,要说过滤的作用与技巧,就算专门写一本小册子都不为过,这里只是列出了一些常用的过滤表达式以及示例。

过滤ip地址为163.177.93.254且tcp端口号等于443的数据包:

1bba252f552c13b2af8a57ccbcf024fe.png

追踪该数据包的完整tcp会话:

296ec52469e1b9ef8c66979de391675e.png

过滤IP:

IP源地址:ip.src ==192.168.1.1

IP目的地址:ip.dst== 192.168.1.1

IP地址(包括源和目的):ip.addr== 192.168.1.1

过滤端口:

TCP端口:tcp.port==80

TCP目的端口:tcp.dstport == 80

TCP源端口:tcp.srcport == 80

UDP端口:udp.port eq 15000

TCP 1-80之间的端口:tcp.port >= 1 and tcp.port <= 80

过滤协议:

http、tcp、udp、arp、icmp、http、smtp、ftp、dns 等。

过滤MAC地址:

源MAC地址:eth.src==A0:00:00:04:C5:84

目的MAC地址:eth.dst==A0:00:00:04:C5:84

MAC地址(包括源和目的):eth.addr==A0:00:00:04:C5:84

过滤包长度:

整个UDP数据包:udp.length==20

TCP数据包中的IP数据包:tcp.len>=20

整个IP数据包:ip.len==20

整个数据包:frame.len==20

自动分析

    Wireshark有强大的统计分析功能,可以帮助分析人员快速统计出一些基本信息。比如点击分析-->专家信息,就可以看到数据包的中的一些不同级别的信息统计,包含重传次数、链接建立次数、网络错误等,在分析网络性能时这个功能很有作用。

7447b08b16b39105a39379b4b7de30bb.png

    Wireshark做为一个强大的工具箱,可以通过其强大的过滤及分析功能辅助我们进行问题分析。但是能否解决问题还需依赖于我们自身对相关协议的熟悉程度。新手上路,共勉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值