1

我想知道在哪里可以访问 IANA 注册表?

它是否在操作系统中实现?

应用程序如何知道要连接到哪个端口,更确切地说是在哪里比较端口号?

有些应用程序的端口号是硬编码的,有些应用程序是你输入的,但是比较到底是在哪里完成的呢?

或者这一切都是基于人的,当开发人员知道他们将连接到 http 服务器时,他们是否使用端口 80?

我无法理解这一点,因为有众所周知的端口,您不能将其用于您的应用程序。或者你可以吗?当没有进程绑定它时,端口是否可以免费使用?所以我可以使用端口 80、25、443 或任何低于 1000 的端口,而我需要的只是 root 权限?

4

1 回答 1

4

你真的有两个大问题。首先,IANA 在哪里。这个答案很简单:http: //iana.org

但我认为你真正要问的是你的帖子的其余部分。您在系统上查找的文件就是该services文件。这通常在/etc/servicesUNIX 风格的系统中,尽管您会C:\Windows\System32\drivers\etc在 Windows 系统中找到它。

这个文件实际上是一个映射文件,允许您通过名称请求服务(例如“telnet”)并让系统将其转换为端口号(23)。

如果可能的话,编写软件时最好使用名称而不是数字。这不仅允许应用“众所周知的端口”的概念,而且如果您遇到需要在其他端口上运行服务的异常情况,只需修改services文件即可轻松重新映射服务。

您在这里还有另一个关于使用端口的权限的问题。首先,如果您使用的是 Windows,则确实没有这样的概念。“特权”端口的概念在其他操作系统(UNIX、VMS 等)上也有。在这些系统上,您需要是 root 或等效的 OPERATOR。这适用于小于 1024 的端口,而不是 1000。

也就是说,端口 80 并没有什么特别之处,只是人们希望在那里找到一个 Web 服务器。

于 2015-05-24T09:33:51.383 回答