1、tcp滑动窗口的变化规律
2、tcp处理高并发连接时的参数调整
3、tcp异常状态的产生
(1)tcp的状态机中状态是SYN_RCVD和SYN_SENT,不是SYN_ENT
(2)由于TCP协议情况下syn与ack可能同时发送也可能分开发送,
所以也就会出现 SYN_RCVD到ESTABLISHED
SYN_SEND->SYN_RCVD->ESTABLISHED
(3)在SYN_RCVD与SYN_SENT没有收到syn,ack的时候,就会超时返回CLOSED
(4)同样由于fin,ack也可能是同时发送(一个包),也可能是分开在两个包发送,而且达到的顺序
可能有先后的区别,如果是先收到对方的fin,也就会从FIN_WAIT_1到CLOSING状态
如果先收到自己fin的ack的话,就会从FIN_WAIT_1到FIN_WAIT_2
最后再收到自己fin的ack或者对方的fin,然后分别从FIN_WAIT_2->TIME_WAIT,
CLOSING->TIME_WAIT,最后再发出ack,或者2MSL超时后回到CLOSED
(5)被动关闭的一方,一般是服务器,服务器大多数情况下不会主动断开连接,
ESTABLISHED收到fin后就到CLOSE_WAIT同时发送ack,然后等待应用层调用close
调用之后,就会进入LAST_ACK同时发出fin,等待最后一个ack,进入CLOSED
由此可见TCP的状态机是在内核维护和管理,但是内核提供了系统调用和事件机制
可以让应用层得知状态变化
(6)RST包是在CLOSED状态下发出的
(7)TCP扩展状态:针对半连接
连接建立:
SYN_SENT*,进入这个状态发送SYN,FIN
SYN_RCVD*,进入这个状态发送SYN,FIN,ACK
ESTABLISHED* ,进入这个状态发送SYN,ACK
与不带星号的区别,就是要发FIN
关闭连接:
CLOSE_WAIT*,发送SYN,ACK
FIN_WAIT_1*,发送SYN,FIN,ACK
CLOSING*,发送SYN,FIN,ACK
LAST_ACK*,发送SYN,FIN,ACK
与不带星号的区别,就是要发送SYN
之所以有这种状态,因为客户端发的包可能是SYN+Data+FIN的组合,只不过
其他的状态都跳过去了,但是否带星的状态会向不带星的状态转变?
阅读(1494) | 评论(0) | 转发(0) |