TFTP的RFP说,在大多数情况下,TID:
应该随机选择,这样相同的数字被连续两次选择的概率是非常低的。
问题是,这些“TID”也用作UDP端口号。但是,一个典型的网络接口不能仅仅用于TFTP。有些端口可能正在使用,而另一些端口基本上应该为特定的应用程序“保留”。我甚至不知道程序在运行时可以去哪里查找这些信息。
那么,TFTP实现应该如何处理这个问题呢?
发布于 2014-03-25 19:12:11
由于选择TID/端口的主机打开它并告诉对方打开了哪个端口,所以您可以尝试打开端口;如果它已经在使用或其他不可用,这将失败,您可以使用另一个端口重试。(请注意,由于UDP和TCP是不同的协议,TCP应用程序和UDP应用程序都可以使用“相同的”端口,因为它们实际上完全不同!)在一个简单的循环中这样做,直到你找到一个“好”的循环。(最好定义最大数量的尝试,如果在找到一个好的端口之前就满足了,那么简单地失败连接,因为这可能是其他问题的迹象,这些问题完全阻止了它的工作。)
坚持使用短时端口范围来处理最佳实践,不过请注意,不同的系统为此目的定义了不同的范围。您可以选择适合您的系统的范围,或者只需尝试使用“知名”端口范围之上的端口(即1024以上);这可能不会为您的系统本身提供一个“临时端口”,但只要您能够打开它,它就会正常工作。
https://stackoverflow.com/questions/22643921
复制相似问题