一、UDP协议概述
UDP(User Datagram Protocol,用户数据报协议)是一种无连接协议,它不像TCP协议那样需要在发送和接收数据前进行握手和释放,而是直接把数据发送出去,也不会对数据进行可靠传输和流量控制。因此,UDP常用于需要快速传输数据、对数据传输的可靠性要求不高的应用,如音频、视频等实时传输数据的应用。
UDP协议的特点:
1. 无连接:UDP协议发送数据时不需要进行握手、释放等操作,也不会维护连接状态,因此相对TCP协议来说,UDP协议的开销更小,传输速度更快。
2. 不可靠:UDP协议不会对数据进行可靠传输,如果网络发生丢包,UDP协议不会重新发送数据,也不会对数据进行校验。
3. 简单:UDP协议的头部信息只有8个字节,相对TCP协议的头部信息简单,开销小,传输效率高。
4. 支持广播和多播:UDP协议可以发送广播和多播消息,让数据同时传输给多个接收者。
5. 不支持流控制:UDP协议不会进行流量控制,发送方可以一次性发送大量数据,接收方无法限制传输速度。
6. 适用于实时应用:由于UDP协议不会对数据进行可靠传输,对于实时性要求高的应用(如视频、音频等)较为适用。
二、端口号
端口号是计算机网络中用于标识不同应用程序或服务的逻辑地址。它是一个数字,通常为0-65535之间的整数。在网络通信中,不同的应用程序或服务使用不同的端口号来处理传入或传出的数据包。例如,Web服务器使用端口号80,邮件服务器使用端口号25或465,FTP服务器使用端口号21等。通过使用不同的端口号,网络中的不同应用程序可以同时运行并提供不同的服务。
UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据包通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。UDP端口号指定有两种方式:由管理机构指定端口和动态绑定的方式。
三、UDP与TCP的对比
UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据包的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。
TCP 是面向连接的传输控制协议,而UDP 提供了无连接的数据报服务;TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;UDP 具有较好的实时性,工作效率较 TCP 协议高;UDP 段结构比 TCP 的段结构简单,因此网络开销也小。TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可靠性要求高的通信系统往往使用 TCP 传输数据。
四、UDP报文格式
在UDP协议层次模型中,UDP位于IP层之上。应用程序访问UDP层然后使用IP层传送数据包。IP数据包的数据部分即为UDP数据包。IP层的报头指明了源主机和目的主机地址,而UDP层的报头指明了主机上的源端口和目的端口。UDP传输的段(segment)有8个字节的报头和有效载荷字段构成。
UDP报头由4个域组成,其中每个域各占用2个字节,具体包括源端口号、目标端口号、数据包长度、校验值。