TCP服务器发送ACK报文后是否会启动定时器及重传该报文?
TCP ACK报文的定时器与重传问题
服务器发送单独的ACK报文时,不会启动定时器
TCP的定时器机制核心是为已发送但未被确认的数据段服务的——发送数据段后启动重传定时器,超时未收到对应ACK就重传数据。而单独的ACK只是对收到数据的确认,它本身不需要被对方确认,因此没必要为其启动定时器。若单独的ACK报文丢失或超时,服务器不会主动重传该ACK
客户端如果没收到预期的ACK,会触发自身的重传定时器,重传之前发给服务器的数据段。服务器收到这个重传的数据后,会再次发送ACK来确认。整个过程中,服务器不会追踪自己发出的ACK是否被收到,也不会主动重传丢失的ACK本身。
补充:如果ACK是和服务器要发送的数据捎带在一起的(比如服务器在回复数据的同时确认客户端的报文),那此时触发的是数据段的重传定时器,而非单独ACK的定时器。如果这个捎带了ACK的数据段丢失,服务器会重传整个数据段(自然也包含了ACK),但这本质是重传数据,不是重传ACK。
内容的提问来源于stack exchange,提问作者luke zou
相关产品推荐
相关产品推荐

