Security ❀ TCP异常报文详解

文章目录

  • 1. TCP Out-Of-Order
  • 2. TCP Previous Segment Lost
  • 3. TCP Retransmission
  • 4. TCP Dup Ack XXX#X
  • 5. TCP Windows Update
  • 6. TCP Previous segment not captured
  • 7. 异常案例分析

TCP协议中seq和ack seq的联系:
在这里插入图片描述
id=4的http请求报文由客户端发向服务器,其TCP协议内seq(由wireshark定义)=1,真实seq=2387613954(十六进制为0x8E501902),ack(由wireshark定义)=1,真实ack=3344080265(十六进制为0xC7529D89),客户端发送的下一个报文的seq=135(len+seq 134+1=135);
在这里插入图片描述
id=5的http响应报文由服务器向客户端返回,其TCP协议内seq=1(服务器与客户端拥有不同的序列号机制,两者互不冲突),真实seq=3344080265(十六进制为0xC7529D89,为请求报文中的真实ack的值),ack=135(客户端报文中的len+seq 134+1=135,这个 1 来自客户端序列号并非服务器序列号),真实ack=2387614088(十六进制为0x8E501988,计算方法:2387613954+134=2387614088,转为十六进制即可为0x8E501988),服务器发送的下一个报文的seq=1。


接下来分享几个常见数传异常报文:

1. TCP Out-Of-Order

Out-of-order是一种乱序报文,若报文中没有携带续期的序列号就会出现异常报文。在同一个TCP连接上,相同SIP发出的后一个TCP报文中的序列号不等于前一个报文的序列号加上前一个报文的报文长度。
Out-of-order主要是指实际收到的报文序列号小于预期报文的序列号,此类型会与TCP Dup Ack异常类型同时出现,因为没有接收到预期的序列号,就会再次发送Ack请求预期的正确序列号报文。
故障原因:中间网络节点之间发生功能紊乱,转发或者发送了异常报文;对端发送了乱序报文。

2. TCP Previous Segment Lost

Previous Segment Lost也是一种TCP报文乱序。此乱序报文主要指实际收到的报文序列号大于预期序列号,或者说实际上在收到这个报文之前还应该收到一个或多个报文,但没有收到。

3. TCP Retransmission

Retransmission代表TCP重传报文,是指具有相同TCP序列号的报文至少两次或多次经过,重传报文是一种很常见的影响数据传输速率的异常报文。
故障原因

  • 两台终端之间的其他网络节点发生功能紊乱,存在丢包,造成对端未收到相应序列号的报文或本端未收到对端的回复报文(建议检查防火墙,网流分析、信安系统、Ddos等安全设备);
  • 对端未正常发送确认报文,对端功能紊乱(多为安全软件或网卡校验功能造成);
  • 本端收到确认报文,但没有正常处理(建议检查安全软件,网卡设置等)。

4. TCP Dup Ack XXX#X

#号前面的 XXX 意为报文到那个序号(id)丢失;# 号后面的 X 意为第几次丢失。

TCP报文中的Ack字段是对预期达到的下一个报文的序列号,而看到Dup Ack则说明由于某些原因Dup Ack发起方没有收到预期序列号的报文,从而发送Dup Ack再次请求预期数据报文,直到收到预期报文,才会停止发送Dup Ack报文。
遇到此类报文很可能是因为两台终端之间设备有丢包,可能是防火墙或者安全设备将数据包丢弃造成,建议在两台终端之间的其他网络设备进行抓包对比,以确定异常位置。

5. TCP Windows Update

Windows Update表明更改滑动窗口大小,可能变大也可能变小,跟TCP连接上层应用对接收到的报文数据处理速度有关,此报文并不代表一定有异常。

6. TCP Previous segment not captured

报文没有捕捉到,出现报文丢失。

7. 异常案例分析

以下面的报文过程进行案例说明:
在这里插入图片描述
id=1221,seq=8321,ack=18292,len=0的报文下一条应该为seq=18292,ack=8321,但是此时在id=1230处出现了丢失现象,TCP丢失报文seq=27392,ack=8321。
因此在id=1232与id=1238之间的报文都是为了补全seq=18292到27392的数据内容。
在这里插入图片描述
id=1439显示报文丢失,seq=53800,ack=9765
而id=1438的报文seq=52100,ack=9765,len=1300
所以id=1439的seq应该是52100+1300=52500,而id=1439的报文中seq=53800,显然出现了丢包情况,在id=1440重新补全seq=52500-53800的数据内容。

