Networking 当接收器未侦听已知端口时,如何确定自定义协议的临时UDP目标端口号
我正在开发一个使用UDP作为传输层的自定义协议。由于它是自定义的,显然没有为该协议分配IETF UDP端口 作为发送方,我需要在UDP目标端口字段中输入一个值,接收方也需要在同一端口上侦听我的消息。否则接收器将无法获取我的UDP数据包Networking 当接收器未侦听已知端口时,如何确定自定义协议的临时UDP目标端口号,networking,udp,port,Networking,Udp,Port,我正在开发一个使用UDP作为传输层的自定义协议。由于它是自定义的,显然没有为该协议分配IETF UDP端口 作为发送方,我需要在UDP目标端口字段中输入一个值,接收方也需要在同一端口上侦听我的消息。否则接收器将无法获取我的UDP数据包 显然,我不能使用IETF“服务名称和传输协议端口号注册表”中列出的任何端口,因为它们是为其他协议(不是我的自定义协议)保留的 由于协议没有(也永远不会)注册,并且没有专用端口号,因此我确实需要使用临时范围内的端口。这也排除了使用众所周知的目标端口来引导通信过
- 显然,我不能使用IETF“服务名称和传输协议端口号注册表”中列出的任何端口,因为它们是为其他协议(不是我的自定义协议)保留的
- 由于协议没有(也永远不会)注册,并且没有专用端口号,因此我确实需要使用临时范围内的端口。这也排除了使用众所周知的目标端口来引导通信过程的可能性
- 但是我不能硬编码一个短暂的端口值,因为当我的程序启动时,该端口很可能已经被另一个进程使用。当我的程序启动时,我不一定能控制使用哪些临时端口。因此,发送方和接收方需要一些方法来确定在运行时使用哪个端口
- 接收器将是一个运行一些自定义网络代码的嵌入式系统。从理论上讲,在那一边永久保留一个短暂的港口是可能的。这种解决办法是不可取的,但如果没有更好的选择,我会接受这一答案
- 显然,发送方可以检查本地临时端口的使用情况,并找到一个免费的端口放在自己的源端口字段中。所以没有问题。目的地只需要在回复中使用该字段值,不管它是什么
我已经在网络工程堆栈交换上问过这个问题,但他们觉得问一个关于IETF RFC和与网络算法设计相关的问题有点离题。如果您正在开发一个协议,那么您应该根据您包含的IANA链接注册一个服务端口。IANA根据使用“IETF审查”流程、“IESG批准”流程或“专家审查”流程分配用户端口。不分配动态端口