相比于UDP,TCP是可靠的传输服务,具体原理如下:
1.序列号,确认应答,超时重传机制
发送端发送的数据到接收端达后,接收方需要发出一个确认应答表示收到该数据段,并将序列号改为下一次需要接收的序列号。如果发送端未收到确认应答,会在一定时间后进行重传。
2.窗口控制
在一个窗口大小(无需等待确认而可以继续发送数据的最大值)内,不用等到应答就可以发送下一段数据,可以提高传输速度。
窗口控制的优点:如果数据段101之后丢失,每次数据传输确认应答都会发送序号为101的应答,表示希望接收101开始的数据,发送端收到三次相同应答就会重发。如果接收端收到了数据但是应答丢失了不会进行重发(如果数据段丢失接收端会疯狂提醒)
3.拥塞控制
1.慢启动:定义拥塞窗口,由小到大逐渐增大发送窗口。(每次收到确认应答,窗口大小*2)
2.拥塞避免:设置慢启动的阈值,当窗口大小达到阈值时,窗口数值不再*2,而是线性增加(每次确认,窗口大小+1)
一旦发生超时重传,阈值设为当前窗口一半再重新进行慢启动过程
3.快重传:M1接收确认,M2接收确认,M3没有接收到但是接收到了M4,必须立即发出对M2的重复确认,发送方一连收到3个重复确认立即进行重传,不会误认为网络拥塞。
4.快恢复:将阈值和窗口大小都调整为现在门限的一半并开始执行拥塞避免算法。