【发布时间】:2021-03-08 22:42:26
【问题描述】:
我在 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 握手技术?
【问题讨论】: