当前位置:嗨网首页>书籍在线阅读

09-用户数据报协议(UDP)

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

58.6.2 用户数据报协议(UDP)

UDP仅仅在IP之上添加了两个特性:端口号和一个进行检测传输数据错误的数据校验和。

与IP一样,UDP也是无连接的。由于它并没有在IP之上增加可靠性,因此UDP是不可靠的。如果一个基于UDP的应用程序需要确保可靠性,那么这项功能就必须要在应用程序中予以实现。如果剔除不可靠这个特点的话,在有些时候可能倾向于使用UDP而不是TCP,具体原因可以在61.12节中找到。

UDP和TCP使用的校验和的长度只有16位并且只是简单的“总结性”校验和,因此无法检测出特定的错误,其结果是无法提供较强的错误检测机制。繁忙的互联网服务器通常只能每隔几天看一下未检测出的传输错误的平均情况([Stone & Partridge, 2000])。需要更多确保数据完整性的应用程序可以使用安全Sockets层(Secure Sockets Layer,SSL),它不仅仅提供了安全的通信,而且还提供更加严格的错误检测过程。或者应用程序也可以实现自己的错误控制机制。

选择一个UDP数据报大小以避免IP分段

在58.4节中描述过IP分段机制并指出过通常应该尽可能地避免IP分段。TCP提供了避免IP分段的机制,但UDP并没有提供相应的机制。使用UDP时如果传输的数据报的大小超过了本地数据链接的MTU,那么很容易就会导致IP分段。

基于UDP的应用程序通常不会知道源主机和目的主机之间的路径的MTU。一般来讲,基于UDP的应用程序会采用保守的方法来避免IP分段,即确保传输的IP数据报的大小小于IPv4的组装缓冲区大小的最小值576字节。(这个值很有可能是小于路径MTU的。)在这576字节中,有8个字节是用于存放UDP头的,另外最少需要使用20个字节来存放IP头,剩下的548字节用于存放UDP数据报本身。在实践中,很多基于UDP的应用程序会选择使用一个更小的值512字节来存放数据报([Stevens, 1994])。