TCP不可靠的表现:
出错——通过校验和解决;
丢包——超时重传+确认机制解决;
失序、重复——通过TCP头部的序号解决;
TCP如何保证传输的可靠性?
1.应用数据被分割成TCP认为最合适发送的数据块,称为段,传递给IP层。
2.当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。(超时重传)
3.当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
4.TCP将保持它首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化,如果收到段的检验和有差错,TCP将丢弃这个报文段并且不确认(导致对方超时重传)
5.TCP承载于IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对收到的数据进行重新排序。
6.IP数据报会发生重复,TCP的接收端必须丢掉重复的数据。
7.TCP还能提供流量控制。TCP连接的每一方都有一定的缓冲空间。
关于滑动窗口协议:
1.用于流量控制,既可用于链路层,也可用于传输层;
2.链路层与TCP的滑窗不同在于:前者以帧为单位,后者以字节为单位;
3.如何确定接收窗口的大小:TCP的首部有一个16位的窗口大小数据,它可以确定接收窗口的大小,那么发送窗口又可以根据接收窗口的大小来确定。二者的大小要配合着来,并不是越大越好。
更多关于TCP的可靠性传输,流量控制和拥塞控制,下面这篇文章给出了更详细的说明。
转自:点击打开链接