在这里插入图片描述
在id=1587的时候出现了丢包现象,未收到之前的数据包,因此需要进行重传或者重组。
id=1586的时报文ack=211249,也就是说下次收到的服务侧报文seq=211249,结果id=1587的seq=212261,说明服务侧收到过客户端数据包ack=212261的报文,因此丢失了上一个数据包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/248545.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Prometheus】Prometheus的PromQL语句

Prometheus promQL的语法: #时间序列 node_cpu_guest_seconds_total{cpu"0"} 监控(指标数据) {标签} node使用CPU的描述的统计,符合标签CPU0的时间序列的查询结果 指标标签生成时间序列 标签: __address…

品牌时代:应对非对称性风险的战略与实践

市场环境中,非对称性风险成为企业必须直面的挑战。非对称性风险指的是企业在经营过程中面临的不确定性因素,这些因素可能导致企业遭受重大损失或获得巨大收益。为了应对这种风险,企业需要从产品导向转向品牌导向,通过品牌建设来提…

解决:ModuleNotFoundError: No module named ‘selenium’

解决:ModuleNotFoundError: No module named ‘selenium’ 文章目录 解决:ModuleNotFoundError: No module named selenium背景报错问题报错翻译报错位置代码报错原因解决方法方法一,直接安装方法二,手动下载安装方法三&#xff0…

跟着cherno手搓游戏引擎【12】渲染context和首个三角形

渲染上下文&#xff1a; 目的&#xff1a;修改WindowsWindow的结构&#xff0c;把glad抽离出来 WindowsWindow.h:新建m_Context #pragma once #include "YOTO/Window.h" #include <YOTO/Renderer/GraphicsContext.h> #include<GLFW/glfw3.h> #include…

突破瓶颈,提升开发效率:Spring框架进阶与最佳实践-IOC

IOC相关内容 1.1 bean基础配置1.1.1 bean基础配置(id与class)1.1.2 bean的name属性步骤1&#xff1a;配置别名步骤2:根据名称容器中获取bean对象步骤3:运行程序 1.1.3 bean作用范围scope配置1.1.3.1 验证IOC容器中对象是否为单例验证思路具体实现 1.1.3.2 配置bean为非单例1.1.…

ASP .NET Core Api 使用过滤器

过滤器说明 过滤器与中间件很相似&#xff0c;过滤器&#xff08;Filters&#xff09;可在管道&#xff08;pipeline&#xff09;特定阶段&#xff08;particular stage&#xff09;前后执行操作。可以将过滤器视为拦截器&#xff08;interceptors&#xff09;。 过滤器级别范围…

Redis -- 开篇热身,常用的全局命令

目录 Redis重要文件 启动停止脚本 配置文件 持久化文件存储目录 核心命令 set get 全局命令 keys exists del expire ttl 过期策略是如何实现的 定时器 type 小结 Redis重要文件 启动停止脚本 /usr/bin/redis-benchmark &#xff1a; 用于对Redis做性能基准…

搭建nginx图片服务器

&#xff08;1&#xff09;将图片存储于/home/data/images目录&#xff1b; &#xff08;2&#xff09;配置nginx.conf user nginx; worker_processes 4;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 10000; }ht…

编译Opencv3.3.1遇到的编译器无法识别的警告的问题解除:

问题描述&#xff1a; 本文&#xff0c;就是在一个硬件的SDK中用到了opencv3.3.1的版本&#xff0c;在笔者目前的VS2019,CUDA11版本下编译的问题和解决。在做Cmake的configure的时候&#xff0c;Cmake报了一个找不到编译器版本的错误, Selecting windows SDK version 10.0.1904…

【时间安排】

最近刚刚回到家&#xff0c;到家就是会有各种事情干扰&#xff0c;心里变乱人变懒的&#xff0c;而要做的事情也要继续&#xff0c;写论文&#xff0c;改简历&#xff0c;学习新技能。。 明天后天两天写论文改简历 周一&#xff08;早上去城市书房&#xff0c;可能吵一点戴个耳…

