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数据包传递的序列.
以上图为例:
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前面所有的数据. 该种提示可以忽略,