套接字绑定端口到我的本地主机和盒子 IP 中的相同端口
Socket bind port to same port in my localhost and box IP
我试图理解一个设置,但我自己很困惑。
假设我的盒子 IP 是 xx.xx.xx.xx,127.0.0.1 是我的 Linux 盒子的本地环回。现在,当我为端口执行 netstat 时,我看到以下输出:
tcp 0 0 127.0.0.1:11191 0.0.0.0:* LISTEN 9999/myexe off (0.00/0/0)
tcp 0 0 xx.xx.xx.xx:11191 0.0.0.0:* LISTEN 26998/anotherexe off (0.00/0/0)
输出的基本含义是什么 - 因为 127.0.0.1 和 xx.xx.xx.xx 指的是同一个框那么这是否意味着两个可执行文件已经绑定并且 运行 在同一端口是同一个框 - 如果是这样如果在我的情况下来自端口 11191,哪个二进制文件将为请求提供服务?
几乎可以肯定,每一个都是不同的界面,因此是不同的互联网地址。也就是说,127.0.0.1 通常是环回接口。虽然大概 xx.xx.xx.xx 是一个真实的(以太网)网络接口。完全有可能将两个单独的程序绑定到不同地址上的相同端口号。更常见的是,单个程序简单地绑定到端口号,内核实际上将其转换为多个绑定,一个对应每个接口的地址。
有关详细信息,请参阅 bind(2)
和 ip(7)
手册页。具体来说,INADDR_ANY
是希望在所有接口上绑定端口的服务器可以使用的 pseudo-address。
另见 Linux 副标题第一段下的答案:
在某些平台上,netstat 可以向您显示拥有套接字的进程。例如,在 Windows 上,-b
开关显示可执行文件名称,而 -o
开关显示进程 ID。在 Linux 上,-p
开关显示进程信息。
does it means that two executable have binded and running at same port is same box
是的。您的 netstat 输出包括进程名称,因此我们可以清楚地看到 myexe
正在侦听 127.0.0.1:11191
并且 anotherexe
正在侦听 xx.xx.xx.xx:11191
.
if so which binary would service the request if coming at port 11191 in my case?
这取决于连接到达的本地 IP。 127.0.0.1
是一个环回适配器,因此只有同一台机器上的客户端 运行 可以连接到它。如果客户端具体连接到 127.0.0.1
上的端口 11191,myexe
将处理该连接。如果客户端连接到 xx.xx.xx.xx
上的端口 11191,anotherexe
将处理连接。
我试图理解一个设置,但我自己很困惑。
假设我的盒子 IP 是 xx.xx.xx.xx,127.0.0.1 是我的 Linux 盒子的本地环回。现在,当我为端口执行 netstat 时,我看到以下输出:
tcp 0 0 127.0.0.1:11191 0.0.0.0:* LISTEN 9999/myexe off (0.00/0/0)
tcp 0 0 xx.xx.xx.xx:11191 0.0.0.0:* LISTEN 26998/anotherexe off (0.00/0/0)
输出的基本含义是什么 - 因为 127.0.0.1 和 xx.xx.xx.xx 指的是同一个框那么这是否意味着两个可执行文件已经绑定并且 运行 在同一端口是同一个框 - 如果是这样如果在我的情况下来自端口 11191,哪个二进制文件将为请求提供服务?
几乎可以肯定,每一个都是不同的界面,因此是不同的互联网地址。也就是说,127.0.0.1 通常是环回接口。虽然大概 xx.xx.xx.xx 是一个真实的(以太网)网络接口。完全有可能将两个单独的程序绑定到不同地址上的相同端口号。更常见的是,单个程序简单地绑定到端口号,内核实际上将其转换为多个绑定,一个对应每个接口的地址。
有关详细信息,请参阅 bind(2)
和 ip(7)
手册页。具体来说,INADDR_ANY
是希望在所有接口上绑定端口的服务器可以使用的 pseudo-address。
另见 Linux 副标题第一段下的答案:
在某些平台上,netstat 可以向您显示拥有套接字的进程。例如,在 Windows 上,-b
开关显示可执行文件名称,而 -o
开关显示进程 ID。在 Linux 上,-p
开关显示进程信息。
does it means that two executable have binded and running at same port is same box
是的。您的 netstat 输出包括进程名称,因此我们可以清楚地看到 myexe
正在侦听 127.0.0.1:11191
并且 anotherexe
正在侦听 xx.xx.xx.xx:11191
.
if so which binary would service the request if coming at port 11191 in my case?
这取决于连接到达的本地 IP。 127.0.0.1
是一个环回适配器,因此只有同一台机器上的客户端 运行 可以连接到它。如果客户端具体连接到 127.0.0.1
上的端口 11191,myexe
将处理该连接。如果客户端连接到 xx.xx.xx.xx
上的端口 11191,anotherexe
将处理连接。