wireshark、异常数据分析、常见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 域名
小技巧 也可通过telnet查看端口是否开启telnet ip 端口
- 打开Wireshark,首页选择要抓取的通道(Wi-Fi,网卡等),然后设置过滤规则,点击右上角箭头配置过滤规则,或者点击某一条右键选中
Apply as Filter
,ip.src==103.219.186.235 or ip.dst==103.219.186.235
TCP三次握手
第一次握手:主机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则连接建立成功。
复制代码
1. 客户端发送 SYN 报文 到服务器
2. 服务器接收到后 回复 SYN + ACK 报文
3.客户端接收到服务端的 SYN+ACK 报文后,回复 ACK报文
注意:理论上,Syn 应该初始值是个随机数的,后面的要根据初始值增加 ,wireshark为了好区分从0开始的,可以自行设置显示原始Syn
TCP 四次挥手,简略分析
(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,就知道中间缺失了一段数据。
[TCP Out-of-Order] 乱序 Wireshark在获取包序号26时发现seq=18981,而包序号25的数据包seq = 20441,所以wireshark认为数据包顺序错了
2.[TCP Dup ACK x#y]
当乱序或者丢包发生时,接收方会收到一些Seq号比期望值大的包。此时就会Ack就说我想获取seq=28852的数据包而你给了我其他包。
3、[TCP Spurious Retransmission] 丢包重传
4、[TCP Fast Retransmission] 快速重传
当发送方收到3个或以上[TCP Dup ACK],就意识到之前发的包可能丢了,于是快速重传它(这是RFC的规定)。
5、[TCP Retransmission] 超时重传
如果一个包真的丢了,又没有后续包可以在接收方触发[Dup Ack],就不会快速重传,只能超时重传。
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. 超过超时重传次数、网络暂时不可达
如有疏漏,请指出不胜感激,部分图片来自网络,如有侵权请联系删除。
参考:
www.wireshark.org/
blog.csdn.net/yuanbinquan…
blog.csdn.net/yuanbinquan…
wireshark、异常数据分析、常见RST介绍相关推荐
- TCP协议RST:RST介绍、什么时候发送RST包
一.RST介绍 RST标示复位.用来异常的关闭连接. 1. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区中的包,发送RST. 2. 而接收端收到RST包后,也不必发送ACK包来确 ...
- C++软件异常的常见原因分析与总结(实战经验分享)
目录 1.概述 2.引发软件异常的常见原因 2.1.变量未初始化 2.2.死循环 2.3.内存越界 2.4.内存泄漏 2.5.空指针与野指针 2.6.内存访问违例 2.7.栈内存被当成堆内存去释放 2 ...
- Linux软件安装的几种常见方式介绍
Linux上的软件安装有以下几种常见方式介绍 1. 二进制发布包 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 2. RPM包 软件已经按照redhat的包管理工具规范RPM进行打包发布, ...
- VS2005与Device通过ActiveSync连接异常的常见原因
VS2005与Device通过ActiveSync连接异常的常见原因 很多人都碰到过VS2005与Device之间不能够通过ActiveSync进行连接的问题,中间报出来的错误也是形形色色. 根据自己 ...
- 什么意思中文翻译_os常见意思介绍
os是一个英文的缩写在不同环境状态下表达的意思不一样的,比如在计算机中就是操作系统的意思,在聊天情景的时候就是内心独白的意思,下面来看看详细的os是什么意思介绍吧. os是什么意思 一.计算机中的解释 ...
- JAVA运行时异常及常见的5中RuntimeExecption
JAVA运行时异常及常见的5中RuntimeExecption 参考文章: (1)JAVA运行时异常及常见的5中RuntimeExecption (2)https://www.cnblogs.com/ ...
- wireshark 学习更进一步 之wireshark异常数据解读
wireshark异常数据,软件本身会以特殊颜色底纹标识.或者可以通过Analyze-->Expert Information分析. 1.TCP Previous segment not cap ...
- 常见bootloader介绍
一.BootLoader简介 在专用的嵌入式板子运行操作系统已经变得越来越流行.一个嵌入式系统从软件的角度看通常可以分为三个层次: 1. 引导加载程序.包括固化在固件(firmware)中的Boote ...
- 思科 Packet Tracer 中交换机的常见命令介绍
思科 Packet Tracer 中交换机的常见命令介绍 配置方法 命令行界面 CLI 命令结构 基本 IOS 命令结构 上下文相关帮助功能 热键和快捷方式 常用: 设备名称 安全访问 配置密码 加密 ...
- Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)
Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩) ...
最新文章
- 简单介绍Git合并分支的流程步骤
- [20161229]linux下使用oclumon命令(rac)
- 设计模式学习(五) 适配器模式
- 电大计算机应用基础 课程考核3,电大专科-计算机应用基础作业3答案.doc
- 【转】Photoshop网站设计:DesignStudio
- 算法优化:最大m个子段和,问题规模从1个子段和扩展到m个,动态规划
- Oracle中查询、禁用、启用、删除表外键
- linux 软件包管理设置,Linux速通08 网络原理及基础设置、软件包管理
- 征文通知:第三届(2016)科学数据大会——科学数据与创新发展
- Windows Phone 7 有损 缩略图的生成!
- winfrom datagridview中DataGridViewTextBoxColumn的联动处理
- 2021 年了,TensorFlow 和 PyTorch 两个深度学习框架地位又有什么变化吗?
- 自动控制原理第七版胡寿松pdf_自动控制原理简明笔记—(01)
- 【Inpho精品教程】任务一:Inpho预处理准备(Pix4d生成未畸变图像、Pix4d生成相机参数文件)
- inventor牙距_10 INVENTOR螺纹特征,是否有何设置,可让螺纹类型默认为GB Metric
- 高维数据可视化之t-SNE算法
- 合肥宏晶微MS9334芯片特性/HDMI一分四开发板/HDMI分配器芯片/HDMI 1分4芯片
- 007-绘制三角函数图像(一)
- 2022年镇海夏令营组合数学和数论班 —— 数学作业 1
- 五自由度简单机械臂运动学及动力学分析|基于MATLAB机器人工具箱Rvctool
热门文章
- fiash星空动画制作_Flash8实现动态星空的通用方法
- 完美解决浏览器劫持方法,简单实用百试百灵!
- 如何解决程序员沟通之痛?
- python中数字加引号和不加引号的区别_高考完小白自学Python,不太懂print语句中一个加引号,一个不加?...
- C语言输出三阶魔方阵
- Android性能优化—— 黑白屏启动优化
- SkeyeVSS综合安防Onvif、RTSP、GB28181视频云服务H5无插件直播点播卡顿的解决方案
- python for循环次数_Python for循环
- TIOBE编程语言排行榜,使用前二十语言实现HelloWorld程序
- 如何成为一个牛逼的程序员?