JVM学习

1.Java虚拟机内部有哪些线程共享&#xff0c;那些线程隔离 程序计数器&#xff1a; 通过改变这个计数器的值来选取下一条需要执行的字节码命令 Java虚拟机栈&#xff1a; 栈&#xff0c;每个方法被执行时&#xff0c;Java虚拟机都会同步的创建一个栈帧用于存储局部变量表&…

Java面试架构篇【一览众山小】

文章目录 &#x1f6a1; 简介☀️ Spring&#x1f425; 体系结构&#x1f420; 生命周期 &#x1f341; SpringMVC&#x1f330; 执行流程 &#x1f31c; SpringBoot&#x1f30d; 核心组件&#x1f38d; 自动装配&#x1f391; 3.0升级 &#x1f505; spring Cloud Alibaba&am…

数字滤波器的技术指标

文章目录 幅频特性指标异 相频特性指标各型滤波器的幅度响应表征数字滤波器频率响应特性的三个参量(1) 幅度平方响应(2) 相位响应(3) 群延迟响应 数字滤波器的技术指标一般可以用幅频特性和相频特性指标来给出。 设数字滤波器的频率响应为&#xff1a; H ( e j ω ) ∣ H ( e…

多线程事务如何回滚?

背景介绍 1&#xff0c;最近有一个大数据量插入的操作入库的业务场景&#xff0c;需要先做一些其他修改操作&#xff0c;然后在执行插入操作&#xff0c;由于插入数据可能会很多&#xff0c;用到多线程去拆分数据并行处理来提高响应时间&#xff0c;如果有一个线程执行失败&am…

构建基于Flask的跑腿外卖小程序

跑腿外卖小程序作为现代生活中的重要组成部分&#xff0c;其技术实现涉及诸多方面&#xff0c;其中Web开发框架是至关重要的一环。在这篇文章中&#xff0c;我们将使用Python的Flask框架构建一个简单的跑腿外卖小程序的原型&#xff0c;展示其基本功能和实现原理。 首先&…

echarts:获取省、市、区/县、镇的地图数据

目录 第一章 前言 第二章 获取地图的数据&#xff08;GeoJSON格式&#xff09; 2.1 获取省、市、区/县地图数据 2.2 获取乡/镇/街道地图数据 第一章 前言 需求&#xff1a;接到要做大屏的需求&#xff0c;其中需要用echarts绘画一个地图&#xff0c;但是需要的地图是区/县…

Linux浅学笔记03

目录 有关root的命令 用户和用户组 用户组管理&#xff1a;&#xff08;以下需要root用户执行&#xff09; 创建用户组: 删除用户组&#xff1a; 用户管理&#xff1a;&#xff08;以下需要root用户执行&#xff09; 创建用户&#xff1a; 删除用户&#xff1a; 查看用…

掌握 Android JNI 基础

写在前面 最近在看一些底层源码&#xff0c;发现 JNI 这块还是有必要系统的看一下&#xff0c;索性就写一写博客&#xff0c;加深加深印象&#x1f37b; 本文重点聊一聊一些干货&#xff0c;避免长篇大论 JNI 概述 JNI 是什么&#xff1f; 定义&#xff1a;Java Native In…

Mysql流程控制函数

任何一门语言都有顺序结构 分支结构 循环结构 流程处理函数可以根据不同的条件&#xff0c;执行不同的处理流程&#xff0c;可以在 SQL 语句中实现不同的条件选择。 MySQL 中的流程处理函数主要包括 IF() 、 IFNULL() 和 CASE() 函数。 IF(value,value1,value2)函数举例 IF…

Qt无边框窗口拖拽和阴影

先看下效果&#xff1a; 说明 自定义窗口控件的无边框,窗口事件由于没有系统自带边框,无法实现拖拽拉伸等事件的处理,一种方法就是重新重写主窗口的鼠标事件&#xff0c;一种时通过nativeEvent事件处理。重写事件相对繁琐,我们这里推荐nativeEvent处理。注意后续我们在做win平…