1. TCP DUP ACK
TCP dup ack XXX#X原因分析:
就是重複應答#前的表示封包到哪個序号丢失,#後面的是表示第幾次丢失.
當亂序或者丢包發生時,接收方會收到一些Seq号比期望值大的包。它每收到一個這種包就會Ack一次期望的Seq值,以此方式來提醒發送方,于是就産生了一些重複的Ack。Wireshark會在這種重複的Ack上标記[TCP Dup ACK] .
2. TCP Fast Retransmission
某一端收到三個重複的ack,啟動快速重傳.
3.TCP Previous segment not captured
丢失了中間某一段資料
4. TCP Out-of-Order
在TCP傳輸過程中(不包括三次握手和四次揮手),同一台主機發出的資料包應該是連續的,即後一個包的Seq号等于前一個包的Seq+ Len , 由于TCP DUP ACK的出現,導緻中途某個資料包丢失,需要重傳,511/512 重傳的資料seq就小于502資料包傳遞的序列.
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSPFpmT0UFVPFTTE9Uej1mYwJlMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3cjM0EDNzMTMwMDMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
以上圖為例:
496: (server->client) seq = 23067 , len = 1460
497: (server->client) 原本該包起始seq: 23067+1460 = 24527 , 但是,可以看到提示 TCP Previous segment not captured , 實際起始seq: 28907 , len = 1460, 就知道中間缺失了一段資料(24527- 28907)
498: (server->client) 起始seq: 30367 , len = 1460
499: (client->server)ACK ,告之server端,重新發送 seq= 24527 開使的資料包,同時告訴server ,client已經收到了(28907-30367)
500: (client->server) TCP dup ack 499#1 , 重複應答,告之server 端,重新發送seq= 24527 開使的資料包 ,更新client已經收到了(28907-31827)
502: (server->client) server繼續發送 seq = 31827 ,len = 1460
503: (client->server) TCP dup ack 499#2,再次重複應答,告知server端,重新發送seq= 24527 開使的資料包 ,更新client已經收到了(28907-33287)
510: (server->client)server 啟動快速重傳TCP Fast Retransmission,可以看到511,512,就把之前缺失的資料(24527- 28907)給重傳了.
515/516: (client->server) 發送ack給server端,告之client端已經收到了缺失的資料(24527- 28907)
517: (client->server) 發送ack給server端, 告之client端已經收到了33287,實際上是對503中client端收到該序列資料(28907-33287)的應答. 隻需把最大的序列号通知即可,server就知道前面所有的資料就已經成功接收了
5.TCP zerowindow
TCP包中的“win=”代表接收視窗的大小,即表示這個包的發送方目前還有多少緩存區可以接收資料。當Wireshark在一個包中發現“win=0”時,就會給它打上“TCP zerowindow”的标志,表示緩存區已滿,不能再接受資料了
6.TCP keep-Alive
用于檢測對端存活情況,如上圖,465通知win=0,暫停資料的傳輸,等了2s ,對端發送keep alive, 對端479立馬回複 win=0.
7. TCP window Update
通知視窗更新,如上圖,win=1024. 對端立馬可以發送資料
8.TCP ACKed unseen segment
當Wireshark發現被Ack的那個包沒被抓到,就會提示 [TCP ACKed unseen segment], 在一個網絡包的開頭會經常看到這個提示,因為隻抓到了後面的Ack但沒抓到前面的資料包。從上圖27可以看出,回複的Ack=16062 , 就代表client已經收到server前面所有的資料. 該種提示可以忽略,