我想知道我在哪里可以访问IANA注册表?
在OS中实现了吗?
应用程序如何知道连接到哪个端口,确切地说,在哪里比较端口号?
有些应用程序有硬编码的端口号,有些你输入它,但究竟在哪里比较完成?
或者这一切都是基于人类的,当开发者知道他们将连接到http服务器时,他们是否会使用端口80 ?
我无法理解这一点,因为有众所周知的端口,你不能在你的应用程序中使用。你能吗?当没有进程绑定端口时,端口是否可以自由使用?所以我可以使用端口80,25,443,或1000下的任何端口只需要root权限?
这里有两个大问题。首先,IANA在哪里?答案很简单:http://iana.org
但我认为你真正想问的是你帖子的其余部分。您在系统上查找的文件是services
文件。这通常在UNIX风格系统的/etc/services
中,尽管您可以在Windows系统的C:WindowsSystem32driversetc
中找到它。
这个文件实际上是一个映射文件,允许您通过名称请求服务(例如,我们说"telnet"),并让系统将其转换为端口号(23)。
在编写软件时最好使用名称,如果可能的话,而不是数字。这不仅允许应用"已知端口"的概念,而且如果您有一种不寻常的情况,即服务需要在其他端口上运行,只需修改services
文件就可以轻松地重新映射服务。
关于使用端口的权限还有一个问题。首先,如果你使用的是Windows,就没有这种概念。"特权"端口的概念可以在其他操作系统(UNIX、VMS等)上找到。在这些系统中,您需要是根用户或具有OPERATOR同等权限的用户。这适用于小于1024的端口,而不是1000。
也就是说,除了期望在那里找到一个web服务器之外,80端口真的没有什么特别的。