Tcp

每次正常 ACK 後,Wireshark 在 SACK 上顯示“TCP Dup Ack”

  • November 7, 2015

我有一個通過交換機埠鏡像和 tcpdump 擷取的 TCP 會話。查看它時(在 Wireshark 中),每當我發送消息時,我都會看到相同的模式;這是出站數據包的摘錄(我還沒有擷取入站數據包):

[PSH, ACK] Seq=34477 Ack=46645 Len=51 # sending first message
[ACK] Seq=34528 Ack=46714 Len=0 # acknowledge response (not shown)
[ACK] Seq=34528 Ack=46714 Len=0 SLE=46645 SRE=46714 # TCP Dup Ack!

[PSH, ACK] Seq=34528 Ack=46714 Len=51 # sending second message
[ACK] Seq=34579 Ack=46783 Len=0 # acknowledge response (not shown)
[ACK] Seq=34579 Ack=46783 Len=0 SLE=46714 SRE=46783 # TCP Dup Ack!

問題是,為什麼我會得到這些“dup ack”數據包,它們實際上是 TCP 選擇性確認 (SACK) 數據包,似乎與之前的正常 ACK 數據包完全冗餘?

我一直看到這個 TCP 流的上述模式。機器正在執行 RHEL7。當我在正常介面(而不是鏡像)上執行 tcpdump 時,我看不到重複的確認。

主機在您的方案中收到重複的數據包 - 一個副本來自初始源,另一個來自鏡像埠。它對兩者都進行了回复,然後您會在鏡像埠上看到這兩個答案。

介面無關緊要,只要數據包被核心處理,應用程序關心的參數只有 IP 和埠。

引用自:https://serverfault.com/questions/733995