https://s3-us-west-2.amazonaws.com/secure.notion-static.com/495e2978-d11e-41ce-843a-1443477b41b3/Untitled.png

TCP重传机制:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2351a4b1-78b7-43b7-8154-6805353809c4/Untitled.png

⚠️ 第一次发送的ACK不算冗余,后面再发的3个同样的ACK才是冗余ACK,接收端收到3个同样的ACK,发现是冗余ACK,触发快速重传。

发送方总共发送了4次确认ACK

异常情况的检测与采取措施。

可以连发多个报文段,进行累积确认。

当接收到数据,首先进行差错检测; 若数据正确,返回确认;错误则不进行响应确认.

若数据丢失,如何解决?

发送方每发送一个报文段,就启动一个重传定时器。

若报文段出错,发送方在超时重传时间RTO内未收到确认,定时器超时,重传报文段。

https://keyon-photo-1256901694.cos.ap-beijing.myqcloud.com/markdown/20191025144941.png

若确认丢失,如何解决?

若确认丢失,发送方定时器超时重传;接收方通过数据包的序号判断接收到重复数据包,丢弃该包,返回确认。

发送方:每次发送一个数据包,就会启动一个重传定时器,如果在规定的时间内,没有收到相应的确认信息,立即重传; 接收方:当收到一个正常包,返回确认;当收到错误包,不响应;当收到序号重复的包,丢弃,返回确认;

https://keyon-photo-1256901694.cos.ap-beijing.myqcloud.com/markdown/20191025145633.png

确认丢失的特殊情况

累积确认在超时前到来。

关键是在超时1以前收到,就无需重传了;如果在超时1之后收到确认,仍要重传,超时1超时2超时3不同 总结:tcp的差错控制:每传送一个报文段就启动一个重传定时器,若正常,确认一定会在超时之前到来,如果超时则重传,接收方对于重复的数据丢弃

https://keyon-photo-1256901694.cos.ap-beijing.myqcloud.com/markdown/20191025145401.png