我编写了一个将在嵌入式设备上运行的应用程序。安装非常少,只使用 busybox,没有太多其他东西。该软件的一部分包括一个接受传入 TCP/IP 连接的侦听器线程。我使用的端口号不存在于设备/etc/services
文件中,因此我知道该端口可用,但我想知道是否需要以某种方式注册该端口,以便其他实用程序无法使用它?我自己是否需要做任何明确的事情来注册侦听端口,或者套接字系统函数是否会在幕后为我处理所有这些?或者我希望使用的端口不存在这一事实是否意味着/etc/services
我根本不必担心我的应用程序的这方面?
答案1
/etc/services
仅用于服务名称解析。除非您想按名称引用端口,否则无需更新该文件。但是,您可能还是想添加它,哪怕只是为了您自己的理智。
选择端口号时您可能需要考虑以下几点:
- 只能
root
绑定到 <1024 的端口。这是为了保护敏感的系统端口(例如,用于 ssh 的端口 22)被机会性用户进程破坏。 - >=32768 的端口可以由系统动态分配,通常用于传出连接。
如果您的代码成功绑定到该端口,则其他非root
进程都无法使用它。