跳到主要内容

RFC 768 - 用户数据报协议 (User Datagram Protocol)

发布日期: 1980 年 8 月 28 日
作者: J. Postel (ISI - 信息科学研究所)
状态: 标准协议


简介

本用户数据报协议 (User Datagram Protocol, UDP) 的定义是为了在互联计算机网络环境之中提供分组交换计算机通信的数据报模式.本协议假定使用互联网协议 (Internet Protocol, IP) [1] 作为底层协议.

本协议为应用程序提供了一种以最少协议机制向其他程序发送消息的方法.本协议面向事务处理, 不保证交付和重复保护.需要有序可靠数据流交付的应用程序应使用传输控制协议 (Transmission Control Protocol, TCP) [2].


格式

                  0      7 8     15 16    23 24    31  
+--------+--------+--------+--------+
| Source | Destination |
| Port | Port |
+--------+--------+--------+--------+
| | |
| Length | Checksum |
+--------+--------+--------+--------+
|
| data octets ...
+---------------- ...

User Datagram Header Format

字段

源端口 (Source Port)

源端口是一个可选字段, 当其有意义时, 它指示发送进程的端口号, 并且在没有其他信息的情况下, 可以假定应将回复发送至该端口.如果未使用, 则填入零值.

目的端口 (Destination Port)

目的端口在特定互联网目的地址的上下文中具有含义.

长度 (Length)

长度字段表示此用户数据报的八位字节长度, 包括本头部和数据.(这意味着长度的最小值为八.)

校验和 (Checksum)

校验和是 16 位反码, 等于伪头部 (Pseudo Header) 的反码和的取反, 该伪头部包含来自 IP 头部,UDP 头部和数据的若干信息, 末尾根据需要填充零八位字节, 以使总长度为两个八位字节的倍数.

伪头部概念上位于 UDP 头部之前, 包含源地址,目的地址,协议和 UDP 长度.此信息提供了对错误路由数据报的保护.此校验和计算方法与 TCP 中使用的相同.

                  0      7 8     15 16    23 24    31 
+--------+--------+--------+--------+
| source address |
+--------+--------+--------+--------+
| destination address |
+--------+--------+--------+--------+
| zero |protocol| UDP length |
+--------+--------+--------+--------+

如果计算得出的校验和为零, 则以全一 (即反码算术中等价的全一值) 传输.传输的校验和值为全零表示发送方未生成校验和 (用于调试目的或高层协议不关心校验和的情况).


用户接口

用户接口应允许以下操作:

  • 创建新的接收端口 (receive ports),

  • 在接收端口上执行接收操作, 返回数据八位字节以及源端口和源地址的指示,

  • 以及执行发送数据报的操作, 指定要发送的数据,源端口和目的端口以及地址.


IP 接口

UDP 模块必须能够 (MUST) 从互联网头部确定源和目的互联网地址以及协议字段.一种可能的 UDP/IP 接口会在响应接收操作时返回整个互联网数据报, 包括全部互联网头部.此类接口还允许 UDP 将带有完整头部的互联网数据报传递给 IP 以便发送.IP 会验证某些字段的一致性并计算互联网头部校验和.


协议应用

本协议的主要用途是互联网名称服务器 (Internet Name Server) [3] 和简单文件传输 (Trivial File Transfer) [4].


协议号

在互联网协议中使用本协议时, 协议号为 17 (八进制 21).其他协议号列于 [5].


参考文献

[1] Postel, J., "Internet Protocol," RFC 760, USC/Information Sciences Institute, January 1980.

[2] Postel, J., "Transmission Control Protocol," RFC 761, USC/Information Sciences Institute, January 1980.

[3] Postel, J., "Internet Name Server," USC/Information Sciences Institute, IEN 116, August 1979.

[4] Sollins, K., "The TFTP Protocol," Massachusetts Institute of Technology, IEN 133, January 1980.

[5] Postel, J., "Assigned Numbers," USC/Information Sciences Institute, RFC 762, January 1980.


相关资源

  • 官方文本: https://www.rfc-editor.org/rfc/rfc768.txt
  • 官方页面: https://datatracker.ietf.org/doc/html/rfc768