TCP 协议如何保证可靠传输
应用数据被分割成 TCP 最认为适合发送的数据块大小;
TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层;
校验和: TCP 将保持它首部和数据的检验和,这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段;
TCP 的接收端会丢弃重复的数据;
流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP 接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据时,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议 ( TCP 利用滑动窗口实现流量控制);
拥塞控制: 当网络拥塞时,减少数据的发送;
ARQ 协议: 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,并等待对方确认,在收到确认之后,再发下一个分组;
超时重传: 当 TCP 发出一个段后,会启动一个定时器,等待目的端确认收到这个报文段,如果不能及时收到这个确认,那么将重发这个报文段。