? ? 本文仅仅是对TCP协议做个简要的介绍。
? ? TCP协议,即传输控制协议。与UDP协议同处于传输层,相同使用相同的网络层,但TCP提供了一种可靠的、面向连接的传输数据服务,它会在两个使用TCP的应用之间建立一个TCP连接,在该连接上进行数据的传输。
? ? TCP通过下面方式提供可靠性:
? ? 1、应用程序被切割成TCP觉得最合适发送的数据块。
这点与UDP全然不同。应用程序产生的UDP数据报长度将保持不变,加上IP首部后。才会进行IP分片。
? ? 2、当TCP发出一个报文段后,它会启动一个定时器,等待目的端发确认收到这个报文段。假设没能及时收到该确认信息,则将重发这个报文段。
? ? 3、当TCP接收端收到发送端发来的TCP报文段时。它将发送一个确认。这个确认不是马上发送的,一般会推迟几分之中的一个秒。
? ? 4、TCP将保持它首部和数据的校验和。这是一个端到端的校验和。假设收到的报文段的校验和有差错,TCP将丢弃该报文段,同一时候不发送确认收到的消息,从而使发送端超时重发。
? ? 5、TCP能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间,TCP的接受端仅仅同意还有一端发送接收端缓冲区所能接纳的数据,这将防止较快主机致使较慢主机的缓冲区溢出。
? ? 6、因为TCP报文段作为IP数据报来传输,IP数据报的到达可能会失序,因此TCP报文段的到达也可能失序,假设必要。TCP将对收到的数据进行重排序,将收到的数据以正确的顺序交给应用层。
? ? 7、因为IP数据报有可能发生反复,TCP的接收端必须丢弃反复的数据。
? ? 从上面几点能够看出,TCP协议保持可靠性的方式就是超时重传,这样的方式非常好。尽管TCP也能够通过向源主机发送各种各样的ICMP报文或者来处理这些。但这也是不可靠的。试想,假设ICMP报文在发送回来的过程中丢失了,非常明显这样的方式就不可靠了。最可靠的方式就是仅仅要得不到确认,就又一次发送数据,直到得到确觉得止。
? ??