三次握手的过程
Ack=seq+1
数据传输过程
Ack号 = Seq号 + 传递的字节数
超时
当发送数据包丢失(也就是数据超时)
重传机制
•决定报文是否有必要重传的主要机制是重传计时器(retransmission timer),它的主要功能是维护重传超时(RTO)值。当报文使用TCP传输时,重传计时器启动,收到ACK时计时器停止。报文发送至接收到ACK的时间称为往返时间(RTT)。对若干次时间取平均值,该值用于确定最终RTO值。在最终RTO值确定之前,确定每一次报文传输是否有丢包发生使用重传计时器,下图说明了TCP重传过程。
•当报文发送之后,但接收方尚未发送TCP ACK报文,发送方假设源报文丢失并将其重传。重传之后,RTO值加倍;如果在2倍RTO值到达之前还是没有收到ACK报文,就再次重传。如果仍然没有收到ACK,那么RTO值再次加倍。如此持续下去,每次重传RTO都翻倍,直到收到ACK报文或发送方达到配置的最大重传次数。
•最大重传次数取决于发送操作系统的配置值。默认情况下,Windows主机默认重传5次。大多数Linux系统默认最大15次。两种操作系统都可配置。
四次挥手的过程
•TIME_WAIT状态要等待 2MSL(报文最大生存时间)才会进入 CLOSED 状态。在这段时间内,此端口是不可用的。
•只有主动断开连接(即调用close/closesocket)时,才会发送FIN包。断开连接后,将套接字描述符(或句柄)从内存清除,之后再也不能使用该套接字。
•程序退出时,会进行socket的清理工作。此时如果socket没有关闭的话,会直接发送RST包(标识重置不再接收任何包。)
•当向对方发送包时,对方如果处于CLOSED状态,则会收到RST包
•Ack=seq+1