繁体   English   中英

NAT,wcf,双工通信……需要一些了解

[英]NAT , wcf, duplex comm… need some insight

我正在研究做一个双向通讯应用程序,不一定是点对点的。 在使用wcf时,我对所有这些的内部工作感到好奇。 我最关心的是NAT /防火墙。

我需要在不进行客户端转发的情况下进行这项工作。 我将端口转发服务器,那很好。 但是客户端需要能够连接到服务器,然后通过现在打开的(NAT和防火墙)连接来回通信。

我正在设计的双工wcf示例,似乎都使用了向服务器宣布的客户端地址来进行回调。 假定这是本地局域网地址,将无法用于公共连接。 如果是公共地址,是否需要端口转发?

我想念什么吗? 我想建立连接,保持打开状态,并以双工方式使用它。 因此,一旦客户端“掉线”,就可以克服NAT和防火墙的限制。

而且,我不确定确切如何实现NAT。 如果我在端口5555上“打孔”与wcf服务的连接并收到回复,那么从/到该wcf服务地址的端口5555是否保留在NAT表中? 如果我要从服务器wcf服务发出进一步的连接,并“连接”到客户端上运行的wcf服务(连接到客户端公共ip),则NAT表会知道我的身份,并将流量转发给最初打孔的客户?

我的最终实现将是:

端口转发<->管理应用程序后面的远程客户端<->服务器向服务器发出命令,该命令将它们中继到远程客户端。

我在尝试使用wcf时树错了树吗? 不久前,我开始使用原始tcp进行此工作,但是现在再次拿起该项目,我想走wcf路线,整理出滚动自己的原始tcp通信的所有开销。

感谢您提供的任何见解。

编辑:[乒乓]你好词?

使用双工服务,您可以在服务器和客户端之间进行独立的通信。

关于双工服务,请记住以下几点:

双工模型不会自动检测服务或客户端何时关闭其通道。 因此,如果服务意外终止,则默认情况下不会通知该服务,或者如果客户端意外终止,则不会通知该服务。 客户端和服务可以选择使用自己的协议来相互通知。

至于阻止您的服务正常工作的NAT /防火墙设置,确实是一个好问题。 但是,您的情况似乎与客户端和服务器之间的典型双向通信设置相符。 我不会怀疑您通过一点点反复试验就可以使事情正常进行。

如果我在端口5555上“打孔”与wcf服务的连接并收到回复,那么从/到该wcf服务地址的端口5555是否保留在NAT表中? 如果我要从服务器wcf服务发出进一步的连接,并“连接”到客户端上运行的wcf服务(连接到客户端公共ip),则NAT表会知道我的身份,并将流量转发给最初打孔的客户?

据我所知,这基本上就是NAT的工作方式。 只要可以通过端口5555上的入站/出站流量访问服务器的公共IP,就可以了。 您可能应该在Server Fault上对此进行研究或提出疑问。

我在尝试使用wcf时树错了树吗? 不久前,我开始使用原始tcp进行此工作,但是现在再次拿起该项目,我想走wcf路线,整理出滚动自己的原始tcp通信的所有开销。

我不认为您在吠错树。 这仅取决于您要完成的工作。 WCF将为您完成很多繁重的工作,并使您专注于应用程序的核心。 但是,如果您想了解有关套接字编程的更多信息,那么继续自己的网络API /库将是一件值得继续做的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM