在嵌入式设备上运行的自定义应用程序 - 我需要在 /etc/services 中注册我的监听端口吗?

mat*_*975 2 networking services socket

我编写了一个可以在嵌入式设备上运行的应用程序。安装非常简单,使用busybox而不是其他很多东西。该软件的一部分包括一个接受传入 TCP/IP 连接的侦听器线程。我使用的端口号在设备/etc/services文件中不存在,所以我知道这个端口可用,但我想知道我是否需要以某种方式注册这个端口,以便其他实用程序无法使用它?是否有什么我需要自己做的明确的事情来注册一个监听端口,或者套接字系统函数会在幕后为我处理所有这些吗?或者我希望使用的端口不存在这一事实是否/etc/services意味着我完全不必担心我的应用程序的这一方面?

Flu*_*lup 5

/etc/services仅用于服务名称解析。除非您想通过名称引用您的端口,否则无需更新文件。但是,您可能无论如何都想添加它,如果只是为了您自己的理智。

在选择端口号时,您可能需要考虑以下几点:

  • 只能root绑定到 <1024 的端口。这是为了保护敏感的系统端口(例如用于 ssh 的端口 22)被机会性用户进程破坏。
  • >=32768 的端口可以由系统动态分配,一般用于传出连接。

如果您的代码成功绑定到该端口,则其他非root进程都无法使用它。