为什么监听端口号的选择通常不成为一个问题?

问题描述 投票:0回答:1

在编写打开侦听端口的服务器应用程序时,端口号的选择通常不会出现问题,前提是当前没有其他应用程序在侦听状态下保持相同的端口号打开。

例如 - 让我们考虑一个示例服务器,它有 3 个使用监听端口运行的应用程序

  • 端口 8080 上的网络服务器
  • 端口 8081 上的另一个网络服务器,选择它是因为 8080 已在使用中
  • Postgres 在端口 5432 上

假设我们要部署另一个服务器应用程序。

  • 我们选择端口 8888,基本上是随机的。这个选择没有什么特别的理由

其他应用程序正在运行。他们通过大量端口号接受了大量连接。

也许 postgres 使用端口号 10666、12543、13333 和 8888 具有活动的、已接受的连接。这些只是随机组成的数字。

由于 postgres 使用端口 8888:

  • 这是否意味着我们将无法启动我们的新应用程序(它想要在与 Postgres 相同的端口号上打开一个侦听套接字,Postgres 已接受与此端口号的连接)
  • 为什么这一般来说不是一个问题? - 我之前肯定从未在生产或开发环境中看到过这个问题出现
  • 当两个应用程序尝试打开同一端口号的侦听连接时,我发现端口冲突。我还没有看到应用程序无法启动,因为相同的端口号当前正在被已接受的端口号使用
networking port
1个回答
0
投票

为什么监听端口号的选择通常不成为一个问题?

如果您“随机”选择计算机上的另一个服务使用的端口,那么是一个问题。

大多数时候这不是一个严重的问题,因为大多数人不会随机选择端口。事实上,他们这样做是有先见之明的。

大多数常见服务都有

分配的端口号;即由互联网号码分配机构 (IANA) 分配的号码。 这个维基百科页面很好地总结了官方分配的端口。人们通常会使用指定的端口;例如SSH 为 25,HTTP 为 80,HTTPS 为 443,PostgreSQL 为 5432 和 6432。

当人们确实想在同一个 IP 地址上运行两个或多个(比如说)Web 服务器时,他们会关注当前或可能正在使用的端口。在某些情况下,有传统的替代方案;例如8000、8008 和 8080 是端口 80 的传统替代方案。在其他情况下,应通过咨询来源(例如上面的维基百科页面)来选择不太可能发生冲突的端口。

但是,如果您不小心尝试运行两个或多个侦听同一端口的服务,您将

遇到问题。一次只有一个服务可以侦听给定的 TCP 端口(或 UDP 端口)。另一个在进行 listen 系统调用时将会失败。


简而言之,这通常不是问题,因为人们通常不会随机选择端口号。

© www.soinside.com 2019 - 2024. All rights reserved.