使用 tcpdump 监控流量时丢失 UDP 片段

2024-01-09

我所在的本地 LAN 上只有 8 台连接的计算机,使用 netgear 24 端口千兆位交换机,网络负载非常低,所有相关节点(运行 slackware 11)上的发送/接收缓冲区已设置为 16mb。我还在每个节点上运行 tcpdump 来监控流量。

发送节点发送一个 10044 字节的大 UDP 数据包,该数据包通常(3/4 次)不会在接收端应用程序中结束,在这些情况下,我注意到(使用 tcpdump)前 x 片段丢失,只有最后一个片段丢失3(所有偏移量> 0并且按顺序)被tcpdump捕获。因此,碎片化的 UDP 数据包无法重新组装,很可能被丢弃。

我发现丢失的片段很奇怪,因为我还尝试了一个简单的负载测试,突发了 10000 个相同大小的 UDP 消息,接收应用程序发送了一个响应,并且到目前为止所有测试都给出了 100% 的响应。

有什么线索或提示吗?


Update!

恢复上述软件的测试后,我找到了一种可重复的方法来重现错误。

在发送 Windows 计算机上使用 windump,在接收计算机上使用 tcpdump,在让应用程序空闲一段时间(~5 分钟)后,我尝试发送 udp 消息,但最终只得到了 windump 和 tcpdump 捕获的单个片段,剩下的 3 个碎片丢失了。再次发送相同的消息工作正常,booth windump 和 tcpdump 捕获所有 4 个片段,并且接收端的应用程序获取该消息。该模式是可重复的。

开始搜索并找到以下信息,但对我来说,仍然没有明确的答案。

http://www.eggheadcafe.com/software/aspnet/32856705/first-udp-message-to-a-sp.aspx http://www.eggheadcafe.com/software/aspnet/32856705/first-udp-message-to-a-sp.aspx

重新检查日志,我现在注意到正在发送 ARP 请求/回复,这与上面链接中给出的想法之一相匹配。

笔记!我使用以下命令在发送端过滤 windump:“dst host receivenode”

从 windump 捕获:第一个失败的 udp 消息,应该是 4 个片段长

14:52:45.342266 arp who-has receivernode tell sendernode
14:52:45.342599 IP sendernode> receivernode : udp

从 windump 捕获:第二条 udp 消息,内容完全相同,所有 4 个片段均被捕获

14:52:54.132383 IP sendernode.10104 > receivernode .10113: UDP, length 6019
14:52:54.132397 IP sendernode> receivernode : udp
14:52:54.132406 IP sendernode> receivernode : udp
14:52:54.132414 IP sendernode> receivernode : udp
14:52:54.132422 IP sendernode> receivernode : udp
14:52:56.142421 arp reply sendernode is-at 00:11:11:XX:XX:fd (oui unknown)

