网络异常案例五_SYN被丢弃

问题现象

公司同事使用的时候,反馈系统不稳定,访问的时候,有时候会出现白屏(连接超时),或者系统页面点击没有响应,过一会之后刷新系统又可以正常展示了。之前未收到过类似反馈,一直都是正常的。
在这里插入图片描述

浏览器控制台信息如下
在这里插入图片描述

可疑点

所有请求,request header显示的是临时报文头

在这里插入图片描述

chrome.devtools上面的介绍
在这里插入图片描述

按网上资料,可能和chrome浏览器插件有关系

前面几个请求耗时很久,均卡在Stalled这个状态

在这里插入图片描述

问题排查

查看异常附近时段的监控。服务器cpu、内存、带宽、网络连接数无明显变化,未发现异常。
查看服务端应用、入口nginx组件的日志,未看到异常信息,没有看到请求处理超时。

客户端抓包,发现SYN请求建立连接,服务端没有回SYN+ACK。
在这里插入图片描述

服务器抓包,未针对SYN包进行响应。
在这里插入图片描述

基于这个信息查询,定位系统开启了TCP连接复用参数(tcp_tw_recyle)。和运维沟通,近期针对tcp连接参数进行过调整。恢复了调整参数,然后反馈服务正常。

为什么会丢弃SYN包

服务器任务该数据包是无效的包,故丢弃了。
启用了tcp_tw_recyle之后,开启了per-host的PAWS检查。但数据包里面的时间戳比上一次小,忽略该数据包。

相关知识串联

TCP基础知识点

  • TCP/IP的职能定位
    • IP,提供的是端到端的传输。从源IP传输到目标IP,选择合适的传输路线,但不保证可靠性。尽力而为。
    • TCP,在IP的基础上,提供点到点的服务。从源IP的源端口传输到目标IP的目标端口,保证同一个连接下传输的有序、可靠。
  • 如何识别同一个TCP连接
    • 通过四元组识别,四元组:源IP、源端口、目标IP、目标端口(还有一个隐性条件:协议类型)。这四个信息一样的即认为同一个TCP连接。
  • TCP有序性保障
    • 在每个传输的报文段里面添加了sequence信息,接收方接收到数据后进行应答,告知发送方已收到相应的sequence数据。由于网络的不可靠性,可能会出现丢包,或者延时的情况。如接收方已接收到sequence 10000及之前所有的数据包并进行了处理,此时如果收到该sequence之前的包,会丢弃掉不进行处理。(此处为理解问题进行了简化,实际上也会回ack应答)
    • sequence标识的是传输内容字节的顺序,而非报文的序号。sequence有长度限制(32bit),最大为4G(2^32),当超过上限后会循环开始。

PAWS+时间戳选项的起因

  • 高速带宽+接收方接收能力提升导致sequence不够用,为了解决sequence不够用的场景,增加时间戳用于辅助识别数据包的有效性
    • 见下面截图介绍(来源于TCP/IP详解*卷一)
      在这里插入图片描述

TCP挥手过程

见下图。主动发起断开方最后需要等待2MSL时间
在这里插入图片描述

TCP连接复用+快速回收

tcp_tw_recycle:快速回收TIME_WAIT状态的连接;不推荐在NAT模式下使用;
tcp_tw_reuse:快速复用TIME_WAIT状态的连接;
在这里插入图片描述

NAT联网介绍

在这里插入图片描述
图片来源于《计算机网络*自顶向下方法》

per-host PAWS机制

当开启了tcp_tw_recycle和tcp_timestamps之后,会开启per-host的PAWS机制,tcp识别由连接的识别由四元组(源IP、源端口、目标ip、目标端口)变为三元组(源IP、目标ip、目标端口)。
在这里插入图片描述

问题产生过程

server端是linux系统,默认开始了tcp_timestamps机制。现在又开启了tcp_tw_recycle。
客户端电脑,一般都是NAT联网。不同电脑的时间戳是不一样的。
当A电脑和server端交互完成后,B电脑马上和server端交互,且时间戳比A小。server端会认为是一个无效的包,丢弃它。

验证的部分场景截图

server端主动断开(相同的四元组),syn包被忽略。第二次请时间戳<第一次时间戳
在这里插入图片描述

