AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1142718
Accepted
Mucker
Mucker
Asked: 2023-08-30 20:04:00 +0800 CST2023-08-30 20:04:00 +0800 CST 2023-08-30 20:04:00 +0800 CST

了解 TCP RST 网络捕获

  • 772

我只需要帮助理解下图,但我会给出上下文背景。

我们有一个应用程序配置为使用端口 8080 上的代理并需要互联网访问。在一天中的任意时间,应用程序无法连接并死机。我们正在努力找出原因。我们已经排除了固件和代理 URL 规则(无论工作还是失败,它总是会访问相同的 URL)。我认为这个问题与代理本身的性能问题有关。为了弄清真相,我一直在发生这种情况时进行网络捕获。

如果您查看下图,您会发现它是删除了 IP 详细信息的片段。源“42”的第一行是客户端计算机通过端口 8080 上的代理 (IP 35) 发出 TLS 请求。 注意:它通常可以工作并请求相同的 URL/IP,但这是失败的一次。底部窗口是第一条绿线的详细信息。

在此输入图像描述

突出显示的部分“下一个序列号”与 35(第 2 行到最后一行)最后返回的数据包的 ACK 匹配。这实际上是 35 回复客户端,声明它已收到发送给它的所有数据(这意味着设备已启动,因为它确认收到数据(意味着没有固件或网络问题))。请注意,它不会发回任何数据。此后客户端立即发出 TCP RST。这是我的解释,但我希望有人验证一下,因为我的 TCP 技能有点生疏。

客户端正在向代理发送某种形式的请求,但由于某种原因代理没有响应(在应用程序层)。由于代理确实回复了 TCP ACK,这意味着在网络层一切都很好。这意味着当数据通过网络堆栈传递到代理本身时,正是代理断开了连接。我还不知道为什么会这样,但我正在寻求澄清,以便我可以与代理团队交谈并告诉他们需要对此进行调查(他们认为这不是代理)。

支持我的观点的其他证据是,您在 RST 之前的图像中看到的前 4 行重复了很多次。同样,这意味着客户端正在重新发送它所收到的任何请求,但从未得到响应;然后它最终放弃并发出重置信号。

显然,代理前面有一个负载均衡器,而代理实际上是几台机器。我有一种感觉,其中一个后端存在问题,并且 LB 没有从池中删除该节点,因此可能会将数据发送到黑洞。

我正在寻求第二意见,根据捕获的结果,我上面的总结看起来是否准确?

networking
  • 1 1 个回答
  • 17 Views

1 个回答

  • Voted
  1. Best Answer
    Steffen Ullrich
    2023-08-30T23:20:51+08:002023-08-30T23:20:51+08:00

    此后客户端立即发出 TCP RST

    不是立即。RST 是在服务器发送最后一个 ACK​​ 后 30 秒由客户端发送的。

    ...您在 RST 之前的图像中看到的前 4 行重复了很多次

    这些不是同一条线。它们的 ACK 值不同。

    我的解释是,客户端正在发送一个具有更大负载的请求(因此来自服务器的多个 ACK​​ 来确认这一点),然后期望代理发回响应。30 秒后没有响应,客户端将放弃并关闭与 RST 的连接。

    目前尚不清楚代理为何不发送响应。可能是代理的问题。但也可能是上游服务器的问题,服务器只是将问题传播到客户端。

    但请注意,解释可能是错误的。没有提供太多上下文和数据包捕获,因此这更像是一个有根据的猜测。

    • 1

相关问题

  • 谁能指出我的 802.11n 范围扩展器?

  • 我怎样才能得到一个网站的IP地址?

  • 在一个 LAN 中使用两台 DHCP 服务器

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve