什么是可靠,所谓的可靠就是说发送方发送的数据到达接收方的时候不会发生错误,不会丢失,不会乱序。
在网络层表现看来是这样的,当从运输层传下报文段之后,封装成ip数据报,然后经过复杂的网络传输到目的主机,在传输过程中可能在这个复杂的大网络中发生数据报的分片,丢失的情况。当到达目的主机后,在目的主机的网络层进行对收到的数据报进行拼装,发现这个报文段缺少了一些部分不完整,所以在目的主机的网络层就是吧这个报恩段丢弃,传送给源主机一个ICMP报文段请求源主机重新发送这个报文。当这个报文安全无误的到达目的主机的网络层之后然后去掉首部直接上相交付给运输层的接受缓存中。但是在向上交付报文段的时候可能接受缓存满了导致这个报文段丢弃或者在硬件传出过程中发生了比特差错这也不是不可能的。为了避免数据不可抛传输,那么在运输层就要对数据的可靠性做一个保证。
在运输层分为两个协议UDP和TCP,UDP是一个不可靠的协议,也就是说他仅仅提供复用和分用的功能但是对于比特差错或者丢弃不做任何处理。但是TCP是一个面向连接的协议,他能够保证从源主机交付的数据正确无误的传输到目的主机的对应的进程中。所以接下来将要介绍的是TCP是如何保证数据可靠的传输的。
1.TCP是怎么保证没有比特差错的?
为了保证接受的报文段是没有比特差错的,TCP中引入了这三个机制: