UDP特点
面向非连接的协议。
当UDP传送数据时,简单的抓取来自应用程序的数据,并尽可能快的把它扔到网络上。
在发送端:UDP传送数据的速度受应用程序生成数据的速度,计算机的能力,和传输带宽的限制的影响。
在接收端:UDP把每个消息段放在队列中,应用程序每次从队列中读取一个消息段。不维护连接状态,支持同时向多个客户端传输相同的消息
由于传输数据不建立连接,因此不需要维护连接状态,包括收发状态等;因此一台服务器可同时向多个客户机传输相同的消息。信息包的报头很短,只有8个字节,相对于TCP的20个字节信息包的额外开销较小。
吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率,传输带宽,源端和终端主机性能的限制。
UDP尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表。
面向报文,不对应用程序提交的报文信息拆分或者合并
发送端的UDP对应用程序发下来的报文,添加首部后,就向下交付给IP层,既不拆分也不合并,而是保留这些报文的边界。因为应用程序需要选择合适的报文大小。UDP将大多数的控制权交由上层去解决。
UDP和TCP的区别(都是OSI模型中运输层的协议)
TCP | UDP |
---|---|
面向连接( 三次握手连接过程) | 面向无连接(因为面向无连接,所以UDP适合消息的多点发布,即从单个点向多个点传送信息) |
可靠性(利用握手和重传机制) | 不可靠(UDP可能会丢失,不知道到底有没有被接收) |
有序性(TCP利用序列号保证了消息报的顺序交付,到达可能无序,但TCP最终会排序) | UDP无序 |
TCP速度比较慢(因为要创建连接,保证消息的可靠性和有序性) | UDP比较快(UDP适合对速度比较敏感的应用,比如:在线视频媒体,电视广播,多人在线游戏。) |
TCP重量级(体现在源数据的头和大小,TCP20个字节) | UDP轻量级(UDP8个字节) |