用户数据协议(User Datagram Protocol,UDP)是一种不可靠的、无连接的数据报服务。
源主机在传送数据前不需要和目标主机建立连接。
数据附加了源端口号和目标端口号等UDP报头字段后,直接发往目的主机。
这时,每个数据报的可靠性依靠上层协议来保证。在传送数据较少且较小的情况下,UDP比TCP更加高效。
1、UDP报文
源端口字段:该字段长度为16位。作用与TCP数据段中的端口号字段相同,用来标识源端的应用进程。在需要对方回信时用,不需要时可用全0;
目标端口字段:该字段长度为16位。作用与TCP数据段中的端口号字段相同,用来标识目标端的应用进程。在目标交付报文时必须用到;
长度字段:该字段长为16位。标明UDP头部和UDP数据的总长度字节;
校验和字段:该字段长为16 。用来对UDP头部和UDP数据进行校验,有错就丢弃。与TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的一项。
2、UDP校验
虽然UDP协议没有提供任何差错控制机制,但UDP通过使用校验和来确保UDP报文被传送到正确的目的端。
UDP校验和计算有一个与众不同的特点:校验和除覆盖UDP报文外,还覆盖一个附加头部,称为伪头部(Pseudo Header)。伪头部有来自IP报文的4个字段(协议、源IP地址、目的IP地址、UDP长度)和填充字段,伪头部格式如下所示:
其中填充字段为全0,其目的是使伪头部的长度为32位的整数倍;协议字段就是IP报头格式中的协议字段,为17(在IP报文格式的协议字段中17表示UDP协议);UDP长度字段表示UDP报文长度。
UDP计算校验和加上伪头部的目的就是为了验证UDP报文是否在两个端点之间正确传输。因为UDP报文包含源端口和目的端口,而伪头部包含源IP地址和目的IP地址。假如UDP报文在通过因特网传输时,有人恶意篡改了源IP地址(IP源地址欺骗),则这种情况可以通过UDP的校验和查询出来。
需要注意的是,UDP计算校验和的伪头部信息中部分内容来源于IP报头信息,也就是说,UDP在计算校验和是,UDP必须从IP层获取相关信息,否则无法形成伪头部,也就计算不出UDP的校验和。这一过程实际上违背了网络体系中的分层原则,但这种违背是出于实际的需求而不得不做的折中。事实上,UDP(包括TCP)与IP 的联系是非常紧密的,而且它们一般都在操作系统内核实现,因此无论是UDP还是TCP要获取IP的相关信息都是非常容易和方便的。
3、UDP端口
协议端口号是标识目标主机进程的方法。TCP/IP使用16位的端口号来标识端口,所以端口的取值范围为[0,65535]。端口可以分为系统端口、等级端口、客户端使用端口。
3.1 系统端口
系统短开口的取值范围是[0,1023],常见的如下表所示:
协议号 | 名称 | 功能 |
20 | FTP-DATA | FTP数据传输 |
21 | FTP | FTP控制 |
22 | SSH | SSH登录 |
23 | TELNET | 远程登录 |
25 | SNMP | 简单邮件传输协议 |
53 | DNS | 域名解析 |
67 | DHCP | DHCP服务器开启,用来监听和接收客户请求消息 |
68 | DHCP | 客户端开启,用来接收DHCP服务器的消息回复 |
69 | TFTP | 简单FTP |
80 | HTTP | 超文本传输 |
110 | POP3 | 邮局协议 |
143 | IMAP | 交互式邮件存取协议 |
161 | SNMP | 简单网管协议 |
162 | SNMP(Trap) | SNMP Trap报文 |
3.2 登记端口
登记端口是为没有熟知端口号的应用程序所用的,端口范围为[1024,49151]。这些端口必须在IANA(互联网数字分配机构)上登记以避免重复。
3.3 客户端使用端口
客户端使用端口仅在客户进程运行时动态使用,使用完毕后,进程会释放端口。该端口范围为[49152,65535]。
暂无评论内容