计算机网络 -- 运输层(2)TCP可靠性传输实现

因特网的网络层服务(IP服务)是不可靠的,IP不保证数据报的交付,不保证数据报中完整性。

TCP在IP不可靠的尽力而为服务至上创建一种可靠数据传输服务。

1.累计确认

TCP采用累计确认,ACK y 表示字节编号在y之前的所有字节都已经收到。

 

 累计确认几种情况:

  • 主机A向B发送一个报文段,在发出之后,主机A等待来自主机B系列号为100的报文段。虽然主机B收到了A的报文,但是发往主机A的确认报文丢失了。此时,超时发送,主机A重传该报文,由于之前B收到过该报文,通过序列号可知该报文早已收到,则主机B丢弃A的重传报文。

计算机网络 -- 运输层(2)TCP可靠性传输实现_第1张图片

 

  • 主机A连续发两个报文,第一个序号为92,第二个序号为100,这两个都到达B,B为这两个报文分别返回确认报文,但是这两个报文由于网络延迟,在超时时间内没有到达。超时发生后 ,A重传序号92报文,如果第二个报文的ACK在新的超时时间内到达,则第二个序号为100的报文不用重发。

 计算机网络 -- 运输层(2)TCP可靠性传输实现_第2张图片

  • 主机A发送两个报文,第一个报文的ACK丢失,但是在超时时间之内第二个报文的ACK120到达,则主机A知道B已经收到了序号119以及之前的所有自己。故不会重传第一个报文。

计算机网络 -- 运输层(2)TCP可靠性传输实现_第3张图片

 

2. 快速重传

超时触发重传的问题之一在于超时周期可能相对较长。

发送方通常可在超时重传事件发生之前通过冗余ACK检测丢包情况。

所谓冗余ACK就是指再次确认某个报文的ACK,而发送方先前已经收到该报文段的确认。因为TCP不采用否定确认,相反,只是对已经接受到的最后一个按序字节数据进行重复确认,即产生一个冗余ACK。

快速重传:一旦收到3个冗余ACK,TCP就执行快速重传,即该报文段的定时器到期之前重传丢失的报文。

计算机网络 -- 运输层(2)TCP可靠性传输实现_第4张图片

 

 3.选择确认

在TCP的累计确认中,正确接收但是失序的报文是不会被接收的。

在选择确认中,允许TCP接收方有选择的确认失序报文,而不是累计的确认最后一个正确接收的有序报文。

 

你可能感兴趣的:(计算机网络)