【问题标题】:What's the difference between named pipe and mailslot (mailbox)?命名管道和邮槽(邮箱)有什么区别?
【发布时间】:2011-11-03 10:51:15
【问题描述】:

这两种IPC机制看起来很相似,有什么区别吗?

【问题讨论】:

    标签: winapi ipc named-pipes


    【解决方案1】:

    我认为 MSDN 上对每种机制的介绍都回答了这个问题:

    1. Mailslots:

      邮槽是一种用于单向进程间通信 (IPC) 的机制。应用程序可以将消息存储在邮槽中。邮槽的所有者可以检索存储在那里的消息。这些消息通常通过网络发送到指定计算机或指定域中的所有计算机。

    2. Named Pipes:

      命名管道是一种命名的单向或双工管道,用于管道服务器和一个或多个管道客户端之间的通信。命名管道的所有实例共享相同的管道名称,但每个实例都有自己的缓冲区和句柄,并为客户端/服务器通信提供单独的管道

    所以:

    • 命名管道是面向连接的,而邮槽不是。
    • 邮槽可用于广播,命名管道不能。

    (总结:邮槽很像UDP,但命名管道更接近TCP。计算机之间邮槽的424字节限制比普通网络上的UDP数据包更有限。)

    虽然邮槽和命名管道都可以具有 ACL(限制不同客户端用户可以执行的操作),但命名管道还允许委托客户端身份,以便服务器可以作为该用户(或被阻止)操作(访问其他资源)。

    (已编辑以更正有关安全性的信息,并注意邮槽消息大小限制。)

    【讨论】:

    • Also named pipes provide no security mechanisms, whereas named pipes have - 错字?
    • 我是说你可能是想说“mailslots 不提供安全机制”,因为命名管道受 NT 安全性约束。
    • @Eugene:现在我明白了 :-)。校对的挑战——我读了我认为我写的东西!
    • 邮槽也采用LPSECURITY_ATTRUBUTES,它们被命名为内核对象。他们确实提供了安全保障! msdn.microsoft.com/en-gb/library/aa365147(v=VS.85).aspx
    • 值得一提的是,400B的消息大小限制只是消息广播时的情况。这就是 MSDN 所说的:“广播到域上所有邮槽的消息不能超过 400 字节,而发送到单个邮槽的消息仅受邮槽服务器在创建邮槽时指定的最大消息大小的限制。”
    【解决方案2】:

    邮件槽没有像命名管道那样明确的基于 ACL 的权限。无法阻止特定用户组访问邮槽。源 windows 安全书。

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 1970-01-01
      • 2018-08-25
      • 2016-04-05
      • 2021-05-08
      • 2015-07-11
      • 2013-09-05
      • 2020-03-21
      相关资源
      最近更新 更多