目录
TCP的通信机制最核心的特性是可靠传输。 | |
TCP至少通过以下机制来保证传输的可靠性,在保证可靠性的同时也采取一些机制来提升传输效率: | |
<1> 确认应答 | <6> 阻塞控制 |
<2> 超时重传 | <7> 延时应答 |
<3> 连接管理 | <8> 捎带应答 |
<4> 滑动窗口 | <9> 面向字节流 |
<5> 流量控制 | <10> 异常情况处理 |
阅读指针 -> 《?TCP 的通信机制?-- 滑动窗口 》<JavaEE> TCP 的通信机制(三) -- 滑动窗口-CSDN博客文章浏览阅读300次,点赞7次,收藏9次。介绍了 TCP 的通信机制 -- 滑动窗口https://blog.csdn.net/zzy734437202/article/details/135235928
接收端处理数据的速度是有限的。接收端接收缓冲区满,发送端发送的后续数据就无法被收到,就会造成丢包。直到接收端处理完数据,并释放接收缓冲区,才能重新接收发送端发来的数据。 |
这意味着,发送方发送数据的速率,不应该超过接收端处理数据的速率。 |
TCP支持根据接收端的处理能力来决定发送端的发送速度,这个机制就称为“流量控制”。 |
TCP协议格式中,有“窗口大小”这一属性。“窗口大小”字段越大,则说明网络吞吐量越高。 |
接收端通过应答报文中的“窗口大小”,将自己的缓冲区剩余大小告知发送端。发送端就可以根据这个应答报文中的“窗口大小”,调整自己的发送速率。 |
流量控制是作用于通讯双方的,用于在通信过程中调整发送方发送窗口的大小,即调整发送方的发送速率。 |
网络通信,除了通信双方,还要经过数量不定的中间节点,这代表会有许多不同的传输路径。 |
中间节点的数据处理能力也是有限的,如果通过这个节点传输的数据过多,传输路径就可能处于拥堵的状态。 |
当路径拥堵时,如果发送端一开始就发送大量数据给接收端,数据就会堵在半路。接收端接收不到数据,就不会返回ACK。这就可能导致发送端误判接收端处于异常状态,从而重置或断开连接。 |
拥塞控制就是用于衡量通信过程中的中间节点的情况,通过“实验”的方式,找到合适的窗口大小。 |
主要使用以下几个步骤: |
<1> 慢启动:刚开始先发送少量数据,了解网络传输情况。 |
<2> 快增长:通讯启动后,数据传输量迅速增长,增长速度是指数级别的。 |
<3> 阈值缓增:通讯速度的增长存在阈值,当达到这个阈值时,增长速度从指数增长变为线性增长。 |
<4> 拥塞重置:发生网络拥塞后,会先调整阈值。随后传输速度降低到新阈值处,重新开始线性增长。 |
通过上述过程,在数据传输过程中不断调整窗口大小,逐渐达成动态平衡。 |
拥塞控制是作用于通讯路径的,用于在通信过程中调整发送方发送窗口的大小,即调整发送方的发送速率。 |
通过了解“流量控制”和“拥塞控制”的作用,可以发现,这两个机制都是在对发送窗口进行调整。 |
在实际通信中,窗口大小的取值,是“流量控制”和“拥塞控制”中的窗口的较小值。 |
阅读指针 -> 《 TCP 的通信机制(五) -- 延时应答、捎带应答和面向字节流 》