为什么 WCF 限制我们每台机器只能打开一次命名管道?

发布于 2024-10-11 04:49:27 字数 47 浏览 5 评论 0原文

每台机器只打开一次命名管道的原因是什么? .我的意思是这个限制背后的原因是什么?

What is the reason for opening a named pipe only once per machine? .I mean what is the reason behind this restriction?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独自←快乐 2024-10-18 04:49:27

我还没有对此进行测试,但在单个命名管道上只能打开一个侦听器是有道理的。允许打开管道的两个实例会产生一系列问题,首先:

  1. 当我们向服务发送消息时,我们如何知道哪个侦听器将接受我们的消息?
  2. 当两个侦听器尝试接收相同消息时,我们真的需要避免竞争条件的开销吗?
  3. 我们希望每个侦听器都能收到该消息,还是只收到一个?

请记住,允许同一命名管道上的两个侦听器将允许两个完全不同的服务接收相同的消息。根本没有理由允许这种情况发生。

更新
Chris Dickson 指出,允许同一管道上的两个侦听器会产生一个称为 抢注攻击< /a>,欺诈主机可以接收请求并窃取调用者的身份。这是上述第 1 点的衍生。

I haven't tested this but it makes sense that only one listener can be open on a single named pipe. Allowing two instances of the pipe to be open would create a range of issues, to start with:

  1. When we send a message to the service, how do we know which listener is going to accept our message?
  2. Do we really need the overhead of avoiding race conditions when two listeners are trying to receive the same message?
  3. Would we expect each listener to receive the message, or just one?

Keep in mind that allowing two listeners on the same named pipe would allow two completely different services to receive the same messages. There is simply no reason to allow this to happen.

Update
Chris Dickson points out that allowing two listeners on the same pipe creates a security issue known as a squatting attack, where a fraudulent host can receive requests and steal the identity of the caller. This is a ramification of point 1 above.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文