用户数据报协议(User Datagram Protocol,UDP)是TCP/IP体系中传输层的两个协议(TCP和UDP)中的一个。传输层的作用是为应用进程(正在运行的程序)之间提供逻辑通信。
根据不同的应用,传输层需有两种不同的运输协议向上面的应用层提供通信服务。TCP提供的是面向连接的全双工可靠的传输信道。UDP提供的是无连接的尽最大努力服务的不可靠的传输信道。图4-50是两种传输协议提供的逻辑通信信道。
图4-50 传输层向上提供可靠的和不可靠的逻辑通信信道
TCP提供面向连接服务,在传输数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。此外,由于TCP要提供可靠的、面向连接的运输服务,因此增加了许多开销,如确认、流量控制、计时器和连接管理等。使协议数据单元的首部增大很多,还要占用许多处理机资源。
UDP在传送数据之前不需要先建立连接。远地主机的传输层收到UDP报文后不需要给出任何确认。虽然UDP不提供可靠的交付,但在某些情况下UDP是一种最有效的工作方式。如域名系统(Domain Name System,DNS)和网络文件系统(Network File System,NFS)使用的就是UDP这种运输方式。此外,UDP还能在主机上识别多个目的地址、允许多个应用程序在同一台主机上工作,并能独立地进行数据报的发送和接收。
1.UDP的格式
UDP有两个字段:数据字段和首部字段。首部字段共有8个字节,由4个字段组成,每个字段都是2字节。4个字段包括:源端口字段(源端口号)、目的端口字段(目的端口号)、长度字段(UDP用户数据报的长度)及检验和字段(防止UDP用户数据报在传输中出错),如图4-51所示。
图4-51 UDP用户数据报的首部和伪首部
计算检验和时,在UDP用户数据报之前要增加12字节的伪首部。伪首部不是UDP用户数据报真正的首部。只是在计算检验和时,临时和UDP用户数据报连接在一起,得到一个过渡的UDP用户数据报,以便能计算出检验和。(www.xing528.com)
2.UDP的封装、复用、分解和端口
UDP用户数据报包含首部(UDP报头)和数据区两部分。要让UDP数据报能在互联网中传输,还要把UDP封装到IP数据报中。最后网络接口层还要将IP数据报再封装到一个帧中,才能在物理传输通道上传输。UDP的封装过程如图4-52所示。
UDP还提供复用和分解功能。它接收多个应用程序送来的数据,然后再把它们送给IP层去传输。同时,它也接收IP层送来的UDP数据报,把它们分解后再送给对应的应用程序端口。UDP的分解操作如图4-53所示。
图4-52 UDP的封装
图4-53 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)等;另一类为一般端口,用来分配给请求通信客户的运行程序。表4-10给出了使用UDP和TCP的各种应用和应用层协议。
表4-10 使用UDP和TCP的各种应用和应用层协议
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。