V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Newyorkcity
V2EX  ›  问与答

管道的本质是什么,文件吗?同主机上的进程能否使用 socket 通信?此时还会牵涉到传输层和网卡(驱动)吗?

  •  
  •   Newyorkcity · 2020-09-27 09:55:11 +08:00 · 760 次点击
    这是一个创建于 1300 天前的主题,其中的信息可能已经有所发展或是发生改变。
    面试被问得我脑袋昏昏
    2 条回复    2020-09-27 10:21:16 +08:00
    unixeno
        1
    unixeno  
       2020-09-27 10:19:39 +08:00 via Android   ❤️ 1
    管道的本质是一块内存上的 buffer
    当然可以用 socket,你用 tcp 或者 udp 就会过一遍相应的协议栈,但是本地环回地址不通过网卡,内核内部就处理消化了
    如果你用 domain socket,那就和网络层传输层都没关系了,只是一个内存读写的问题,所以 uds 性能高
    codehz
        2
    codehz  
       2020-09-27 10:21:16 +08:00 via Android   ❤️ 1
    管道就是系统提供的进程间通讯机制(
    按 unix 那套就是文件
    同主机可以用 socket
    不管是 127.0.0.0/8 还是用 unix socket 都不会涉及网卡,但是前者会涉及 OSI 模型里的传输层(至网络层),不过这个问题有点复杂,参考 "Till which layer does the loopback packet goes? - Computer Science Stack Exchange" https://cs.stackexchange.com/questions/47218/till-which-layer-does-the-loopback-packet-goes
    限于这里没提供操作系统,所以最后一个问题也有可能是都涉及驱动,有些微内核模型的操作系统会把不同的通讯机制弄成不同的“驱动”来实现
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1251 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 23:59 · PVG 07:59 · LAX 16:59 · JFK 19:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.