使用服务器的临时端口

Pri*_*osK 6 networking security port

通常,客户端在与服务器建立连接时使用临时端口。

例如:

  1. 服务器监听80端口
  2. 客户端(浏览器、FTP 客户端、bittorent 客户端)向服务器发送请求,包括操作系统分配的临时端口
  3. 服务器使用提供的临时端口作为目标端口进行响应

现在的问题是:

我编写了一个服务器应用程序,我想在每次启动时在随机空闲端口上启动(为了保持这个问题,我不会解释为什么我会喜欢这种行为)。现在我的问题是,如果我使用临时端口之一供服务器监听,会产生什么影响。这样做有什么缺点(也在安全方面)吗?

您是否知道在实践中也使用临时端口的服务器的任何示例?

我关心的一个问题也是《TCP/IP 指南:全面、图解的互联网协议参考》(第 705 页)中的声明:

正如众所周知的和已注册的端口号用于服务器进程一样,临时端口号仅用于客户端进程。

Ric*_*ard 2

作为帮助,维基百科关于临时端口的页面提供了有关操作系统实际使用的端口号的更多信息。

从这一点可以立即看到有许多可用端口通常不被服务器(进程)使用,并且不在临时范围内。

因此,显而易见的解决方案是从其他端口之一中随机选择。这避免了需要对操作系统如何从临时范围进行分配进行假设:它是否检查实际使用情况或仅检查其分配以避免新分配的冲突?

这个问题可能看起来很小,但是对于客户端端口,进程通常不会直接使用端口号(它是在进程打开连接时分配的,只有通过查看套接字的属性,进程才能找到端口号:通常这是完全没有必要)。但是,要接受传入连接,套接字必须绑定到特定端口,因此服务器进程负责获取端口号。