TCP的可靠传输通过以下四种传输机制来保证。
上层数据被分割为TCP认为最合适发送的数据块。我们将TCP传递给传输层(IP)的信息单位称为报文段或段。
确认:当TCP收到来自TCP连接另一端的数据后,将给对端发送一个确认信息,这个确认信息并不是立即发送的,通常情况下会延迟几分之一秒。
重传:当TCP发出一个报文段后,会对该报文段启动一个定时器,等待目标端确认收到这个报文段。若在计时内收不到确认信息,就会重新发送这个报文段。
排序:TCP报文段作为IP数据报来传输,由于IP数据报的到达可能会失序,因为TCP报文段的到达也可能会失序。如果必要的话,TCP将对收到的数据进行排序,将收到的数据以正确的顺序交给应用层。
流控:TCP连接的每一方都有固定大小的缓存空间。TCP的接收端只允许另一端发送接收端缓冲区能接纳的数据。这将防止发送较快主机引起发送较慢主机的缓冲区溢出现象。
其他机制:
校验和机制:TCP将保持他首部数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化。若收到的报文段的校验和有任何差错,TCP将丢弃这个报文段且不会确认收到这个报文段(希望通过让发送端的计时器超时来重传该报文段)。该机制可以保证TCP报文段在传输过程中即使被篡改也不影响安全性,即篡改的TCP报文段会被丢弃。
自动丢弃重复机制:IP数据报可能会发生重复,TCP数据报也可能会发生重复,故TCP接收端必须主动丢弃重复的数据。