当前位置:文档之家› UDP通信协议简介

UDP通信协议简介

一、UDP概述

1、UDP是一种基本的通信协议,只在发送的报文中增加了端口寻址和可选的差错检测功能。

2、UDP不是一种握手信息协议,不能确认接收到的数据或交换其他流量控制信息。

3、UDP是一种非连接协议,计算机在使用UDP发送报文之前,不要求远程已联网或指定的目的端口可用于通信。正因为如此,将UDP称为不可靠协议,即如果只使用

UDP,则发送方不知道目的主机何时是否接收到报文。

4、定义UDP的文档是RFC0768:User Datagram Protacal。在标准STD0006中也获得通过。

5、使用UDP发送报文的计算机将报文置于UDP数据报中。UDP数据报由报头及其后面包含报文的报文组成。

6、发送计算机将UDP数据报置于IP数据报的数据字段中。在以太网中,IP数据报存放在以太网帧的数据字段中。接收到以太网帧后,目的计算机网络栈将UDP数据报的数据部分传递给数据报报头指定的端口或进程。

7、UDP的大多数功能不如TCP,所以UDP的实现要简单些,更适合于特定的应用场合。如果需要,则可在使用UDP进行通信时自定义握手协议。例如:接收接口在接收到报文之后,将返回包含确认代码或其他请求信息的响应。如果发送方在合理的时间内没有接收到响应信息,就会重新发送报文。但是,如果应用程序需要的不仅仅是最基本的握手或流量控制,则应该考虑使用TCP而不是UDP进行重构。

8、UDP有一个TCP没有的功能,就是可将报文发送到多个目的主机,包括向局域网内所有的IP地址以广播方式发送,或者向指定的IP地址以组播方式发送。对于TCP而言,广播和组播都不现实,因为源主机必须与所有目的主机握手。

二、UDP报头

UDP报头由4个字段组成,后面紧接着是要传输的数据。

1、源端口号:源端口号标识发送报文的计算机端口或进程。长度2字节,可选,如果接收进程不需要知道发送数据报的进程,则该字段可置为0。

2、目的端口号:目的端口号标识接收报文的目的主机端口或进程。2字节。

3、数据报长度:指整个数据报的长度,以字节为单位,包括报头,最大值为65535。该字段为2字节。

4、UDP检验和:是根据UDP数据报和伪报头计算得到的差错检测值,可选,该字段伪为2个字节。伪报头包含源和目的IP地址,以及来自IP数据报报头的协议值。IP数据报在网络中传送时包含UDP数据报。伪报头并不会在网络中传送,校验和中所包含的伪报头内容可以避免目的端错误地接收错误路由的数据报。校验和值的计算方法和IP报头检验和的计算方法类似。

仅在局域网内部传输报文不需要UDP校验和,因为以太网帧的校验和已经提供了差错控制。而对于那些需要通过不同的、也许未知网络传输的报文而言,校验和可以让目的主机能检测到错误数据。

三、UDP数据

1、一个UDP数据报最大可达到65535个字节,且报头为8字节,因此一个数据报最多可以携带65527个字节的数据。

2、实际上,源计算机常将数据报限制在较短的长度内。使用较短的数据报的一个原因是,过大的数据报可能不适合目的主机的接收缓冲器大小;或者因为接收数据的应用程序可能需要特定长度的报文。

3、较短数据报也许更高效。当大的数据报经过不同能力的网络时,网络协议可能会将数据报拆分为报片,要求目的主机将这些报片重组。所有数据都会到达目的主机,但一般来说,在源主机处拆分数据,然后在目的主机处重组,会比依赖IP进行这项工作更高效。

4、IP标准要求主机能接收最大长度为576字节的数据报。没有可选项的IP报头长度为20字节,UDP 报头为8字节,因此一个最大长度为548字节且没有IP选项的UDP数据报不经过拆分便可到达目的主机。

UDP协议简介

源端口是可选域,当其有意义时,它指的是发送进程的端口,这也就假定了在没有其它信息的情况下,返回信息应该向什么地方发送。如果不使用它,则在此域中填0。目的端口在有特定的目的网络地址时有意义。长度指的是此用户数据报长度的八进制表示。(这表明最小的数据报长度是8。)校验码有16位,是对IP头,UDP头和数据中信息包头的数位取反之和再取反得到的。

包头从概念上说是在UDP头信息之前的,它包括有源地址,目的地地址,所使用的协议和UDP长度。这些信息使信息不能被错误地接收。这个校验过程与

TCP中使用的过程一致。如果计算出的校验码为零,它将被全零发送。全零的校验值意味着发送者未产生校验码。

用户接口

用户接口应该允许创建新的接收端口,在接收端口的接收操作有:应该返回一个八进制数说明源端口和源地址,允许数据报传送,指定数据,源和目标端口和目的地地址。

IP层接口

UDP模块必须能够决定源和目标的网络地址,而且必须能够从包头中得知所使用的协议。一个可能的接口方式是返回整个数据报,包括接收操作返回的包头。这样的接口还应该允许UDP向IP传送完整的带包头的数据报用于传送。由IP来确定一致性并计算校验码。

协议应用

此协议的最主要的用途是网际名称服务器和小文件传输协议。

协议号

在IP中使用它时,它的协议号是17(八进制中是21)。

UDP协议的标题结构

UDP信息包由UDP标题和数据组成。UDP的标题结构如图15-21所示,它由5个域组成:源端端口(Source Port)、目的地端口(Destination Port)、用户数据包的长度(Length)和检查和(Checksum)。其中,前4个域组成UDP标题(UDP header),每个域由4个字节组成;检查和域占据2个字节,它用来检测传输过程中是否出现了错误;用户数据包的长度包括所有5个域的字节数。

UDP信息包的标题结构

检查和的详细计算可在RFC 1071中找到,现举一例说明使用检查和检测错误的道理。例如,假设从源端A要发送下列3个16位的二进制数:word1,word2和word3到终端B,检查和计算如下:

word1 0110011001100110

word2 0101010101010101

word3 0000111100001111

sum=word1+ word2+ word3 1100101011001010

检查和(sum的反码) 0011010100110101

从发送端发出的4个(word1,2,3以及检查和)16位二进制数之和为1111111111111111,如果接收端收到的这4个16位二进制数之和也是全“1”,就认为传输过程中没有出差错。

许多链路层协议都提供错误检查,包括流行的以太网协议,读者也许想知道为什么UDP也要提供检查和。其原因是链路层以下的协议在源端和终端之间的某些通道可能不提供错误检测。虽然UDP提供有错误检测,但检测到错误时,UDP 不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。

读者也可能会问,收发两端的两个进程是否有可能通过UDP提供可靠的数据传输?答案是可以的。但必需要把确认和重传措施加到应用程序中,应用程序不能指望UDP来提供可靠的数据传输。

UDP协议的几个特性

(1) UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送

相关主题