msn的通讯原理????????
不知道msn的私人聊天是不是p2p。
我用个软件测试过,用户的聊天信息,应该是tcp方式,通过服务器中转的。
因为msn的服务器有通知服务器和接线服务器。
我判断大致过程是, 通知服务器 告诉用户,对方有一个聊天请求, 然后把两个人调度到一个接线服务器,接线服务器tcp方式连到两个用户,给两个聊天的用户转发消息。 除非用户关闭了与对方聊天的窗口,否则,接线服务器一直保持着两方的接线。
我考虑了下,如果真是这样的模型的话,好处就是,在接线服务器上,一个socket代表与一个好友的通讯句柄,逻辑上比较清晰。 而且每个socket上的通讯量很小。再有就是这样好象比较很容易的做大负载分布的均衡。 接线服务器可以多台。
但我一直在想,每个服务器上要维护很多的tcp的socket。这样的开销到底大不大?
以上的判断可以说是猜想的,可能根本就是判断错误,因为qq的据说就是采用p2p的方式来实现私人聊天的,msn好象没什么理由把这个负担加上服务器上,想不明白,上来问问比较了解行情的高手们,呵呵。
[解决办法]
一般的网络都不支持TCP P2P的,但是一般的支持UDP的打孔P2P。
所以MS的MSN是中转的,但是这个确实比较耗费服务器了。