计算机网络之传输层-可靠传输的基本原理

  • 停止等待协议

正常情况下,发送方发出消息1,等待一段时间,将会收到对方的确认消息1。

如果出现差错的情况,发送方发送消息1之后,以下3种情况都会触发超时重传。

  • 发送的消息在路上丢失了:
  • 确认消息在路上丢失了:

  • 确认的消息很久才到:

每发送一个消息,都需要设置一个定时器

停止等待协议是最简单的可靠传输协议

停止等待协议对信道的利用率不高

  • 连续ARQ协议

ARQ(Automatic Repeat reQuest: 自动重传请求)

既然单个发送和确认效率低,能不能批量发送和确认?

下面这些例子以报文为单位,窗口大小为6,只是为了更好地理解。实际的TCP协议是以字节为单位的,而且窗口大小是很大的。

假设窗口大小为6,一次性只能同时发送6个报文的数据。有12个报文需要发送,某一个时刻,假设当第一个和第二个报文收到确认消息以后,窗口会向前移动2个单位,那么窗口有3-8,其中7和8是没有发送出去的,把未发送的发送出去。假设某一个时刻,1-5的发送的报文都收到确认消息了,1-5每个报文都要收到确认消息,这样网络开销太大了,所以诞生了累计确认。

只需要报文5收到确认消息,就表示5之前的确认消息都已经收到了,这就是累计确认。然后,窗口就可以向前移动5个单位了,此时,可以批量发送7-11的报文了,等待确认消息的到来。

举个例子,这个累计确认就好比班长帮助老师汇报考勤。某一个时刻,刚好发送了5个报文,报文5刚好当了班长,班长记下1-4的同学的考勤,然后通过班长去告诉老师说我们5个人都到齐了,不需要说每个同学都要到老师办公室向老师说我到了,这样效率太低了,只需要班长一个人跑一趟老师办公室汇报一下考勤就OK了。这样,提升了通信的效率

猜你喜欢

转载自blog.csdn.net/Xeon_CC/article/details/108910010