我即将为我公司正在开发的一个项目编写tcp-server。 服务器将使用多个端口来执行不同的任务。 在开发过程中,我们只使用我们喜欢的一些端口号: 1400, 1500, 1600-1650 。
我们可以在生产服务器上使用这个端口吗? 还是有一些安全和/或兼容性问题,我们必须考虑?
正如Paul所提到的,端口<1024通常被保留用于“核心”服务。 (另外,许多操作系统都需要绑定到端口<1024以root身份运行的服务)。
但是,还有其他一些通常使用的端口。 IANA港口号码清单通常是一个好地方, 你应该尽量避免使用已经保留的端口。 尽pipe实际上,这只会影响到你的networking/服务器上使用一个保留端口的服务,但检查这个列表是一个很好的习惯,当你开发一个新的networking应用程序。
不要将您的软件devise为默认使用49152以下的任何端口,因为这些端口由IANA保留(即使是那些未分配的端口)。 用户可以在configuration期间手动设置端口。 如果必须使用默认端口预configuration软件,请使用49152到65535范围内的某个端口。
超过1024的任何东西都应该没问题,如果你的生产服务器上没有其他东西的话。
但是,为什么不使其可configuration? 在configuration文件/目录或其他东西中定义端口,然后如果确实有冲突,只需要快速编辑即可将其更改为其他内容。
另外,这种技术允许你在同一台机器上运行多个实例(如果你拥有在configuration文件中定义了多个应用程序/进程需要的所有东西 – 这可能包括消息队列ID,目录名等等)。 我们目前的产品没有这样做,这是谚语的痛苦。
我有一些事情使用端口2000有麻烦。 问题是一个病毒很久以前就使用了这个端口,一些路由器/防火墙等等对这个端口上的数据是怀疑的。 我开始将端口号默认为30,000以上。
简单地说,任何端口号在1025和65535之间。低于1024的端口被保留用于基本上面向操作系统任务的各种事情。 同样地,对于SMTP,Ex 25为Telnet,对于Telnet为23,对于HTTP为80,对于HTTPS为443。
您必须小心才能获得未被其他服务,程序使用的端口。