用户数据文协议 ( UDP )
UDP是一种基于IP协议的不可靠传输协议,在IP数据的位置如下:
IP头部(20字节)+ [ UDP头(8字节)+ UDP数据 ]
UDP协议是TCP/IP的传输协议的一部分,与TCP的传输不一样,它提供无连接的、不可靠的传输服务。UDP协议把应用程序需要传递的数据发送出去,不提供发送数据包的顺序;接收方不向发送方发送接收的确认消息,如果出现丢包或者重包的现象,也不会向发送方发送反馈,因此不能保证使用UDP协议的程序发送的数据一定到达了接收方或者到达接收方的数据顺序和发送方的一致性。
使用UDP协议传输数据的应用程序,必须自己构建发送数据的顺序机制和发送接收的确认机制,以此来保证发送数据的正确到达,保证接收数据的顺序与发送数据的一致性。
1、UDP的数据格式
UDP传输数据时的字段格式如下:
源端口号(16位) | 目的端口号(16位) |
UDP数据长度(16位) | UDP校验和(16位) |
数据 |
-
源端口号和目的端口号分别是一个16位的字段,用来给表示发送方和接收方的UDP端口。
-
UDP数据长度表示UDP头部和UDP数据段的长度,单位为字节。由于UDP头部为8个字节,因为发送UDP的长度字段最少为8个字节。UDP的长度与IP协议的长度有关联性,字段最少为8字节。UDP的长度与IP协议的长度有关联性,IP的长度指的是数据的全长,UDP的长度等于IP的长度减去IP头部的长度。
-
UDP校验和表示整个UDP字段的CRC16校验和,它的计算方法与IP字段是一致的。UDP的校验和字段是可选的,即可以不进行CRC校验,此时校验和部分为全0。UDP校验和允许的数据为奇数长度,此时要加一个空字节,即全0的字节进行填充,这个字节仅仅为了方便计算校验和,不发送到目的地址。