有人对正在发生的事情有很好的了解吗?请详细说明!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 tcpdump 监控流量时丢失 UDP 片段 的相关文章

  • 搜索所有网络上的设备

    我想实现一个代码 通过它我可以列出网络上连接的 upnp 兼容媒体渲染器设备 我用谷歌搜索了这个并找到了以下代码扭曲的网站 https twistedmatrix com documents current core howto udp h
  • 致命错误:netinet/in.h:没有这样的文件或目录

    套接字编程 UDP 服务器 我正在尝试使用 UDP 服务器进行消息加密和解密 代码在这里 https www geeksforgeeks org message encryption decryption using udp server
  • 如何查看Azure应用服务内存使用情况?

    我们通过云服务提供商 CSP 订阅了 Azure 这对我们在 Azure 中获取和查看的内容造成了一些限制 尽管如此 我们还是可以看到每个CPU和内存的使用情况应用服务计划 我们如何才能看到特定的相同内容应用服务根据计划 如果我发现计划的
  • 监控 REST API 的最佳方式是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我创建了一个基于 RESTful 模式的 API 我想知道监视它的最佳方法是什么 我可以以某种方式收集每个请求的统计信息以及我可以监控
  • 为什么我们可以将 sockaddr 转换为 sockaddr_in

    我明白为什么强制转换很有用sockaddr to sockaddr in 但我不明白这怎么可能 据我所知 它们的大小相同sockaddr in添加了sin zero使其大小相同 我想知道编译器如何知道从哪里获取信息sockaddr in如果
  • 为什么通过UdpClient发送会导致后续接收失败?

    我正在尝试创建一个 UDP 服务器 它可以向所有向其发送消息的客户端发送消息 真实情况要复杂一些 但最简单的方法是将其想象为一个聊天服务器 之前发送过消息的每个人都会收到其他客户端发送的所有消息 所有这一切都是通过UdpClient 在单独
  • 自 2012 年以来,WinSock 注册 IO 性能是否有所下降?

    我最近使用 MS 为该 API 提供的稍微可接受的文档编写了基于 WinSock Registered IO RIO 的 UDP 接收 最终的性能非常令人失望 单套接字性能有些稳定 约为每秒 180k 数据包 使用多个 RSS 队列 即多个
  • Spark流吞吐量监控

    有没有办法监控 Spark 集群的输入和输出吞吐量 以确保集群不会被传入数据淹没和溢出 就我而言 我在 AWS EC2 上设置了 Spark 集群 所以我正在考虑使用AWS 云观察来监控网络输入 and 网络输出对于集群中的每个节点 但我的
  • 数据包丢失和数据包重复

    我试图找出数据包丢失和数据包重复问题之间的区别 有谁知道 数据包重复 是什么意思 和TCP检测到丢失时重传数据包一样吗 No In TCP 数据包 的传递是可靠的 我认为在这种情况下术语数据应该更好 因为它是面向流的协议 数据包丢失和重复是
  • Docker容器CPU使用率监控

    根据 docker 的文档 我们可以通过以下方式获取 docker 容器的 CPU 使用率码头工人统计命令 CPU 列将给出容器正在使用的主机 CPU 的百分比 假设我限制容器使用 50 的主机单个 CPU 我可以通过 cpus 0 5 选
  • 为什么 SNMP 通常在 UDP 上运行而不是 TCP/IP 上?

    今天早上 工作中出现了大问题 因为 SNMP 陷阱没有 通过 因为 SNMP 是通过 UDP 运行的 我记得在大学网络课上 UDP 不能像 TCP IP 那样保证传输 维基百科说 SNMP 可以在 TCP IP 上运行 但 UDP 更常见
  • UNIX系统调用监视器

    如何监控进程的系统调用 Check strace http linux die net man 1 strace 在最简单的情况下 strace 运行指定的命令直到退出 它拦截并记录进程调用的系统调用以及进程接收的信号 每个系统调用的名称
  • 检测(在服务器端)Flex 客户端何时与 BlazeDS 目标断开连接

    我想知道是否可以轻松检测 在服务器端 Flex 客户端何时与 BlazeDS 目标断开连接 我的情况很简单 我想尝试使用它来计算每个客户端在每个会话中连接的时间 我还需要能够区分客户端 即 不仅仅是计算我在 ds console 中看到的当
  • 为什么 Kademlia 使用 UDP?

    为什么Kademlia 分布式哈希表 http en wikipedia org wiki Kademlia使用 UDP 作为其网络传输协议 即使它不可靠 主要原因是您快速查询了许多以前从未建立过联系并且可能在查找过程中永远不会再看到的节点
  • 如何读取 UDP 连接直至超时?

    我需要读取 UDP 流量 直到超时 我可以通过在 UDPConn 上调用 SetDeadline 并循环直到出现 I O 超时错误来做到这一点 但这看起来很黑客 基于错误条件的流量控制 下面的代码片段看起来更正确 但并没有终止 在生产中 这
  • 无法使用基于日志的指标显示数据(指标类型:“计数器”)

    我正在努力创建一个带有 stackdriver 监控和基于日志的指标的图表 我的指标是一个计数器 默认情况下没有单位 日志可用于我的基于日志的指标 但是当我使用我的指标创建图表时 它说no data is available for the
  • java 7目录监控问题

    我刚刚看到 java 7 的一个很棒的功能 目录观察器 当目录中的内容发生更改时 它会告诉您 而无需轮询目录 1 但它表示 如果文件系统不支持注册更改事件 则会退回到轮询 所有典型的 Linux 和 Windows 文件系统 extX nt
  • C# 套接字数据报溢出

    我是 C 新手 我有一个关于udp套接字的小问题 我有一个聊天服务器 它接收特定结构的数据包 udp 数据报 为什么程序在套接字缓冲区已满时才接收数据 难道以后的一切就不应该失去吗 也许会出现数据包碎片 数据包结构 udp headers
  • 什么是监控网络活动的好工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我经营的是小区 现在我正在寻找一个在服务器 Windows 或 Linux 上运行的监控工具 它可以跟踪
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL

