TCP 如何保证数据的可靠传输
应用数据被分割成 TCP 认为最适合发送的数据块。
序列号:TCP 给发送的每个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
校验和:TCP 保持它首部和数据的校验和。这是端到端的检验和,目的是检测数据在传输过程中有没有变化。若接收方收到的校验和有差错,TCP 将丢弃这个报文段并不进行此报文段的确认应答。
TCP 的接收端会丢弃重复的数据。
确认应答(ACK):在 TCP 中,当发送端的数据达到接收方时,接收方会返回一个已收到消息的通知。这个消息就叫做确认应答。
超时重传:当 TCP 发出一个段后,启动一个计时器,等待接收方确认收到这个报文(即等待接收方的确认应答)。如果不能及时收到确认,将重发这个报文段。
流量控制:TCP 控制的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据时,能提示发送方降低发送的速度,以防止包丢失。TCP 利用滑动窗口来实现流量控制。
拥塞控制:当网络拥塞时,减少数据的发送。
拓展:流量控制和拥塞控制的区别?
拥塞控制是为了防止过多的数据注入到网络中,以防止网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。(这也是为什么不能通过单纯的增加某个结点的网络资源来解决问题)
相反,流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接受。
版权声明: 本文为 InfoQ 作者【W🌥】的原创文章。
原文链接:【http://xie.infoq.cn/article/f0c6493fa51d06811b5ad0cef】。文章转载请联系作者。
评论