1……tcp out-of-order(tcp有问题)

2……tcp segment of a reassembled PDU

3……Tcp previous segment lost(tcp先前的分片丢失)

4……Tcp acked lost segment(tcp应答丢失)

5……Tcp window update(tcp窗口更新)

6……Tcp dup ack(tcp重复应答)

7……Tcp keep alive(tcp保持活动)

8……Tcp retransmission(tcp 重传)


在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.
其中,对于我们日常的分析有用的就是前面的五个字段。

它们的含义是:

URG:Urget pointer is valid (紧急指针字段值有效)

SYN: 表示建立连接

FIN: 表示关闭连接

ACK: 表示响应

PSH: 表示有 DATA数据传输

RST: 表示连接重置。

       其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,如果只是单个的一个SYN,它表示的只是建立连接。TCP的几次握手就是通过这样的ACK表现出来的。但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。PSH为1的情况,一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。


TCP传输通信时的几个状态

TCP  Window Update

TCP  Previous segment lost

TCP  Dup  ACK XXXX#X;

TCP  Retransmission

 

TCP  Previous segment lost,它告诉发送方数据段丢失;TCP  Dup  ACK XXXX#X 则代表了数据段丢失TCP状态,XXXX代表数据丢失的位置,#后代表第几次丢失;而TCP Retransmission则代表重发丢失数据。


TCP第三次握手完成后,发现会出现一个TCP Window Update,如图3-11所示:

TCP传输协议抓包

3-11

TCP Window Update TCP通信中的一个状态,它可以发生的原因有很多,但最终归结于发送者传输数据的速度比接收者读取的数据还快,这使得接受端的在缓冲区必须释放一部分空间来装发送过来的数据,然后向发送者发送Windows Update,告诉给发送者应该以多大的速度发送数据,从而使得数据传输与接受恢复正常。

 

我们可以从下面几个比较明显的例子可以看出来。

TCP传输协议抓包

从图3-14可以看到ACK=7743len=0;而4832seq=9887,故中间有数据包丢失,所以211.144.69.242(设定为A)向10.10.80.54(设定为B)发送TCP Previous segment lost,说明数据丢失。4843行显示BA发送数据包,告诉A包丢失之前(即4841)的ACK信息。图3-15又出现了数据包丢失。(图3-164852行则显示TCP通信的状态TCP Fast Retransmission,表示快速重传。