A:如果A发送的最后一个ACK关闭了它的包,没有被B收到,那么在B扫描之后,它会发送另一个FIN包,然后处于TIME_WAIT状态的A会收到。A会再发送一个ACK包,重新开始计时,不断重复这个过程,直到A在整个TIME_WAIT期间没有收到B发送的FIN包,也就是说B已经如果A没有TIME_WAIT状态,而是直接关闭,那么在ACK包丢失后,B会再发送一个FIN包,但是这个包A不会应答,所以B最终会收到RST,误认为是连接错误,不符合可靠连接的要求。
回答:在TCP协议中,接收方成功接收到数据后,会回复一个ACK包,表示已经确认收到ACK确认号之前的所有数据。的。ACK字段的长度为32位,可以表示0到2 ^ 32-1之间的值。发送方在一定时间内没有收到来自服务器的ACK确认包后,将重新发送TCP包。发送方已经收到ACK,表示接收方已经收到数据,从而保证数据的可靠到达。接收方在收到数据后不会立即向发送方发送ACK。这可能是由以下原因造成的:1.在已接收分组的序列号之前有要接收的分组。发送数据时,发送方不需要等到最后发送的数据为Ack才继续发送TCP包,而且这些TCP包的顺序没有保证,所以接收方可能会先收到TCP包再发送(注意提交给应用层时顺序是有保证的)。
A: 25:当A收到来自B的ack为41460的数据包时,只要它看到41460,这正好是它最后一个数据包的seq加上数据包大小,它就知道最后一个数据包已经安全到达。所以它向b发送另一个数据包。