为内部应用程序使用分配TCP / IP端口

时间:2008-10-20 15:34:05

标签: tcp

我编写了一个由Windows服务托管的WCF服务,它需要侦听已知的TCP / IP端口。我可以在哪个范围内安全地分配端口以在我的组织内使用?该端口将嵌入到服务的配置文件和使用该服务的客户端中。

6 个答案:

答案 0 :(得分:45)

端口0-1023是众所周知的端口,由IANA分配。这些只应用于公共网络上的指定协议。

端口1024-65535以前称为注册端口号(请参阅rfc1700),但现在分为两个区域(参见rfc6335)。

端口1024-49151是用户端口,是用于您自己的协议的端口。

端口49152-65535是动态端口,不应该为协议规定。

用户端口可以用于任何协议,但是数量有限,因此您的使用将与某些网络上的某些人使用冲突。 IANA保留了注册端口号(0-49151)的记录。如果您的协议将在公共网络上使用,那么您需要考虑向IANA注册它。如果您只在自己的网络中使用它,那么在此区域内选择一个端口(1024-49151)并检查该端口是否与IANA register相对应,以确保它不会被可用于您的协议使用网络。对于私人使用,最好选择一个分配给您知道不会被使用的协议的号码,而不是选择一个未分配的号码,因此可能会在将来分配。“/ p>

请勿在动态范围内使用端口号。这些端口由操作系统分配,动态且有些随机。如果打开客户端连接(使用带端口= 0的bind()),将为动态范围分配一个未使用的端口。无法保证此范围内的端口始终可用于您的协议。

答案 1 :(得分:23)

从49152到65535选择一个端口号。

IANA发布当前分配的端口列表。

http://www.iana.org/assignments/port-numbers

动态和/或专用端口是49152到65535的端口。这是您应该为内部应用程序选择端口的范围。当然,可以使用属于已发布列表上的未分配范围之一的任何端口。但请注意,通过从未分配范围中选择端口号,无法保证您选择的端口将来不会成为保留端口。

  

未经授权的港口号码不应该   用过的。 IANA将分配这些号码   适用于您的申请后的港口   已被批准。

并确保您选择的端口号可按您所说的配置:

  

该端口将嵌入到   配置服务和文件的文件   正在消费的客户   服务。

如果其他第三方您无法触摸软件正在使用您的端口号,这将避免令人头疼。如果发生这种情况,您只需继续并在配置文件中进行更改即可正常工作。

答案 2 :(得分:6)

简短回答:避免包括1023或超过49152在内的任何内容,并针对您网络上的服务测试所选端口。

如果您采取了合理的预防措施(将端口号放在配置文件中),如果您以后发现冲突,则不应该造成巨大破坏。

但是(这样我可以在我输入时弹出的其他建议中添加一些内容)确保您可以轻松更改!如果它在配置文件中,请将其显而易见。记录它,并在故障排除中指出它。这种情况可能会出错,因此如果需要更改,可以轻松调试。

答案 3 :(得分:4)

除了有关选择通用应用程序端口的其他建议之外,我建议您在应用程序中配置端口。硬编码端口号是一个坏主意,特别是如果您稍后发现与另一个应用程序的端口冲突并需要更改您的端口号。

答案 4 :(得分:0)

这是一个很好的list of common application ports。在空槽中自行选择。也许您还应该扫描您的网络以获取任何内部特殊应用程序。

通常可以使用高数字端口,我建议使用它们,但它们可能被防火墙阻止。

答案 5 :(得分:0)

请注意,请记住通过netstat / a / n检查这些端口,看看它是否被其他应用程序使用。我发现vista使用49152 ....出于某些应用程序级别的原因。基本上,因为大多数系统级别的侦听器没有实现端口共享,所以使用那些根本不使用的端口是非常安全的。

有很好的编程日 AMIR