wireshark、异常数据分析、常见RST介绍

栏目: 数据库 · 发布时间: 5年前

内容简介:Wireshark(前称Ethereal)是一个网络封包分析软件,可分析网路状态,丢包率等。由于公司做的即时通讯业务,其中IM模块采用TCP发送数据和控制信令(心跳包)底层采用protobuf传输数据,音视频采用TRP协议,然后给大客户集团提供私有化部署,由于客户网络环境复杂,所以需具备一定的抓包分析能力。一般地,只是单个的一个SYN,它表示的只是建立连接。当出现SYN和ACK可能同时为1,我们认为客户端与服务器建立了一个连接。而当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而RST一般

Wireshark(前称Ethereal)是一个网络封包分析软件,可分析网路状态,丢包率等。

由于公司做的即时通讯业务,其中IM模块采用TCP发送数据和控制信令(心跳包)底层采用protobuf传输数据,音视频采用TRP协议,然后给大客户集团提供私有化部署,由于客户网络环境复杂,所以需具备一定的抓包分析能力。

下面介绍常见的TCP层的常用FLAGS。

标志位 描述
SYN 建立联机
ACK 确认
PSH 有 DATA数据传输
FIN 关闭连接
RST 连接重置

一般地,只是单个的一个SYN,它表示的只是建立连接。当出现SYN和ACK可能同时为1,我们认为客户端与服务器建立了一个连接。而当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。

Wireshark 抓包步骤

  • 首先根据域名获取对应的ip,终端输入 ping 域名
wireshark、异常数据分析、常见RST介绍
小技巧 也可通过telnet查看端口是否开启 telnet ip 端口
  • 打开Wireshark,首页选择要抓取的通道(Wi-Fi,网卡等),然后设置过滤规则,点击右上角箭头配置过滤规则,或者点击某一条右键选中

    Apply as Filterip.src==103.219.186.235 or ip.dst==103.219.186.235

wireshark、异常数据分析、常见RST介绍

TCP三次握手

wireshark、异常数据分析、常见RST介绍
第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

 第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;

 第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
复制代码
wireshark、异常数据分析、常见RST介绍

1. 客户端发送 SYN 报文 到服务器

wireshark、异常数据分析、常见RST介绍

2. 服务器接收到后 回复 SYN + ACK 报文

wireshark、异常数据分析、常见RST介绍

3.客户端接收到服务端的 SYN+ACK 报文后,回复 ACK报文

wireshark、异常数据分析、常见RST介绍

注意:理论上,Syn 应该初始值是个随机数的,后面的要根据初始值增加 ,wireshark为了好区分从0开始的,可以自行设置显示原始Syn

TCP 四次挥手,简略分析

wireshark、异常数据分析、常见RST介绍
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。
复制代码

抓包异常数据解读

1.[TCP Previous segment not captured]丢包

在TCP传输过程中,同一台主机发出的数据段应该是连续的,即后一个包的Seq号等于前一个包的Seq + Len(三次握手和四次挥手是例 外)当后Seq>前Seq +Len,就知道中间缺失了一段数据。

wireshark、异常数据分析、常见RST介绍

[TCP Out-of-Order] 乱序 Wireshark在获取包序号26时发现seq=18981,而包序号25的数据包seq = 20441,所以wireshark认为数据包顺序错了

2.[TCP Dup ACK x#y]

当乱序或者丢包发生时,接收方会收到一些Seq号比期望值大的包。此时就会Ack就说我想获取seq=28852的数据包而你给了我其他包。

wireshark、异常数据分析、常见RST介绍

3、[TCP Spurious Retransmission] 丢包重传

wireshark、异常数据分析、常见RST介绍

4、[TCP Fast Retransmission] 快速重传

当发送方收到3个或以上[TCP Dup ACK],就意识到之前发的包可能丢了,于是快速重传它(这是RFC的规定)。

wireshark、异常数据分析、常见RST介绍

5、[TCP Retransmission] 超时重传

如果一个包真的丢了,又没有后续包可以在接收方触发[Dup Ack],就不会快速重传,只能超时重传。

wireshark、异常数据分析、常见RST介绍

6、几种TCP连接中出现RST的情况

1.端口未打开服务器程序端口未打开而客户端来连接。这种情况是最为常见和好理解的一种了。去telnet一个未打开的TCP的端口可能会出现这种错误。

2. 请求超时查看2次包的时间间隔

3. 服务端关闭的socket

4. 防护墙拒绝了请求

5. 移动链路

移动网络下,国内是有5分钟后就回收信令,也就是IM产品,如果心跳>5分钟后服务器再给客户端发消息,就会收到rst。也要查移动网络下IM 保持<5min 心跳。

6. 负载等设备负载设备需要维护连接转发策略,长时间无流量,连接也会被清除,而且很多都不告诉两层机器,新的包过来时才通告rst。

Apple push 服务也有这个问题,而且是不可预期的偶发性连接被rst;rst 前第一个消息write 是成功的,而第二条写才会告诉你连接被重置

7. 超过超时重传次数、网络暂时不可达


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

超简单!一学就懂的互联网金融

超简单!一学就懂的互联网金融

视觉图文 / 人民邮电出版社 / 2015-2-1 / 45.00元

零基础、全图解,通过130多个精辟的知识点、220多张通俗易懂的逻辑图表,让您一书在手,即可彻底看懂、玩转互联网金融从菜鸟成为达人,从新手成为互联网金融高手! 本书主要特色:最简洁的版式+最直观的图解+最实用的内容。 本书细节特色:10章专题内容详解+80多个特别提醒奉献+130多个知识点讲解+220多张图片全程图解,深度剖析互联网金融的精华之处,帮助读者在最短的时间内掌握互联网金融知......一起来看看 《超简单!一学就懂的互联网金融》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换