用户数据报协议(User Datagram Protocol,UDP)是TCP/IP体系中运输层两个协议(TCP和UDP)中的一个。根据不同的应用,运输层需要有两种不同的运输协议向上面的应用层提供通信服务。运输层的作用是为应用进程(正在运行的程序)之间提供逻辑通信。
传输控制协议(TCP)提供的是面向连接的全双工可靠的传输信道。用户数据报协议(UDP)提供的是无连接的尽最大努力服务的不可靠的传输信道。图3-72是两种传输协议提供的逻辑通信信道。
图3-72 运输层向上提供可靠的和不可靠的逻辑通信信道
TCP提供面向连接服务,在传输数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。此外,由于TCP要提供可靠的、面向连接的运输服务,因此增加了许多开销,如确认、流量控制、计时器和连接管理等。使协议数据单元的首部增大很多,还要占用许多处理机资源。
UDP在传送数据之前不需要先建立连接。远地主机的运输层收到UDP报文后不需要给出任何确认。虽然UDP不提供可靠的交付,但在某些情况下UDP是一种最有效的工作方式。如域名系统(Domain Name System,DNS)和网络文件系统(Network File System,NFS)使用的就是UDP这种运输方式。此外,UDP还能在主机上识别多个目的地址,允许多个应用程序在同一台主机上工作,并能独立地进行数据报的发送和接收。
1.UDP数据报的格式
用户数据报(UDP)有两个字段:数据字段和首部字段。首部字段共有8B,由4个字段组成,每个字段都是两个字节。4个字段包括:
(1)源端口字段(源端口号)。
(2)目的端口字段(目的端口号)。
(3)长度字段(用户数据报的长度)及检验和字段(防止用户数据报在传输中出错),如图3-73所示。
图3-73 UDP用户数据报的首部和伪首部
计算检验和时,在用户数据报(UDP)之前要增加12B的伪首部。伪首部不是用户数据报(UDP)真正的首部。只是在计算检验和时,临时和用户数据报(UDP)连接在一起,得到一个过渡的用户数据报(UDP),以便能计算出检验和。(www.daowen.com)
2.UDP的封装、复用、分解和端口
用户数据报(UDP)包含首部(UDP报头)和数据区两部分,要让UDP数据报能在互联网中传输还要把UDP封装到IP数据报中。最后网络接口层还要将IP数据报再封装到一个帧中,才能在物理传输通道上传输。封装的过程如图3-74所示。
UDP还提供复用和分解功能。它接收多个应用程序送来的数据,然后再把它们送给IP层去传输。同时,它也接收IP层送来的UDP数据报,把它们分解后再送给对应的应用程序端口。UDP的分解操作如图3-75所示。
图3-74 UDP的封装
图3-75 UDP的分解操作
在运输层与应用层的接口上设置的端口是一个16bit的地址,并标以端口号码。16bit的地址码可允许编排64k个端口号,这个数目对计算机来说足够使用。
端口号可分为两类:一类是由因特网指派名字和号码(Internet Corporation for Assigned Names and Numbers,ICANN)公司负责分配的常用熟知端口,其数值为0~1023。例如,文件传输协议(File Transfer Protocol,FTP),简单的邮件传输协议(Simple Mail Transfer Protocol,SMTP),域名系统(Domain Name System,DNS),超文本传输协议(Hyper Text Transfer Protocol,HTTP)等。另一类为一般端口,用来分配给请求通信客户的运行程序。
表3-13给出了使用UDP和TCP协议的各种应用和应用层协议。
表3-13 使用UDP和TCP协议的各种应用和应用层协议
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。