网络:UDP
UDP:User Datagram Protocol,用户数据报协议。
UDP特点
不建立连接
传输数据之前源端和终端不建立连接,发送数据时就简单地抓取来自应用程序的数据,并尽可能快地把它扔到网络上;
在发送端,UDP传送数据的速度只受应用程序生成数据的速度、计算机的能力和传输带宽的限制;
在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读取一个消息段;
由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务器可以同时向多个客户端传输相同的消息。
简单:在发送端和接收端没有连接状态,每个数据报都是独立被处理的
开销小:UDP的首部很短,只有8个字节,相对于TCP的20个字节额外开销很小
无拥塞控制和流量控制:UDP可以尽可能快地发送报文;吞吐量只受应用程序生成数据的速率、传输带宽、源端和终端主机性能的限制。
UDP使用尽最大努力交付,可能丢失、可能乱序。
UDP是面向报文的:发送方的UDP对应用程序来的报文在添加首部后就向下交付给IP层,既不拆分,也不合并,而是保留这些报文的边界。因此,应用程序需要选择合适的报文大小。
没有差错纠正机制。
UDP头部中有一个校验和字段,可用于差错的校测,但没有差错恢复机制。
UDP的校验和
UDP的校验和:
目标:检测在被传输报文段中的差错
发送方将报文段的的内容视为16比特的整数,将校验和放到UDP的校验和字段;
接收方计算接收到的报文段的校验和,检查计算出的校验和与校验和字段的内容是否相等:
- 不相等:检测到差错
- 相等:没有检测到差错,但也许还是有差错(残存差错)
UDP应用
- 流媒体(丢失不敏感、速率敏感、应用可控制传输速率)
- DNS解析
- SNMP
要在UDP上实现可靠传输:
- 在应用层增加可靠性
- 应用特定的差错恢复