序号、确认序号、确认应答机制、超时重发机制

TCP协议保证数据传输可靠性的机制(一)

1、确认应答机制
1.1原理:

发送方与接收方传输数据时,为了保证数据一定会发送给接受方,TCP协议规定接受方接收到数据后需要给发送方一个接受到数据的通知,若是发送方没有接收到接受方的确认报文,发送方认为数据没有发送到,就会重新发送数据。

序号、确认序号、确认应答机制、超时重发机制

1.2***:TCP将每个字节的数据都进行了编号

因为网络传输数据是不能保证传送顺序的,即使是客户端有序的发送数据,服务器端接受到的数据也有可能无序,因此为了保证有序,TCP的包头中保存发送数据的***,告诉接受端读取数据的顺序

序号、确认序号、确认应答机制、超时重发机制

1.3确认***:

确认序号是发送方发送数据最高序号加1,作用是对已经接收到的数据进行确认,并告知对方下次发送数据的位置

2、超时重传机制:

确认应答机制中主机A给主机B发送数据后,数据可能会在发送途中丢失,数据无法到达主机B,为了保证数据的可靠性,TCP中引用了超时重传机制。

2.1原理:

TCP每发送一个报文段,就会对这个报文段设置一次计时器,只要计时器设置的重传时间到,但发送端还没有收到接收端发来的确认,此时就会重传此报文段。

2.2发送方未接收到数据有两种情况:
2.2.1发送方发送的数据在发送途中丢失

这种情况下,发送方在一段时间后重新发送就行

序号、确认序号、确认应答机制、超时重发机制

2.2.2接受方接收到数据后,发送的确认数据在发送途中丢失

序号、确认序号、确认应答机制、超时重发机制
因此,发送方重新发送的数据就会重复,TCP协议需要能够识别出哪些包是重复的,并且把重复的丢弃掉,这时前面提到的***就可以很容易做到去重的效果

2.3超时重传的时间确认:

最理想的状态下找到一个最小的时间,保证”确认应答一定能在这个事件内返回“,但是这个时间的长短会随着网络环境的不同,是有差异的。如果事件设置的太长,会影响整体的传输效率;如果设置的事件过短,有可能会频繁发送重复的包。

为了保证在任何环境下都有比较高效性能的通信,因此TCP会动态的计算这个最大超时时间

超时以500ms为一个单位进行控制,每次判定超时重发的超时时间都是500ms的整数倍

如果重发一次后,仍然得不到应答,等待2*500ms后再进行重传

如果仍然得不到应答,等待4*500ms进行重传,依次类推,以指数形式递增

累计到一定的重传次数,TCP认为网络或者对端主机出现异常,强制关闭连接

TCP报头组成及含义:https://blog.****.net/qq_42002936/article/details/88544422