UDP:用户数据包协议。提供无连接、尽最大努力的数据传输服务(不保证数据传输的可靠性),既然不保证那肯定谈不上可靠一说。
• 无连接:不需要建立连接,也不需要释放连接,减少了开销和发送数据的时延。
• 尽最大努力的数据传输服务:不保证数据传输的可靠性,没有超时和重传功能。
• 面向报文:发送方对应用程序交下来的服务,添加首部后就向下交付给IP层,不合并,也不拆分,保留文本的边界。UDP一次性交付一个完整的报文,因此应用程序一定要选择合适大小的报文,报文太长IP层需要进行分片,太短会导致IP数据包的相对长度过大,效率过低。接收方,去除首部后就交给应用程序。
• 不受网络拥堵影响:网络出现的拥塞不会使源主机的发送速率降低。对实时应用非常重要。例如:IP电话、实时视频会议、允许丢失数据但不允许有太大时延(即这些应用可以卡一下,但是要保证其实时性),可能会导致丢包现象发生,可靠性低。
• 支持一对一、一对多、多对一、多对多的操作。(稍后会出专门博客讲解,代码已经实现最后测试一下就好)
• 首部开销小:只有8个字节,TCP首部需要20个字节。
• 发生丢包:UDP不会补发,但是会自动检测是否丢(包)失某些内容,如果有错误就会直接丢包,返回发送失败。