TCP对应用程序一次把多长的报文传递给TCP的缓存是不关心的。TCP根据接收方的窗口大小和当前网络的拥塞程度决定一个报文端应该包含多少个字节。
可靠传输的工作原理
TCP以下的网络提供的是不可靠的传输。理想的传输条件是:
1.传输信道不产生差错
2.不管发送方发送的速度,接收方总是来得及处理收到的数据。
为了尽可能达到理想条件,设计了以下机制。
停止等待(不实际使用):
1.超时重传(重传时间的设计是个问题,设置小了的话产生不必要的重传,浪费资源。设置大了,通信效率变低)
2.确认机制(
问题:
往返时间远远大于分组发送时间,信道的利用率很低。为了提升传输效率,采用流水线传输的方式。
连续ARQ协议:对按序到达的最后一个分组发送确认。缺点:不能向发送方反映接收方已经正确收到的所有分组的信息。
TCP报文格式:
TCP要实现面向连接的,可靠的传输,相比较于UDP来说,其本身的报文必须要具备很多其他信息。
以字节为单位的滑动窗口
对于不按序到达的数据,接收方一般将其临时存放在接收窗口中,等到字节流中缺少的字节收到后,再按序交付给上层的应用进程。
TCP流量控制
TCP拥塞控制
拥塞控制防止过多的数据注入到网络中,使网络中的路由器和链路不至于过载。
流量控制指点对点的通信量的控制,是个端到端的问题。
拥塞控制和流量控制常常被弄混,是因为某些拥塞控制算法是向发送端发送控制报文,并告诉发送端,网络出现麻烦,必须放慢发送速率。
快重传机制
再流量控制和拥塞控制的共同影响下,发送方的窗口的上限值为接收方窗口rwnd和拥塞窗口cwnd中较小的一个。
快重传和快恢复配合使用,接收方连续收到3个重复确认的时候,就执行乘法减小算法,把慢开始门限减半。由于发送方认为现在网络可能没有阻塞,其不执行慢开始算法,而是把cwnd值设置为慢开始门限ssthresh减半后的数值。然后开始执行拥塞避免算法。