UDP简介
UDP: 即User Datagram Protocol, 用户数据报协议
UDP报文结构如图:
UDP特点
- 面向非连接,和TCP必须要建立连接才能传输数据不一样,
它只管发,不管你收没收到
,它传送数据直接抓取来自应用程序的数据,并尽可能快得把它扔到网络上,所以在发送端UDP传送的速度仅仅受到应用程序生成数据的速度,计算机的能力和传输带宽的限制的影响,在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读取一个消息段. - 由于传输数据不建立连接,自然也就不需要维护连接状态(包括收发状态),因此
一个服务器
支持同时向多个客户端
传输相同的消息. - 数据包报头只有8个字节(TCP需要20个字节),额外开销较小.
- 吞吐量只受限于数据生成速度,传输速度以及机器性能.
- 它尽最大努力交付,但是不保证可靠交付,不需要维持复杂的链接状态表.
- 它是面向数据报的,不对应用程序提交的报文信息进行拆分或者合并,即发送端的UDP对应用程序交下来的报文添加首部后就直接给了网络层的IP协议,不会拆分,也不会合并.,因此应用程序需要选择合适的报文大小.
TCP和UDP的区别
- 他俩都是
传输层
的协议. - TCP协议是
面向连接的
的通信协议,而UDP是面向无连接的
通信协议. - TCP有三次握手的连接过程,UDP适合消息的发布,即从单个点向多个点传输信息.
- TCP协议传输数据是可靠的,而UDP是不可靠的,只管发,不管是否收到.
- TCP协议传输数据的时候利用序列号保证数据的有序性,而UDP不具备有序性.
- 从速度上讲,TCP的速度比较慢,因为要创建连接,保证数据的可靠性等,需要做很多额外的事情,而UDP没有什么限制,所以速度比较快,就比较适合对速度比较敏感的应用,比如在线视频媒体,电视广播等.
- 从量级上讲,TCP属于重量级的,UDP属于轻量级的,这体现在报文的头部大小,UDP只有8个字节,而TCP有20个字节.
- TCP面向字节流( 即将大块数据分割成以报文段(segment) 为单位的数据包)的传输,因此它能将信息分割成组,并在接收端将其重组; UDP是面向数据报的传输,没有分组开销。