Page 57 - Web性能权威指南
P. 57
条最有效的通道(图 3-7):能直连就直连,必要时 STUN 协商,再不行使用 TURN。
ዐीޜခഗ
ޜခഗ ޜခഗ
图 3-7:ICE 先后尝试直连、STUN 和 TURN
实际开发中,如果你想构建基于 UDP 的 P2P 应用程序,绝对应该选择现有的平台
API,或者实现了 ICE、STUN 和 TURN 的第三方库。好了,了解了这些协议的用
途之后,接下来自然就要考虑安装和配置了!
3.3 针对UDP的优化建议
UDP 是一个简单常用的协议,经常用于引导其他传输协议。事实上,UDP 的特色在
于它所省略的那些功能:连接状态、握手、重发、重组、重排、拥塞控制、拥塞预
防、流量控制,甚至可选的错误检测,统统没有。这个面向消息的最简单的传输层
在提供灵活性的同时,也给实现者带来了麻烦。你的应用程序很可能需要从头实现
上述几个或者大部分功能,而且每项功能都必须保证与网络中的其他主机和协议和
谐共存。
与内置流量和拥塞控制以及拥塞预防的 TCP 不同,UDP 应用程序必须自己实现这
些机制。拥塞处理做得不到位的 UDP 应用程序很容易堵塞网络,造成网络性能下
降,严重时还会导致网络拥塞崩溃。如果你想在自己的应用程序中使用 UDP,务必
要认真研究和学习当下的最佳实践和建议。RFC 5405 就是这么一份文档,它对设计
单播 UDP 应用程序给出了很多设计建议,简述如下:
• 应用程序必须容忍各种因特网路径条件;
• 应用程序应该控制传输速度;
• 应用程序应该对所有流量进行拥塞控制;
• 应用程序应该使用与 TCP 相近的带宽;
UDP的构成 | 39