他了解到,即时通讯软件实际上早在六十年代就已经出现了,刚开始的时候是出现在多用户操作系统中,例如css(兼容分时)系统和lcs(x的前身)操作系统。
最初的时候,即时通信功能是被用来作为系统服务而开发的,例如“打印”或者“邮件”进程,普通用户和系统管理员之间,通常会用短信息或通知进行信息交流。
后来,开始用于局域网各计算机之间的通信。例如,林鸿第一次在学校机房上课的时候,亚瑟入侵他的计算机,使用的就是操作系统中自带的这样一个局域网通信功能。
互联网兴起之后,这些协议通信协议被越来越多的技术人员所了解,逐渐在各大主流操作系统上出现了一些即时通信软件。这些软件使用协议基本可以分为两种协议架构,一类是基于点对点,也即客户端和客户端直接进行通联,另外一类则需要客户端和服务器联系,然后再由服务器进行中级转发。
点对点的通讯比较简单,就和打电话一样,必须两人同时在线才能进行联系,如果有一方网络并不是很好,或者对方并不在线的话,通讯显然就不能进行。还有一点,点对点通信只能同时和一个人进行通联。
而服务器和客户端的架构,这类似bbs,有一台专门的服务器作为“中央枢纽”,大家都和这个“中央枢纽”联系,例如告诉他,我要发信息给某某,麻烦帮我转发一下。这样,就算对方当时不在线,等对方在线的时候,服务器再发给他也行,这就是延迟发送。
并且,第二种架构还有一个优点,那就是可以进行群聊,一个人对多人发送信息,让建立聊天室有了可能。
亚瑟和马修之前进行联系的那个名为xrc的通信软件,就是建立在这个架构之上。
林鸿专门针对这个软件进行了研究,发现这个软件所使用的协议是rc协议。
这个协议是1988年由芬兰人雅尔口*欧伊卡林恁开发出来的,是一个互联网实时文本消息协议,是专门为了bbs或团体成员之间进行内部沟通交流而设计的,允许点对点,也允许一对多,甚至还包括了文件共享方面的内容。
林鸿了解了一下,发现这个协议是公开的,也就是说向所有人都免费开放,就像是其他常见的cpp,dp,fp协议那样,可以随意使用,无论是用于商业用途和个人用途。
林鸿对其心生佩服,在科学技术的发展史上,不知道有多少这样的人做着贡献,从最开始的电子技术、无线电技术、到现代的电话技术、计算机技术,正是有着这些技术前辈们的无私奉献,做着基础方面的建设,才能够逐渐发展到今天。
林鸿心中琢磨着,这个软件自己编写出来之后,也免费给大家使用,贡献一份自己的力量。
林鸿之前去学校图书馆找了一下,并没有看到有关rc协议方面的资料,后来他又问了一下亚瑟和马修,他们两个也不知道到哪里能找到这方面资料。
后来他不得不去一些技术论坛进行询问,最终终于有一个人告诉他一个bbs讨论组的地址,林鸿登录到那个讨论组,最终找到了原作者的el地址,于是他向原作者雅尔口尝试着发了一封邮件,林鸿在邮件中明确地告诉他,自己想要编写一个基于rc协议上的软件,想要rc协议的细节。
原本还要等上一段时间,却没想到不到半个小时就收到了作者的回信。
雅尔口对于有人加入到rc协议软件开发的行为感到非常高兴,对于每一个人,他都会尽自己最大的努力去帮助别人,提供便利。
在邮件中,他给林鸿发来了详细的协议技术细节,而且还包括最新的升级版本,包括频道加密和更便利的文件共享功能。
原本,林鸿只想编写一个用于团队内部进行交流的沟通软件,这样,只需要有一个服务器端就行了,其他的都作为客户端和服务器端连接。
但是阅读了雅尔口的最新rc协议之后,他决定扩充一下之前所构想的软件功能,不局限于一个服务器端,而是多个,即在软件中同时集成服务器端和客户端。也就是说,每一个用户都可以将自己作为中继服务器,给大家提供服务。并且,服务器端之间也可以进行通联。
实际上,这种架构和业余无线电非常相似。在无线电通信中,有一种特殊电台称为“无线中继台”,能实现信号的中继和放大,从而延伸无线电网络的覆盖范围。
在无线电发明的早期,人们还没有发现短波信号的远距离传播特性,而中、长波无线电地波通信因为大地吸收损耗,距离有限。早期的业余无线电爱好者就通过人工中转的办法来扩大通信范围。原理和接力一样,通过火腿志愿者地热心帮助,火腿们可以仅仅通过长波就可以将无线电信号送至大洋彼岸,甚至地球的另外一端
林鸿决定修改架构,让每一个客户端都同时具备“中继台”功能,从而可以极大地增强整个即时通信系统的稳定性。因为如果仅仅只有一个服务器端的话,一旦这台服务器由于某种原因出现问题,那么其他人之间的通信就会根本无法进行。
而重新设计之后的架构则不会如此,如果其中一个节点损坏,消息还是可以通过另外一个节点传输到目的地。这其中信息传输的路径从理论上来讲有无数条,只要通过最短路径算法找出最短的那条即可。
至于编写这个软件的语言,林鸿最终选择了c语言,他在刚开始的时候就考虑到了跨平台的需要,目前他所接触到的高级语言中,只有c语言能够满足这个要求。
……