这篇文章转载自http://blog.chinaunix.net/uid-26275986-id-4109679.html
文章从滑动窗口,流量控制,拥塞控制等几个方面阐述了TCP可靠传输的实现。为尊重知识产权,请到作者博客阅览,感谢作者的贡献。
另外,TCP和UDP的区别是初级面试中比较常问到的。个人觉得最主要的区别就是TCP可靠,UDP不可靠。可以抽象的把TCP认为是为了解决UDP不可靠的解决方案。
因为无连接不可靠,所以TCP需要建立连接;
因为丢包不可靠,所以TCP需要丢包重传;
因为无序到达不可靠,所以TCP需要滑动窗口;
因为滑动窗口出现,所以要流量控制,拥塞控制;
......
那是不是UDP就没用了呢,当然不是,很多时候可靠不一定最有价值。
比如直播,如果发生丢包,你是选择忍受重传的延时呢还是最快的跟上比赛节奏?
至于什么时候选择TCP,什么时候选择UDP,大牛们都说,当不确定的时候选TCP...