【问题标题】:Can we use IP address and process id combination instead of IP address and port number? Why and why not?我们可以使用 IP 地址和进程 ID 组合来代替 IP 地址和端口号吗?为什么和为什么不?
【发布时间】:2015-08-01 12:19:38
【问题描述】:

正如我们所知,在浏览器中的任何一个选项卡的 Web 应用程序中都有一个进程,因此我们需要一个 IP 地址和一个端口号来识别该进程。正如我们所知,每个选项卡都有唯一的端口号。因此,对于每个进程,都有唯一的进程 ID。此外,我们可以在套接字编程中使用 ip 和进程 ID 组合来代替使用 ip 和端口号组合。如果是这样,那怎么办?如果不是为什么?请你能帮我..对不起英语不好

【问题讨论】:

    标签: sockets ip port pid


    【解决方案1】:

    我们可以使用 IP 地址和进程 ID 组合来代替 IP 地址和端口号吗?

    没有。

    为什么,为什么不呢?

    因为他们没有那样定义 TCP/IP。这没有意义。远程计算机无法发现另一台主机上的进程 ID。它需要的是一个固定的数字,即一个端口号,两个主机都可以实现。

    正如我们所知,每个选项卡都有唯一的端口号。

    这绝对是绝对不正确的。 “我们”不“知道”任何这样的事情。

    【讨论】:

      【解决方案2】:

      正如我们所知,在浏览器中的任何一个标签页的 Web 应用程序中都有一个进程

      不能保证。这是浏览器的一个实现细节。它可能会也可能不会对每个选项卡使用单独的进程。

      所以我们需要一个 IP 地址和一个端口号来识别进程。

      不,您需要一个 IP 地址和端口来识别给定的套接字端点。一个进程可以有多个处于活动状态的套接字。

      我们知道每个选项卡都有唯一的端口号。

      这也不能保证。 HTTP 是无状态的,不能保证或要求在请求之间保持连接,尤其是长时间连接。假设您打开一个标签并请求一个给定的网站,让该标签打开一段时间,然后打开一个新标签到另一个网站。以前的连接可能在选项卡空闲时已关闭,这些端口可能可在新选项卡中重复使用。

      因此,对于每个进程,都有唯一的进程 ID。

      这是在这种情况下唯一可以保证的事情。但请记住,一旦一个进程结束,它的进程 ID 可以并且将在后续的新进程中重用。

      在socket编程中,我们也可以不使用ip和端口号的组合,而是使用ip和进程id的组合。

      没有。但在某些平台上,例如 Windows,至少有一些 API 可用于发现拥有给定套接字的进程 ID。

      如果不是为什么?

      因为这不是套接字的设计方式。套接字端点由其协议/IP/端口元组标识,套接字连接由相互连接的两个对等点的协议/IP/端口元组标识。请记住,套接字连接可以跨越机器边界,但进程 ID 仅在运行它的机器上是本地的。

      【讨论】:

        猜你喜欢
        • 2016-04-29
        • 1970-01-01
        • 2016-09-26
        • 2021-12-11
        • 2014-03-14
        • 1970-01-01
        • 2021-05-23
        • 1970-01-01
        • 2013-01-05
        相关资源
        最近更新 更多