| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 网络协议 -> 三次握手中的第二次丢包后会发生什么? -> 正文阅读 |
|
|
[网络协议]三次握手中的第二次丢包后会发生什么? |
概述如果你在客户端发现一些莫名其妙的 504 响应码,却不知道为什么,那么本文对你可能有帮助。 如果你查看 Nginx 日志发现有时出现 如果你发现你的机器向别的机器发送 RST 包,却不知道为什么,那么本文对你可能有帮助。 报文解析在最后的附录,附上了笔者当时排查用到的双方向报文,按需自行查阅。 原因解析
上图是 TCP 三次握手中的第二次(SYN+ACK)报文丢失进而引发 RST 的完整过程,下面我用文字叙述一遍: 首先,正常的三次握手流程应该是:
而第二次握手报文丢失情况的过程是:
至此,服务端第二次握手的 SYN+ACK 包丢失,最终导致了客户端“莫名其妙”地发出 RST 包。 PS:KleeNet 论文中指出服务端回复 ACK 给客户端是因为服务端忽略了重传报文的 SYN 标志位,并认为这是一个 BUG。而实际上,这并不是一个 BUG,而是 TCP 为了减轻通过 SYN 标志位进行的 RST 攻击(Blind Reset Attack Using the SYN Bit)的影响 ,有意为之的。 PS:我们事后排查,是因为客户端与服务端之间存在防火墙,防火墙的硬件模块故障导致某些 TCP 包被防火墙丢弃,进而引发丢包,进而引发了 TCP 建连失败,进而引发了 Nginx 的 504 问题 现象对比客户端如果你是客户端,你发现你的抓包结果有如下几个特征,那么极有可能就是本文所述的情况:
服务端如果你是服务端,你发现你的抓包结果有如下几个特征,那么极有可能就是本文所述的情况:
附录客户端报文
服务端报文
参考文献KleeNet: Discovering insidious interaction bugs in wireless sensor networks |
|
|
| 网络协议 最新文章 |
| 使用Easyswoole 搭建简单的Websoket服务 |
| 常见的数据通信方式有哪些? |
| Openssl 1024bit RSA算法---公私钥获取和处 |
| HTTPS协议的密钥交换流程 |
| 《小白WEB安全入门》03. 漏洞篇 |
| HttpRunner4.x 安装与使用 |
| 2021-07-04 |
| 手写RPC学习笔记 |
| K8S高可用版本部署 |
| mySQL计算IP地址范围 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/14 8:50:03- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |