【发布时间】:2015-08-01 12:19:38
【问题描述】:
正如我们所知,在浏览器中的任何一个选项卡的 Web 应用程序中都有一个进程,因此我们需要一个 IP 地址和一个端口号来识别该进程。正如我们所知,每个选项卡都有唯一的端口号。因此,对于每个进程,都有唯一的进程 ID。此外,我们可以在套接字编程中使用 ip 和进程 ID 组合来代替使用 ip 和端口号组合。如果是这样,那怎么办?如果不是为什么?请你能帮我..对不起英语不好
【问题讨论】:
正如我们所知,在浏览器中的任何一个选项卡的 Web 应用程序中都有一个进程,因此我们需要一个 IP 地址和一个端口号来识别该进程。正如我们所知,每个选项卡都有唯一的端口号。因此,对于每个进程,都有唯一的进程 ID。此外,我们可以在套接字编程中使用 ip 和进程 ID 组合来代替使用 ip 和端口号组合。如果是这样,那怎么办?如果不是为什么?请你能帮我..对不起英语不好
【问题讨论】:
我们可以使用 IP 地址和进程 ID 组合来代替 IP 地址和端口号吗?
没有。
为什么,为什么不呢?
因为他们没有那样定义 TCP/IP。这没有意义。远程计算机无法发现另一台主机上的进程 ID。它需要的是一个固定的数字,即一个端口号,两个主机都可以实现。
正如我们所知,每个选项卡都有唯一的端口号。
这绝对是绝对不正确的。 “我们”不“知道”任何这样的事情。
【讨论】:
正如我们所知,在浏览器中的任何一个标签页的 Web 应用程序中都有一个进程
不能保证。这是浏览器的一个实现细节。它可能会也可能不会对每个选项卡使用单独的进程。
所以我们需要一个 IP 地址和一个端口号来识别进程。
不,您需要一个 IP 地址和端口来识别给定的套接字端点。一个进程可以有多个处于活动状态的套接字。
我们知道每个选项卡都有唯一的端口号。
这也不能保证。 HTTP 是无状态的,不能保证或要求在请求之间保持连接,尤其是长时间连接。假设您打开一个标签并请求一个给定的网站,让该标签打开一段时间,然后打开一个新标签到另一个网站。以前的连接可能在选项卡空闲时已关闭,这些端口可能可在新选项卡中重复使用。
因此,对于每个进程,都有唯一的进程 ID。
这是在这种情况下唯一可以保证的事情。但请记住,一旦一个进程结束,它的进程 ID 可以并且将在后续的新进程中重用。
在socket编程中,我们也可以不使用ip和端口号的组合,而是使用ip和进程id的组合。
没有。但在某些平台上,例如 Windows,至少有一些 API 可用于发现拥有给定套接字的进程 ID。
如果不是为什么?
因为这不是套接字的设计方式。套接字端点由其协议/IP/端口元组标识,套接字连接由相互连接的两个对等点的协议/IP/端口元组标识。请记住,套接字连接可以跨越机器边界,但进程 ID 仅在运行它的机器上是本地的。
【讨论】: