参考回答:
TCP保证可靠性:
(1)序列号、确认应答、超时重传
数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,
并且确认序号会说明了它下一次需要接收的数据序列号。如果发送发迟迟
未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,
这时发送方在等待一定时间后会进行重传。这个时间一般是2*RTT(报文段
往返时间)+一个偏差值。
(2)窗口控制与高速重发控制/快速重传(重复确认应答)
TCP会利用窗口控制来提高传输速度,意思是在一个窗口大小内,不用一
定要等到应答才能发送下一段数据,窗口大小就是无需等待确认而可以继
续发送数据的最大值。如果不使用窗口控制,每一个没收到确认应答的数
据都要重发。
使用窗口控制,如果数据段1001-2000丢失,后面数据每次传输,确认应
答都会不停地发送序号为1001的应答,表示我要接收1001开始的数据,
发送端如果收到3次相同应答,就会立刻进行重发;但还有种情况有可能
是数据都收到了,但是有的应答丢失了,这种情况不会进行重发,因为发
送端知道,如果是数据段丢失,接收端不会放过它的,会疯狂向它提醒......
(3)拥塞控制
如果把窗口定的很大,发送端连续发送大量的数据,可能会造成网络的拥
堵(大家都在用网,你在这狂发,吞吐量就那么大,当然会堵),甚至造
成网络的瘫痪。所以TCP在为了防止这种情况而进行了拥塞控制。