Security ❀ TCP异常报文详解

news/2025/2/12 14:12:51/

文章目录

  • 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.ppmy.cn/news/1339042.html

相关文章

微服务—Docker

目录 初识Docker Docker与虚拟机的区别 镜像与容器 Docker架构 常见Docker命令 镜像命令 容器命令 数据卷挂载 直接挂载 初识Docker 在项目部署的过程中,如果出现大型项目组件较多,运行环境也较为复杂的情况,部署时会碰到一些问题&…

Git--07--GitExtension

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、GitExtension下载GitExtension官网下载教程 二、GitExtension安装三、GitExtension配置四、GitExtension使用 一、GitExtension下载 官网下载: http…

国外知名的农业机器人公司

从高科技温室到云播种,农业机器人如何帮助农民填补劳动力短缺以及超市货架的短缺。 概要 “高科技农业”并不矛盾。当代农业经营更像是硅谷,而不是美国哥特式,拥有控制灌溉的应用程序、驾驶拖拉机的 GPS 系统和监控牲畜的带有 RFID 芯片的耳…

Apache Paimon基础记录

基本都是在官网的学习,简单记录一下其中的核心特点 Apache Paimon 官网 Apache Paimon | Apache Paimon 根据官网介绍去快速了解 paimon 是用来设计做什么,可以做什么,对比与其他数据湖有什么特点,如何使用 Paimon 特点 前身…

git push后,如何撤销git log上的错误注释

修改了本地的代码,执行了下面的操作,提交之后,怎么样修改 git add ********(文件名)//git add 添加修改文件名之后 git commit //git commit 在当前分支提交,编写提交注释 git push //git push 提交修…

通过 React 来构建界面

1- 通过 React 来构建界面 第1步:下载所需要的二个库文件至本地,如果需要加载指定版本的 react 和 react-dom,可以把 18 替换成所需加载的版本号。 react.js:React中的核心库文件。 // 开发版 https://unpkg.com/react18/umd/rea…

基于微服务的高考志愿智能辅助决策系统(附源码)

目录 一.引言 1、编写目的 2、系统功能概述 二.功能分析 三.微服务模块 1、微服务用户相关模块 (1)用户注册 (2)用户登录 (3)用户信息管理 (4)用户操作 2、微服务文件云存…

01-为什么要学汇编语言

学习汇编语言的理由 1.汇编语言在发挥不可替代的作用。 效率: 运行效率:开发软件的核心部件,快速执行和实时响应。 开发效率:做合适的事,开发效率无敌 底层:计算机及外围设备的驱动程序。 操作系统的…