Udp 拣选TFTP TID

Udp 拣选TFTP TID,udp,tftp,Udp,Tftp,TFTP的RFP指出,TID在大多数情况下: 应随机选取,使概率相同 立即连续选择两次的数量非常少 问题是,这些“TID”也被用作UDP端口号。但典型的网络接口不能仅用于TFTP。一些端口可能会被使用,而其他端口基本上应该为特定应用“保留”。我甚至不确定程序在运行时可以去哪里查找这些信息 那么TFTP实现应该如何处理这个问题呢?因为选择TID/端口的主机就是打开它并告诉另一方它打开了哪个端口的主机,所以您可以简单地尝试打开端口;如果它已在使用中或不可用,则此操作将失败,您可以使用其他端口重试。(

TFTP的RFP指出,TID在大多数情况下:

应随机选取,使概率相同 立即连续选择两次的数量非常少

问题是,这些“TID”也被用作UDP端口号。但典型的网络接口不能仅用于TFTP。一些端口可能会被使用,而其他端口基本上应该为特定应用“保留”。我甚至不确定程序在运行时可以去哪里查找这些信息


那么TFTP实现应该如何处理这个问题呢?

因为选择TID/端口的主机就是打开它并告诉另一方它打开了哪个端口的主机,所以您可以简单地尝试打开端口;如果它已在使用中或不可用,则此操作将失败,您可以使用其他端口重试。(注意,由于UDP和TCP是不同的协议,TCP应用程序和UDP应用程序都可以使用“相同”的端口,因为它们实际上根本不相同!)在一个简单的循环中执行此操作,直到找到一个“好”端口为止。(可能最好定义最大尝试次数,如果在找到好端口之前遇到这种情况,则干脆让连接失败,因为这可能是其他问题的迹象,这些问题根本无法工作。)


坚持使用最佳实践的范围,尽管注意不同的系统为此定义了不同的范围。您可以选择适合您的系统的范围,或者简单地尝试使用高于“已知”端口范围(即1024以上)的端口;这可能不会为您的系统提供一个“临时端口”,但只要您能够打开它,它就会正常工作。

好的,既然您提到了这一点,看起来维基百科确实说临时端口是常用的。我以前从未使用过这种动态端口。我认为这是典型的算法,就像你说的,试着打开它,看看它是否失败,直到你得到一个好的?这既是我的假设,也是我自己如何实现这样一个系统,如果我这样做的话。