TCP的流控方法本质上就是停等协议吗无非每次多发几帧而已。

如果双向畅通,为什么还要等ACK,窗口里的包没有发完就有ACK回来了
■网友
您非要这么说似乎也没什么问题。不过在我看来,TCP绝大部分的复杂度都在“怎么算出拥塞窗口”上,要有效率,有公平,收敛时间短,鲁棒性好。去掉这个确实就没剩下多少了…
■网友
那看你如何定义啥为停等协议了……发出去后发现发评论区了……个人认为一般书上说得停等协议是指发送一个pkt然后等待一个ack回来, 然后才发下一个ack.但是这样的协议,网络的效率非常非常低的(假设我一个pkt到太阳,假设无timer.结果等了n年才返回ack,再发下一个pkt...这不累死啊???),我们完全没有必要等到上一个pkt对应的ack回来才发下一个pkt.因此,才有后面的流水线化的传输协议,比如GBN和SR,正是由于流水线了(类似cpu流水线),所以我们的网络的效率提升上去了,因为要有流水线,所以引出了窗口大小问题。请注意流水线后的协议!并没有等到第一个pkt对应的ack到达后才发第二个pkt.说白了就是先发一堆pkt出去,然后等ack,所以一般书上说得停等协议个人认为是指发一个pkt出去,等ack,ack到达,发下一个pkt,
■网友
控制论本质也不过是正负反馈而已。但是难就在于系数的确定←_←
■网友
停等协议:准确的说是发一个包,然后等收到确认,再发下一个包。TCP准确的说是回退N协议。
【TCP的流控方法本质上就是停等协议吗无非每次多发几帧而已。】 TCP的各种算法使其在不提高资源占用的情况下,大大提高了效率。
从哲学的角度看一切皆空,只有物理层实际传输数据。但是TCP各种复杂算法是必不可少的。

■网友
tcp中文名叫可靠传输协议,这里的一切都是基于可靠二字衍生出来的。不错,不乱,不丢。在硬件传输过程中,我们不能保证发送方发送的数据就是接受方接受的数据。所以要设计一种检错机制来检测数据是否发生错误。但是检测出数据出错还是不够的,还要有一种纠错机制。纠错的方式有很多,比如在学习计算机组成的时候,有学到过几种纠错的方法,比如奇偶码、汉明码等等,这几种方式在数据量很大的时候要耗费大量的位来支持这种纠错,而且纠错本身要占用大量的cpu时间。这个时候设计出停等协议作为纠错机制是非常有意义的。相对来说,停等协议可以解决上面说的一次传输占用大量数据位还有花费大量cpu时间来纠错这两个问题。(只是自己个人的一点小见解,有错误的地方欢迎指出)


    推荐阅读