1.TCP状态
从上面的TCP状态迁移图中可以看出,一共存在以下状态:
- CLOSED
CLOSED状态不是一个真正的状态, 而是这个状态图的假想起点和终点
- LISTEN
初始状态,进行监听,但是当收到RST报文时,也会出现此状态,即由SYN_RCVD状态转变为Listen
- SYN_RCVD
接收到SYN时候,从Listen状态转变为SYN_RCVD
- SYN_SENT
发送SYN包
- ESTABLISHED
建立连接,收到对方的ACK
FIN_WAIT_1
从ESTABLISHED状态发送了FIN后,转换为
FIN_WAIT_1
状态
FIN_WAIT_2
收到对端的ACK,并已经发出了FIN
- CLOSING
双方同时关闭
- TIME_WAIT
- CLOSE_WAIT
2.TCP的三次握手及四次挥手
2.1 Client端的状态
- SYN_SENT
- ESTABLISHED
FIN_WAIT_1
FIN_WAIT_2
- TIME_WAIT
主动关闭
2.2 Server端的状态
- LISTEN
- SYN_RCVD
- ESTABLISHED
- CLOSE_WAIT
- LAST_ACK
- CLOSED
被动关闭
3.TCP的字段含义
- MSS
在TCP连接connect时候,即三次握手的过程中,协商双方支持的最大报文长度(Maximum segment size)
MSS选项只能出现在SYN报文段
如果一方不接收来自另一方的MSS值,则MSS就定为默认值536字节(这个默认值允许20字节的IP首部和20字节的TCP首部以适合576字节IP数据报)
- seq
系列号:本端上一次发送的数据包+上一次发送的数据长度,或者为接收包的ack
- ack
确认:接收包的seq+接收包的长度
- win:
窗口大小,我们没有交换任何数据,窗口大小就维持默认情况下的4096
- MSL
报文段最大生存时间MSL(Maximum Segment Lifetime)详细见 TCP之2MSL