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所示:
图3-11
TCP Window Update 是TCP通信中的一个状态,它可以发生的原因有很多,但最终归结于发送者传输数据的速度比接收者读取的数据还快,这使得接受端的在缓冲区必须释放一部分空间来装发送过来的数据,然后向发送者发送Windows Update,告诉给发送者应该以多大的速度发送数据,从而使得数据传输与接受恢复正常。
我们可以从下面几个比较明显的例子可以看出来。
从图3-14可以看到ACK=7743,len=0;而4832的seq=9887,故中间有数据包丢失,所以211.144.69.242(设定为A)向10.10.80.54(设定为B)发送TCP Previous segment lost,说明数据丢失。4843行显示B向A发送数据包,告诉A包丢失之前(即4841)的ACK信息。图3-15又出现了数据包丢失。(图3-16)4852行则显示TCP通信的状态TCP Fast Retransmission,表示快速重传。