TCP下面的网络层提供的是不可靠的传输,因此TCP必须采取适当的措施来使得两个运输层之间的通信变得可靠
理想的传输条件:
传输信道不发生差错
不管发送方以多快的速度发送数据,接收方总能来得及接收数据
发送方每发送完一个数据单元(分组)就停止发送,等待接受方确认,在接收到接收方的确认信息后就继续发送下一个分组
无差错情况下是最简单的情况,即正常的情况下数据的发送和接收必然是一个单元的在发送和确认接收后才发送下一个单元
出现差错即在传输过程中出现差错
可能出现的差错有:
接收方在接收数据单元时检测出现差错丢弃了该数据单元
数据单元在传输过程中丢失,没有到达接收方
处理方案-----超时重传
发送者在发送数据后的一段时间内,没有收到接收者发来的数据确认信息,发送者就认为刚才发送的数据单元产生丢失情况,就重新发送刚刚丢失的数据单元
在每发送完一个数据单元时就设置一个超时计时器,在超时计时器到时间之前收到数据确认信息,则该数据单元正确传输到接收者,否则则启动重传
发送者成功发送数据单元后,接收者也成功接收到数据单元,但是发送给发送者的消息接收确认却在发送过程丢失或者其传输时间超过超时计时器设定的时间,导致发送者误以为消息接受失败启动消息重传,这时接收者就会又一次接收到发送者发来的重复的消息
丢弃这个重复的数据单元,不向上层交付
坚持向发送者发送数据单元接收确认
自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层的错误纠正协议之一。它包括停止等待ARQ协议和连续ARQ协议,错误侦测(Error Detection)、正面确认(Positive Acknowledgment)、逾时重传(Retransmission after Timeout)与负面确认继以重传(Negative Acknowledgment and Retransmission)等机制。
发送方采用发送窗口的模式,位于发送窗口的数据可以连续发送而不需要等待确认
接收方采取累积确认的方式,对按序到达的最后一个数据单元进行接收确认表示,这个消息之前的所有消息全部收到。
优点:信道利用率高,容易实现,即使确认丢失,也不必重传。
缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。可能出现分组丢失
