为什么要发送没有负载的UDP数据包?

Mat*_*att 3 udp

似乎可以在没有有效载荷的情况下发送UDP分组.

我能想到的唯一不需要有效载荷的是NAT穿孔.还有什么可以用于此?

这与我之前的问题有关,在Linux下,可以在UDP上返回0吗?

我想更多的是,如果它被指定为某个标准的一部分,那么它被认为在某个地方有用吗?

nne*_*neo 10

什么!UDP数据包不是空的 - 它带有发送者的身份.因此,这样的包可以用作原始类型的信号:可能是问候,再见或保持活着.

对于类似的接口sendmsg,可以使用空数据包来发送辅助数据,例如cmsg结构(可以用于在Linux上的两个进程之间传输文件描述符之类的东西).

编辑:还有一个用途:NAT遍历算法,如STUN或UDP打孔.