networking - 重新连接后的 TCP Dup ACK - 序列号问题?
问题描述
目前我正在调试同一网络中两台设备之间的网络流量。网络架构非常简单。
设备 1 <-> 交换机 1 <-> 交换机 2 <-> 设备 2
为了验证设备上的软件,我检查了不同的场景。其中之一是在我拔下交换机 1 和交换机 2 之间的网络电缆并在几秒钟后再次插入后正确重新连接。
我将wireshark 捕获上传到我的onedrive:Wireshark 捕获
数据包1-9是正确的通信。
数据包9和数据包10之间的电缆被拔下。
在数据包10中,设备 1 尝试在未收到 ACK 的情况下向设备 2 发送数据。
在数据包11/12中,设备 2 发送 Keep-Alive 消息。
在数据包12和13之间再次插入电缆。
数据包13确认最后一条 Keep-Alive 消息,这似乎很好。
从现在开始,它变得很奇怪。我只看到 TCP Dup ACK 消息。
我假设 TCP 堆栈对序列号的差异感到困惑。设备 1 认为自己的序列号是 49,设备 2 认为是 37。设备 1 不支持快速重传。
有人可以解释这里发生了什么吗?我正在努力理解问题出在哪里。问题是在设备 1 中,TCP 堆栈认为它在序列号 49 上,而包尚未确认,还是在设备 2 中?
我真的很感谢你的帮助。
好心,菲利普
解决方案
推荐阅读
- c++ - 我有一个希望远程调试的 MFC 旧版 C++,但配置中的“部署”框显示为灰色。如何启用它?
- excel - 应用自动筛选后忽略电子表格中的隐藏行
- r - 使用 facet_grid 为每个单独的图添加标签
- reactjs - 为什么我的“已连接”组件中没有历史道具?
- c# - 对多个按钮和值使用一个功能
- javascript - Javascript 数组如何正确地将值克隆到另一个数组。角 7
- c++ - 基于在其参数上调用流输出运算符的能力重载函数
- python - 如何从图像创建精灵
- php - Laravel 请求是一个数组,但 count() 无法识别
- amazon-web-services - 如何检查密钥对是否仍在 EC2 中使用?