#青训营笔记创作活动#
1月22日 打卡day10
根据文章作者总结与阅读文章标注重点,该篇文章的要点如下:
· 用UDP就一定比用TCP快吗?什么情况下用UDP会比用TCP慢?
大部分情况下,因为UDP没有复杂的TCP可靠性机制,所以会很快。具体展开来说,就是TCP为了实现可靠性而引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制,而UDP则没有实现,因此一般来说TCP比UDP快。
TCP是面向连接的协议,而UDP是无连接的协议。这里的"连接"其实是,操作系统内核在两端代码里维护的一套复杂状态机。
大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套重传机制。
对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下TCP更快。
1月22日 打卡day10
根据文章作者总结与阅读文章标注重点,该篇文章的要点如下:
· 用UDP就一定比用TCP快吗?什么情况下用UDP会比用TCP慢?
大部分情况下,因为UDP没有复杂的TCP可靠性机制,所以会很快。具体展开来说,就是TCP为了实现可靠性而引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制,而UDP则没有实现,因此一般来说TCP比UDP快。
TCP是面向连接的协议,而UDP是无连接的协议。这里的"连接"其实是,操作系统内核在两端代码里维护的一套复杂状态机。
大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套重传机制。
对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下TCP更快。
展开
评论
1