是的,操作系统包含将协议地址:端口与程序使用的套接字相关联的数据结构。当程序发出bind()
、connect()
或某些其他系统调用时,操作系统会生成可以简化为表条目的内容。
这发生在侦听端口(如 Web 服务器)以及传出连接使用的端口上。
您的操作系统可能允许您列出系统上当前正在使用的端口。在类 unix 系统(包括 macOS)上,命令是netstat
,例如:
jsw@boomer ~ % netstat -n
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 172.19.87.187.60920 18.234.32.175.443 ESTABLISHED
tcp4 0 0 172.19.87.187.60919 54.211.89.16.443 ESTABLISHED
tcp4 0 0 172.19.87.187.60918 172.217.7.133.443 ESTABLISHED
tcp4 0 0 172.19.87.187.60917 172.217.7.133.443 ESTABLISHED
软件可以监听tcp 0.0.0.0:80
以接收到达端口 80 的任何连接。或者,它可以监听特定的 IP 地址,例如,192.0.2.1:80
它不会接收到系统上其他 IP 的连接。
Stack Exchange 的服务器故障或其他以系统为中心的部分可能是获取有关此主题的更深入信息的更好资源。