当前位置:  开发笔记 > 前端 > 正文

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

如何解决《为内部应用程序使用分配TCP/IP端口》经验,为你挑选了4个好方法。

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



1> adrianwadey..:

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

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

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

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

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

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



2> Jorge Ferrei..:

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

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

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

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

不应使用未经授权的港口号码.在您的申请获得批准后,IANA将为该港口分配号码.

并确保您选择的端口号可以按照您的说明进行配置:

该端口将嵌入到服务的配置文件和使用该服务的客户端中.

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


_另一方面,应用软件绝不能假设动态端口范围内的特定端口号始终可用于通信,因此该范围内的端口号不能用作服务标识符._ [RFC 6335](http://tools.ietf.org/html/rfc6335#page-20)
博卢是对的.**请勿在动态范围内使用端口号**.请参阅本页其他地方的解释.
相反,使用已经分配给您确定永远不需要的端口。例如,TCP 31457被分配给TetriNET,因此这是一个确定的赌注(除非您的企业是多人俄罗斯方块)。

3> Keith Lawren..:

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

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

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


等等,你告诉我*避免*49152以上的端口,但最好的答案是你应该*只选择端口49152及以上.什么?
@CamiloMartin另见adrianwadey的回答.最佳答案是对等应用程序(例如BitTorrent)的合理建议,因为他们倾向于使用动态端口,通常使用某种发现服务; 与需要相当稳定的端口号的客户端 - 服务器应用程序无关 - 即使端口号存储在配置文件中,也需要在服务器发生变化时重新配置服务器_和_.

4> Kluge..:

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

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有