随机推荐

  • 是否可以在 VBA 中创建和使用 Microsoft Edge 变量/对象?

    我有一些 VBA 代码可以从网上获取股票价格 我的代码使用 InternetExplorer 对象 文档来执行此操作 但是 如果可能的话 我想改用 Microsoft Edge 对象 文档 在我当前的代码中 我初始化一个 InternetE
  • 访问 Outlook Exchange 全球地址簿

    我正在构建一个 csharp 应用程序 我想要一个包含我的所有用户的下拉列表Outlook 全球地址簿 当我从 Outlook gui 单击 收件人 时也是如此 是否可以获取此程序 这里的安全要求是什么 过去 除了 Outlook 依赖性之
  • 调整 3D 图像大小(并重新采样)

    我有大脑的 3D 图像 我们称之为 flash 当前尺寸为 263 x 256 x 185 我想将其大小调整为另一个图像的大小 称之为 Whole brain bravo 256 x 256 x 176 并且 希望 使用 lanczos 插
  • Github Actions 徽章显示“无状态”

    GitHub Actions 徽章出现问题 我有三个工作流程 https github com riZZZhik belinsky tree master github workflows在我的存储库中 我正在努力让他们的徽章进来Readm
  • 将日期格式更改为 yyyy-mm-dd

    我有一个日期列 其中包含混合格式的日期 例如 A 1990年3月21日1990年3月21日 因此 基本上一列中有两种不同的格式 dd mm yyyy and mm dd yyyy 我正在尝试编写一个 VBA 脚本来将列中所有日期的格式更改为
  • 带有 JSON 补丁的 GraphQL 突变

    GraphQL 中是否有任何数据类型可用于描述 JSON Patch 操作 JSON Patch 操作的结构如下 op add replace remove path hello value world Where value可以是任何有效
  • 如何在没有 Grails 的情况下创建 GSP 标记库

    我们可以在没有 Grails 的情况下使用 GSP 只需映射 servletgroovy servlet TemplateServlet 那么 TagLib 又如何呢 Here are http grails org doc latest
  • 从 Google 云端硬盘下载图像文件

    我正在将图像文件上传到 Google Drive SDK 然后尝试下载回相同的图像 我查看了 Google Drive Developer 示例中下载文件的示例 但它们仅向我们展示了如何从文件中下载文本 我该如何下载图像 该文件是 Goog
  • htmlpurifier 删除内联 css

    我正在使用 htmlpurifier 来清理用户内容 我正在尝试删除内联样式属性 例如 div some text div 我想删除整个样式属性 如何使用 htmlpurifier 做到这一点 您可以调整允许的属性 http htmlpur
  • 用于删除所有用户桌面上的所有图标的批处理脚本

    目前正在寻找一种方法来删除所有用户桌面上的所有图标 我一直在尝试 直到我制作了以下脚本 该脚本允许我从单个用户中删除所有内容 但如果没有硬编码 我将无法扩展它以覆盖单个 PC 上的所有用户 echo off cd del C Users U
  • 通过启动进程运行 cmd.exe 但无法将命令传递给 cmd.exe

    我想运行一个常规脚本cmd exe在不同的用户下 我用过Start Process 当脚本执行时 它只是用不同的用户在屏幕上打开提示 但不处理 command 所以我的问题是 运行后如何传递命令cmd exe使用 PowerShell 这是
  • Gmail 作为 JavaMail SMTP 服务器

    我一直在使用 JavaMail API 以 Gmail 作为我的主机 并对如何使用它发送电子邮件有一个大致的了解 但有两行代码仍然让我困惑 message setFrom new InternetAddress USERNAME API 表
  • 条件面板闪亮(似乎不起作用)

    有人可以帮我解决以下闪亮的问题吗 我需要制作一个条件面板 但在这里我不希望它出现 除非有人选择女性 然而 当我运行此代码时 条件面板出现在页面中 任何帮助都感激不尽 selectInput gender What is your gende
  • 检测 mysqli 准备好的语句中的错误[重复]

    这个问题在这里已经有答案了 我有一个自定义错误处理程序 但我需要知道在准备好的语句中测试错误的位置 我有测试吗prepared bind execute and store result 阶段还是仅选择阶段 statement databa
  • 为什么 StackPanel 不垂直拉伸其子级?

    WPF 新手 我正在查看 WPF 示例
  • 如何清理 InlineFormSet 中的某个字段?

    我需要清理内联表单集中的特定字段 但我不知道该怎么做 我尝试过使用表单集def clean self 方法但不知道在哪里保存清理后的值 如果我尝试将清理值设置为forms 0 data field 我收到 此 QueryDict 实例是不可
  • Laravel 5 应用程序始终使用“测试”环境配置

    我有一个 Laravel 5 应用程序 它有两个环境和两个配置 测试 用于 PHPUnit 配置 内存数据库 和本地 我的开发配置 即使环境配置为local 应用程序仅加载配置resources config testing文件夹 我可以从
  • 如何在 Windows 上配置 theano?

    我已经在 Windows 机器上安装了 Theano 并按照配置进行操作指示 http deeplearning net software theano library config html 我将以下 theanorc txt 文件放置在
  • 如何在 G Suite 上通过同意屏幕请求全域委派

    我需要访问公司的日历信息G Suite账户 通过API与公司系统同步数据 当我需要提供对我自己的数据的访问时 有一个相当好的方法简单的方法 https developers google com calendar auth去做吧 使用 Oa
  • 使用 tcpdump 监控流量时丢失 UDP 片段

    我所在的本地 LAN 上只有 8 台连接的计算机 使用 netgear 24 端口千兆位交换机 网络负载非常低 所有相关节点 运行 slackware 11 上的发送 接收缓冲区已设置为 16mb 我还在每个节点上运行 tcpdump 来监