tcp - 涉及两个以上端口的 TCP 握手
问题描述
我在 Kubernetes 集群上部署了一个应用程序。我在此部署中使用 Istio/Envoy 来控制入站/出站流量。我使用 TCPdump 收集了一些 TCP 数据包来调查某些问题。
据我了解,TCP 握手应该只涉及一对 5 元组(src-IP、src-Port、dst-IP、dst-Port、协议)。例如
IP: 198.168.1.100 Port: 52312 ----SYN----> IP: 198.168.1.101 Port: 80
IP: 198.168.1.100 Port: 52312 <--SYN ACK-- IP: 198.168.1.101 Port: 80
IP: 198.168.1.100 Port: 52312 ----ACK----> IP: 198.168.1.101 Port: 80
但在我收集的数据包中,我不明白的是:
10.X.X.X 127.0.0.1 TCP 76 33500 → 15001 [SYN] Seq=3333992218
X.X.X.X 10.X.X.X TCP 76 80 → 33500 [SYN, ACK] Seq=2228273021 Ack=3333992219
10.X.X.X 127.0.0.1 TCP 68 33500 → 15001 [ACK] Seq=3333992219 Ack=2228273022
请注意,SYN ACK 是从端口 80 返回的。首先,我认为可能丢失了数据包,实际上有两次握手,但查看序列号和确认号,似乎是单次握手。
如果这是一次握手,你会如何解释?是否有一种不同的 TCP 握手技术?
解决方案
推荐阅读
- javascript - 当鼠标悬停在下一个或上一个 div 上时隐藏活动 div
- python - 使用正则表达式从文本中提取未知数量的字符串
- python - 尝试使用 pyautogui.press('volumemute') 使系统静音,但它什么也没做
- python - 极小极大函数内国际象棋移动生成的转置表
- php - Laravel 在下拉菜单中预选
- azure - 限制对 Azure 存储库的访问
- java - 由于 Android Studio 中的运行时异常,Android 应用程序崩溃
- javascript - MongoDB UpdateOne 没有更新,尽管它给出了成功的消息
- python - 如何在 python turtle 的中心点周围绘制多边形
- java - 为什么maven在我的项目中安装了itextsharp的依赖而不是com.lowagie.itext?