传输层两种不同的运输协议,除了TCP协议,还有UDP协议。TCP协议(传输层协议之TCP协议)前面已经讲过了,本文主要讲一下UDP协议。
UDP协议
1.概念:UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
2.主要特点:
(1)UDP无连接的;
(2)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表 ;
(3)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
(4) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(5)UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
3.UDP的工作原理
UDP将网络数据流量压缩成数据报的形式,每一个数据报用8个字节(8 X 8位=64位)描述报头信息,剩余字节包含具体的传输数据。UDP报头(只有8个字节)相当于TCP的报头(至少20个字节)很短,UDP报头由4个域组成,每个域各占2个字节,具体为源端口、目的端口、用户数据报长度和校验和,
具体结构见下图(下面也贴出了TCP报文的结构图,与UDP数据报做一个对比的作用):
UDP协议和TCP协议都使用端口号为不同的应用保留其各自的数据传输通道这一机制,数据发送方将UDP数据报通过源端口发送出去,而数据接收方则通过目标端口接收数据。
常见面试题:
UDP协议和TCP协议有什么不同?
(1)UDP的可靠性不如TCP,因为TCP传输前要首先建立连接,这样就增加了TCP传输的可靠性,所以UDP也 被称为不可靠的传输协议
(2)UDP不能保证有序传输。即UDP不能确保数据的发送和接收顺序。
(3)UDP速度比TCP快。由于UDP不需要先与对方建立连接,也不需要传输确认,因此其数据的传输速度比TCP快很多。对于一些着重传输性能而不是传输完整性的应用(网络音频播放、视频点播和网络会议等),使用UDP协议更加适合,因为它传输速度快,使通过网络播放的视频音质好、画面清晰。
(4)UDP不需考虑消息边界。通过UDP协议进行传输的发送方对应用程序交下来的报文,在添加首部后就向下直接交付给IP层。既不拆分也不合并,而是保留这些报文的边界,所以使用UDP协议不需要像TCP那样考虑消息边界的问题,这样就使得UDP编程相对于TCP在接收到的数据处理方面要简单的多。
(5)UDP可以一对多传输。由于传输数据部建立连接,也就不需要维护连接状态,因此一台服务器可以同时向多个客户端发送相同的信息。利用UDP可以使用广播或者组播的方式同时向子网的所有客户端进程发送信息。
(6)UDP报头8字节比TCP报头20字节小。