client主动断开(不同的四元组),syn包没有应答。一台client关闭了timestamp选项
在这里插入图片描述

相同的四元组,server端主动断开,有应答。第二次请时间戳>第一次时间戳
在这里插入图片描述

不同的四元组,server端主动断开,有应答。第二次请时间戳>第一次时间戳(第一台的client关闭了timestamp)
在这里插入图片描述

参考资料

syn丢弃场景介绍
tcp_tw_recycle引发的问题
TCP时间戳介绍

附*系列文章索引

整理起因
报文分析
报文格式解读
握手+挥手过程状态变化分析
滑动窗口介绍
可靠数据传输原理
拥塞控制
网络异常案例(1、2、3、4、5)

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

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

相关文章

20240131在WIN10下配置whisper

20240131在WIN10下配置whisper 2024/1/31 18:25 首先你要有一张NVIDIA的显卡&#xff0c;比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡&#xff01;】800&#xffe5; 2、请正确安装好NVIDIA最新的545版本的驱动程序和CUDA。 2、安装Torch 3、配置whisper http…

2024年数学建模美赛 分析与编程

2024年数学建模美赛 分析与编程 1、本专栏将在2024年美赛题目公布后&#xff0c;进行深入分析&#xff0c;建议收藏&#xff1b; 2、本专栏对2023年赛题&#xff0c;其它题目分析详见专题讨论&#xff1b; 2023年数学建模美赛A题&#xff08;A drought stricken plant communi…

k8s Sidecar filebeat 收集容器中的trace日志和app日志

目录 一、背景 二、设计 三、具体实现 Filebeat配置 K8S SideCar yaml Logstash配置 一、背景 将容器中服务的trace日志和应用日志收集到KAFKA&#xff0c;需要注意的是 trace 日志和app 日志需要存放在同一个KAFKA两个不同的topic中。分别为APP_TOPIC和TRACE_TOPIC 二、…

【笔记】React-Native跟Android交互--简单示例

/** * 使用命令 npx react-nativelatest init DemoRN创建项目 * * "react": "18.2.0", * "react-native": "0.73.2" * * 官网有详细教程&#xff1a;https://reactnative.dev/docs/native-modules-android */ 一、RN invoke androi…

Java 的 Map 與 List

通過重新new 一個ArrayList 轉化 resTask.setList(new ArrayList<Group>(custMap.values())); 无序的Map List 有序的数据放到Map&#xff0c;就变成无序。 List排序 按照code 的字母进行排序A-Z resTask.getListData().sort(Comparator.comparing(Gmer::getCode));…

Hadoop3.x基础(2)- HDFS

来源&#xff1a;B站尚硅谷 目录 HDFS概述HDFS产出背景及定义HDFS优缺点HDFS组成架构HDFS文件块大小&#xff08;面试重点&#xff09; HDFS的Shell操作&#xff08;开发重点&#xff09;基本语法命令大全常用命令实操准备工作上传下载HDFS直接操作 HDFS的API操作HDFS的API案例…

Vue.js 学习14 集成H265web.js播放器实现webpack自动化构建

Vue.js 学习14 集成H265web.js播放器实现webpack自动化构建 一、项目说明1. H265web.js 简介2. 准备环境 二、项目配置1. 下载 H265web.js2. 在vue项目里引入 H265web3. 设置 vue.config.js 三、代码引用1. 参照官方demo &#xff0c; 创建 executor.js2. 在 vue 页面里引用htm…

Wireshark网络协议分析 - Wireshark速览

在我的博客阅读本文 文章目录 1. 版本与平台2. 快速上手2.1. 选择网络接口进行捕获&#xff08;Capture&#xff09;2.2. 以Ping命令为例进行抓包分析2.3. 设置合适的过滤表达式2.4. 数据包详情2.5. TCP/IP 四层模型 3. 参考资料 1. 版本与平台 Wireshark是一个开源的网络数据…

Linux——安装MySQL

