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.mzph.cn/news/657312.shtml

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

相关文章

sqli-labs-master靶场训练笔记(1-22|新手村)

2024.1.21 level-1 (单引号装饰) 先根据提示建立一个get请求 在尝试使用单个单引号测试,成功发现语句未闭合报错 然后反手一个 order by 得到数据库共3列,-- 后面加字母防止浏览器吃掉 -- 操作(有些会&#xff09…

maven helper 解决jar包冲突方法

一 概要说明 1.1 说明 首先,解决idea中jar包冲突,使用maven的插件:maven helper插件,它能够给我们罗列出来同一个jar包的不同版本,以及他们的来源,但是对不同jar包中同名的类没有办法。 1.2 依赖顺序 …

Spring | Spring的“数据库开发“ (Srping JDBC)

目录: Spring JDBC1.Spring JDBC的核心类 ( JdbcTemplate类 )2.Srping JDBC 的配置3.JdbcTemplate类的“常用方法”execute( ):直接执行“sql语句”,没有返回值update( ) :“增删改”,返回 “影响的行数”query( ) : “…

双链表的基本知识以及增删查改的实现

满怀热忱,前往梦的彼岸 前言 之前我们对单链表进行了非常细致的剖析,现在我们所面临的则是与之相对应的双链表,我会先告诉诸位它的基本知识,再接着把它的增删查改讲一下,ok,正文开始。 一.链表的种类 我…

其他发现:开源数据可视化分析工具DataEase介绍文档

一、 简介 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享。 二、 优势 1、 开…

STM32学习笔记二——STM32时钟源时钟树

目录 STM32芯片内部系统架构详细讲解: 1.芯片内部混乱电信号解决方案: 2.时钟树: 1.内部RC振荡器与外部晶振的选择 2. STM32 时钟源 3.STM32中几个与时钟相关的概念 4.时钟输出的使能及其流程 5.时钟设置的基本流程 时钟源——单片机…

Java多线程--同步机制解决线程安全问题方式二:同步方法

文章目录 一、同步方法(1)同步方法--案例11、案例12、案例1之同步监视器 (2)同步方法--案例21、案例2之同步监视器的问题2、案例2的补充说明 二、代码及重要说明(1)代码(2)重要说明 …

基于yolov2深度学习网络的视频手部检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 输入mp4格式的视频文件进行测试,视频格式为1080p30. 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................…

Linux第40步_移植ST公司的uboot

一、查看ST公司的uboot源码包 ST公司的uboot源码包在虚拟机中的路径: “/home/zgq/linux/atk-mp1/stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/sources/arm-ostl-linux-gnueabi/u-boot-stm32mp-2020.01-r0”; “u-boot-stm32mp-2020.01-r0”就是S…

Github 上传项目(个人令牌token)

1.点击 github头像 : setting -> Developer Settings -> Personal access tokens 2.在要上传的文件夹下运行以下命令: git init git commit -m "first commit" git branch -M main 利用以下命令模…

Vue中嵌入原生HTML页面

Vue中嵌入html页面并相互通信 需求&#xff1a;b2b支付需要从后获取到数据放到form表单提交跳转&#xff0c;如下&#xff1a; 但是vue目前暂时没找到有类似功能相关文档&#xff0c;所以我采用iframe嵌套的方式 1. Vue中嵌入Html <iframe src"/static/gateway.htm…

多线程c++

目录 1.join和detach区别 2.lock_guard和unique_lock 3.原子操作 4.条件变量condition_variable 5.future 和 promise 1.join和detach区别 ①不使用join和detach #include <iostream> #include <thread> #include <windows.h>using namespace std;v…

hcip---ospf综合实验

一&#xff1a;实验要求 1、R4为ISP&#xff0c;其上只能配置IP地址&#xff0c;R4与其所有直连设备间均使用公有IP 2、R3-R5/6/7为MGRE环境&#xff0c;R3为中心站点 3、整个OSPF环境IP基于R4的环回 4、所有设备均可访问R4的环回 5、减少LSA的更新量&#xff0c;加快收敛…

医院如何筛选安全合规的内外网文件交换系统?

医院内外网文件交换系统是专为医疗机构设计的&#xff0c;用于在内部网络&#xff08;内网&#xff09;和外部网络&#xff08;外网&#xff09;之间安全、高效地传输敏感医疗数据和文件的解决方案。这种系统对于保护患者隐私、遵守医疗数据保护法规以及确保医疗服务的连续性和…

初探分布式链路追踪

本篇文章&#xff0c;主要介绍应用如何正确使用日志系统&#xff0c;帮助用户从依赖、输出、清理、问题排查、报警等各方面全面掌握。 可观测性 可观察性不单是一套理论框架&#xff0c;而且并不强制具体的技术规格。其核心在于鼓励团队内化可观察性的理念&#xff0c;并确保由…

Django4.2(DRF)+Vue3 读写分离项目部署上线

文章目录 1 前端2 后端2.1 修改 settings.py 文件关于静态文件2.2 关于用户上传的文件图片 3 Nginx4 镜像制作4.1 nginx4.3 Django镜像4.3.1 构建 5 docker-compose 文件内容 1 前端 进入前端项目的根目录&#xff0c;运行如下命令进行构建 npm run build构建完成后&#xff…

K8S之Pod的介绍和使用

Pod的理论和实操 pod理论说明Pod介绍Pod运行与管理Pod管理多个容器Pod网络Pod存储 Pod工作方式自主式Pod控制器管理的Pod&#xff08;常用&#xff09; 创建pod的流程 pod实操通过资源清单文件创建自主式pod通过kubectl run创建Pod&#xff08;不常用&#xff09; pod理论说明 …

指针的深入了解6

1.回调函数 回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其所指向的函数 时&#xff0c;被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用&#xff0…

【LVGL源码移植环境搭建】

LVGL源码移植&环境搭建 ■ LVGL源码移植■ 下载LVGL源码■ 修改LVGL文件夹■■■■ 视频链接 Ubuntu模拟器环境建置 ■ LVGL源码移植 ■ 下载LVGL源码 LVGL源码 我们以选择v8.2.0为例&#xff0c;选择8.2.0下载 ■ 修改LVGL文件夹 1.我们只需要关注这5个文件即可&…

《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》

文章目录 Docker为什么会出现总结 Docker的思想Docker历史总结 Docker能干嘛虚拟机技术虚拟机技术的缺点 容器化技术Docker和虚拟机技术的区别 Docker概念Docker的基本组成镜像&#xff08;image)容器&#xff08;container&#xff09;仓科&#xff08;repository&#xff09;…