【问题标题】:Is a connection to localhost copied over memory or disk?与 localhost 的连接是通过内存还是磁盘复制的?
【发布时间】:2021-08-12 21:26:43
【问题描述】:

AFAIK,有两种 IPC over sockets 方法。 Unix 套接字和 TCP/IP 套接字。

UNIX 域套接字知道它们在同一个系统上执行,因此它们可以避免一些检查和操作(如路由);这使得它们比 IP 插座更快更轻。它们还通过文件系统传输数据包,这意味着磁盘访问是该过程的自然组成部分(AFAIU,来自使用文件系统的含义)。

IP 套接字(尤其是 TCP/IP 套接字)是一种允许进程之间通过网络进行通信的机制。在某些情况下,您可以使用 TCP/IP 套接字与运行在同一台计算机上的进程通信(通过使用环回接口)。

我的问题是:在后一种情况下,数据包的传输究竟发生在哪里?如果它们通过内存传递,尽管看起来存在逻辑开销,但 IP 套接字实际上比 UNIX 套接字具有更高的性能。

有什么我遗漏的吗?我知道逻辑上 IP 套接字会引入开销,我想了解在这两种情况下消息会发生什么。

【问题讨论】:

标签: linux sockets tcp localhost


【解决方案1】:

UNIX 域套接字...它们还通过文件系统传输数据包,这意味着磁盘访问是该过程的自然部分

这是错误的。虽然文件系统中有一个特殊的套接字文件,但它只通过使用文件系统权限来规范对套接字的访问。数据传输本身完全在内存中完成。

IP 套接字...数据包的传输究竟发生在哪里?

也在内存中。

【讨论】:

    【解决方案2】:

    Unix 变体在文件系统上映射了很多与实际磁盘驱动器完全无关的东西。

    您所描述的都仅在内存中,只是分层数量和开销不同。 Unix 套接字只使用 DOS,而 IP 套接字使用完整的网络堆栈。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多