1、安装mysql8.0.35 1.1、安装步骤 1.更新包列表&#xff0c;首先&#xff0c;确保您的系统已更新到最新状态。运行以下命令来更新包列表和安装最新的软件包&#xff1a; sudo apt update sudo apt upgrade2.安装MySQL服务器&#xff1a;运行以下命令来安装MySQL服务器&…

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏5(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言修改鼠标光标和中心提示图鼠标光标素材修改默认鼠标光标修改中心提示图 拾取提示弹窗简单绘制UI拾取弹窗功能 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使…

ASTORS国土安全奖:ManageEngine AD360荣获银奖

美国安全今日&#xff08;AST&#xff09;的年度“ASTORS”国土安全奖计划是一个备受瞩目的活动&#xff0c;致力于突显国土安全领域的创新与进步。这一奖项旨在表彰在保护国家免受安全威胁方面做出卓越贡献的个人和组织。该计划汇聚了执法、公共安全和行业领袖&#xff0c;不仅…

能耗在线监测系统在节能管理中的应用

上海安科瑞电气股份有限公司 胡冠楠 咨询家&#xff1a;“Acrelhgn”&#xff0c;了解更多产品资讯 摘要&#xff1a;开展能耗在线监测系统建设&#xff0c;对加强政府部门和企业节能管理中的应用前景&#xff0c;分析系统在能源消费预测分析、能效对标、节能监察、能源精细化…

单片机驱动多个ds18b20

目录 1设计内容 2ds18b20介绍 2.1传感器引脚及原理图 2.2寄存器配置 3程序实现 3.1配置初始化 3.2配置寄存器 3.3ROM读取 3.4温度读取 1设计内容 通过51单片机&#xff0c;读取总线上挂载的多个ds18b20的温度信息。 如下图&#xff0c;成功读取到3路温度数据。 2ds18…

路由备份聚合排错

目录 实验拓扑图 实验要求 实验排错 故障一 故障现象 故障分析 故障解决 故障二 故障现象 故障分析 故障解决 故障三 故障现象 故障分析 故障解决 故障四 故障现象 故障分析 故障解决 故障五 故障现象 故障分析 故障解决 实验拓扑图 实验要求 按照图示配…

软件工程知识梳理4-详细设计

详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统&#xff0c;也就是说.经过这个阶段的设计工作.应该得出对目标系统的精确描述.从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 详细设计的的目标不仅仅是逻辑上正确地实现每个模块地功能&a…

使用最大边界相关算法处理文章自动摘要

一、需求背景 对于博客或者文章来说&#xff0c;摘要是普遍性的需求。但是我们不可能让作者自己手动填写摘要或者直接暴力截取文章的部分段落作为摘要&#xff0c;这样既不符合逻辑又不具有代表性&#xff0c;那么&#xff0c;是否有相关的算法或者数学理论能够完成这个需求呢&…

【UE 材质】球形遮罩材质

效果 步骤 1. 新建一个材质&#xff0c;这里命名为“M_Mask” 打开“M_Mask”&#xff0c;混合模式设置为已遮罩&#xff0c;勾选双面显示 在材质图表中添加如下节点 此时我们将一个物体赋予材质“M_Mask”并放置在世界坐标原点&#xff0c;可以看到如下效果 2. 如果我们希望能…

UE4学习笔记 FPS游戏制作1 制作第一人称控制器

文章目录 章节目标前置概念Rotator与Vector&#xff1a;roll与yaw与pitch 添加按键输入蓝图结构区域1区域2区域3区域4 章节目标 本章节将实现FPS基础移动 前置概念 Rotator与Vector&#xff1a; Vector是用向量表示方向&#xff0c;UE中玩家的正前方是本地坐标系的(1,0,0)&…

MySQL备份和恢复(二)mysqldump

注意&#xff1a;mysqldump是完全备份 一、mysqldump备份命令 1、 备份数据库 含创建库语句 &#xff08;1&#xff09;备份指定数据库 完全备份一个或多个完整的库&#xff0c; mysqldump -uroot -p[密码] --databases 库名1 [库名2].. >/备份路径/备份文件名.sql#导出…

华为笔记本matebook pro X如何扩容 C 盘空间

一、前提条件 磁盘扩展与合并必须是相邻分区空间&#xff0c;且两个磁盘类型需要相同。以磁盘分区为 C 盘和 D 盘为例&#xff0c;如果您希望增加 C 盘容量&#xff0c;可以先将 D 盘合并到 C 盘&#xff0c;然后重新创建磁盘分区&#xff0c;分配 C 盘和 D 盘的空间大小。 访…