友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
超脑黑客-第105部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
动他们的计算器硬件,这点可能对我们会有所不利。”
也就是说,假设真的将这件事情闹到法庭上的话,法官有可能判侵权,也有可能不判,概率也就是五五开的样子。
SAM协会完全没有什么事情,因为这个协会是公益性质的,不涉及用作商业用途。关键是SAM公司,这也是为什么对方只给马修递律师函,而没有找亚瑟的原因。
吃过晚饭,SAM公司的所有成员成员召开了全体会议。
【MAX:这件事情大家大概也知道了。德州仪器找上门来,送来这么一封律师函,目的不明。据我和火炬初步的分析,对方暂时还没有打算直接上法庭的意思。】
【火炬:是的。我咨询过朋友,也并不一定会判侵权。之前类似的案例并没有。其实我们这种情况,有点类似于买回一台计算机,然后对其升级和破解。我个人认为,这根本不算什么侵权,不用怕他们。】
【雏鹰:要是把他们给惹急了,真的把我们给告上法庭怎么办?对方可是德州仪器公司,财大气粗,我们根本无法和他们斗。】
……
【MAX:我们破解他们的计算器,实际上是将计算器的性能最大化,我敢肯定,因为我们破解的原因,导致了更多的人购买了他们的产品。也就是说,我们根本就没有损害他们的利益,相反,还有促进作用!】
【火炬:马修说得对,这点我们之前还没想到。这样一说,他们更没有理由告我们了,就算他们赢了,也最多只是禁止我们继续改造CDAD。我觉得没什么可怕的,大不了换一个品牌的计算器作为核心平台。】
【STONE:我觉得他们可能另有所图,发出这样一封律师函,只不过是想给我们施加压力而已,先不要急,等等看吧,等他们再次找上门来。】
林鸿有种感觉,这律师信只是他们投石问路的一个策略罢了,并不是简单地想要他们禁止破解和改造TI系列计算器那么简单。
……
他们几个人七嘴八舌,慢慢讨论着,最终倾向于林鸿的意见,再等等,坐观其变。
第二百二十章 重要事情
这件事情,虽然无论是律师还是各自的家长都认为因为缺乏先例,再加上他们又是学生创业,就算是被罚,也不会太严重,但是SAM成员心中还是被蒙上了一层阴影。
毕竟这是他们第一次遇到这种情况,之前根本没有想过此类方面的问题。
他们发现,要想真正做好一件事,除了埋头解决技术方面的事情,还会碰到其他一些预想不到的情况。之前这些琐事都被马修一个人给处理了,在这些人当中,马修算是对外能力最强的一个。
可是现在,这件事的出现,让他们真正感觉到了校园之外的冲击。这些事情如果只是安安分分在学校读书,是绝对碰不到的。SAM公司成为了他们涉足社会的一个媒介,给他们林鸿、亚瑟以及马修三人的内心都造成了比较大的影响,以至于以后他们各自创业的时候,都会事先考虑自己所做的事情,是否违反了当地法律,有哪些事情需要提前做好准备?
林鸿回到自己的房间,将这件事情抛在脑后,继续开始完善BASH外壳程序的系统调用功能。
由于已经完成了BASH的基本框架,实现起系统调用速度比之前要提升了十倍以上,地基打好了,上面的建筑建起来就快了。
所以,在午夜十二点之前,他就完成了总共二十多个系统调用,即将当初LINUS移植到MINIX里面的所有功能都给搞定了。
他登上CQCQ,看到LINUS正好也在线,于是便发了个消息给他,然后将源代码直接在线传给了对方。
【LINUS:伙计,你的效率真快,移植了BASH,以后的编写工作会要大大加速了!】
【STONE:下一步是不是可以将GCC移植过来?这样我们可以不用再切换到MINIX的环境中编译系统了,直接在LINUX平台下编译。】
【LINUS:我这两天本来正打算着手做这件事,但是现在我有一个新的想法。】
【STONE:说来听听。】
【LINUS:我觉得我们应该另外实现一个文件系统,而不是直接使用MINIX的文件系统。】
在此之前,为了降低编写代码的难度,LINUS从MINIX中借鉴了很多代码,其中最为完整的就是文件系统的实现。
【LINUS:MINIX的文件系统是专门为微内核设计的,当初在设计的时候也只考虑过教学用途,目的是为了更好的让学生理解,根本无法真正用在大型操作系统上,在性能上有着致命的缺陷,我想你也应该发现了这点。】
林鸿对此表示赞同。
MINIX系统在文件处理方面的效率的确有些慢了,刚开始的时候还感觉不到,但是在他编译系统的时候,就极其明显了,文件一多,搜索查找以及读取文件的效率就变得极为缓慢。在这点上,还比不上DOS系统。
MINIX的文件系统是模仿Unix的文件系统而设计的,其数据结构整体上和Unix文件系统大致相同,大致也可分为引导块、超块、柱面、节点等。
但是作者安德鲁这个系统本身是用来作为教学用的,所以在设计的时候,就考虑到要让学生能够比较容易理解,将其中的一些复杂实现就省略了,只保留了其骨架,进行适当修改之后,能够让其正常运转,并没有经过大量文件存储方面的性能测试。
当磁盘中文件比较少的时候,根本感觉不到其中的差异。
但是,LINUS在编写LINUX操作系统的时候,代码虽然不是很多,也就一万两千行左右,但是这一万两千行代码并不是只在一个文件里面,而是分布在多大几十个文件和上十个目录当中。
在编译系统的时候,编译器会按照编译索引文件Makefile来按照顺序对这些源代码一个一个地查找,并链接起来,然后再统一进行编译。
按理说来,只有这么点文件,这个过程应该是非常快的,但是事实证明,要想将LINUX的V0。00版本编译出来,都至少要花费四十分钟的时间。
当初林鸿一直PKZIP那么一个小软件的时候,都花费了十分钟左右的时间。
这样的效率实在太低了,要是在Unix或者DOS下,所花费的时间可能只有五分之一甚至十分之一。
LINUS于是便开始寻找到底哪里出现问题,为什么会导致编译速度如此缓慢。
最终他发现,原来这是MINIX文件系统设计方面的原因,他觉得有必要对这点进行改变了,他可不想将这样一个文件系统移植到LINUX里面,那简直就像是在美餐一顿的时候吃了一只苍蝇那么恶心。
身为技术宅LINUS是绝对不允许这样的情况出现在LINUX中的。
林鸿也觉得这个问题的确很重要,文件系统是操作系统的基石,如果地基不打好,会直接影响到上层建筑的高度。
【LINUS:我最近这段时间都在想这个问题,接下来会正是着手开始设计了。不过在此之前,我会先解决一件更为重要的事情。】
【STONE:更为重要的事情?】
【LINUS:每一个男人都要经历过的事情啊,你懂的,哈哈!】
【STONE:不懂。】
【LINUS:……差点忘记你的年龄似乎比我要小不少了。我要去追求一位心仪的女孩,这该懂了吧?】
林鸿看到LINUS的话,顿时有些汗颜。他刚刚的确没有反应过来,这也不能怪他,刚刚他们还在讨论技术方面的问题,突然之间就跳跃到追求女孩的话题上,作为一个世纪年龄才十四岁的中国籍技术宅来说,能想到这个问题才怪。
【STONE:原来如此。那预祝你马到成功,早日抱得美人归。】
【LINUS:哈哈,谢谢!】
【LINUS:对了,之前忘记跟你说了,你移植BASH的时候最好是按照POSIX的标准来,这样可以让我们的系统获得更大的兼容性,以后那些UNIX的用户转移到我们的LINUX中来也不会有任何障碍。】
【STONE:POSIX标准?】
【LINUS:这是IEEE组织为要在各种UNIX操作系统上运行的软件而定义API的一系列互相关联的标准的总称,最初起源于1985年的一个项目……】
接着,LINUS开始给林鸿详细介绍了一下这个标准的有关内容。
实际上,LINUS之前也对这个标准一点都不清楚,只是听学校的老师曾经说起过,因为这个标准是UNIX下的标准,统一规定了所有系统命令的实现细节。
于是,刚开始的时候,他便在MINIX的邮件讨论组中发布了一个求助帖子,寻求有关POSIX的相关标准下载地址,可是这个帖子并没有获得几个人的关注和回应,他没有找到POSIX的相关资料。
于是,他只好退而求其次,找来一份SUN服务器的UNIX使用手册,按照上面的命令调用一个个对这些系统命令进行实现。
但是,这份UNIX手册上并没有详细说明这些命令所实现的内部细节,只描写了结果。
例如LS命令,手册上只描写了这个命令的结果,以及可以加上哪些参数实现,如“LS…ALL”可以将当前目录下所有的文件,包括隐藏文件在内,都显示出来。
具体的实现方式,则是LINUS按照文件系统中的原理自己想出来的,例如首先要找到当前目录的引导区,然后再分析里面的文件节点,从这些节点中读出每一个文件的名称,大小以及创建日期等信息,然后再将其显示在显示器屏幕上。
要实现这些系统调用的功能,必须对底层的基本原理非常了解,当然这并不能难倒LINUS,否则他还谈什么编写自己的操作系统?
他按照UNIX手册和《操作系统:设计与实现》中所提及到的资料,总共实现了二十来个系统调用,这正是林鸿在LINUX中所实现的那些。
【LINUS:前一阵子才有一个朋友给我寄了几卷厚厚的POSIX的手册,不过既然现在你已经开始移植BASH了,接下来的工作你就继续做着吧。】
【STONE:从哪里可以找到POSIX的手册?】
【LINUS:这点我也不太清楚。不过,你身在美国,应该不难,去图书商城或者图书馆看看,应该可以找到。我这几本POSIX手册的出版社是……】
接着,LINUS将出版社和地址方面的信息全部提供给了林鸿,让他如果实在找不到,就按照这些信息去找,直接向出版社邮购也行。
【LINUS:还有,我一个朋友手里正好有基于苹果系统的服务器,上次我让他试用了一下CQCQ软件,他愿意免费将服务器端进行托管,你觉得怎么样?】
LINUS说的事情,是上次林鸿提到自己想要将CQCQ的服务器端托管到另外的地方,于是LINUS就留心了一下。
【STONE:可以。我把服务器端的安装文件传给你。】
随着访问用户的增多,SAM官方的那个服务器的性能有点跟不上了,再加上最近又出现了德州仪器公司的那档子事情,林鸿最终同意将服务器端转走。
原本林鸿还打算将CQCQ发布出去,让更多的人使用,并且继续改进,可是上次和凯文聊过一次之后,他的这个计划便搁浅了。
他决定重新设计CQCQ的结构,增加其安全性,然后再发布出去。
目前这个版本,暂时就用来内部几个人沟通吧,等将服务器端移走之后,林鸿便决定推荐这个软件SAM其他成员使用。
和LINUS结束聊天之后,林鸿便开始正式着手重新设计CQCQ软件。
第二百一十一章 加密算法
对CQCQ软件重构的想法,林鸿实际上在和凯文聊过之后,就开始在脑海中慢慢成型。
对发送消息进行加密这个问题比较好解决,据林鸿所知,目前有一些加密性能比较好的加密算法都是免费并且公开的,他可以直接拿来使用。
关键在于如何建立起负责消息传递中转的“秘密据点”。
这些据点必须具有随机的特点,不能一直固定,这样就可以增加被追踪拦截的难度。
现在这种一台服务器管理并转发所有在线聊天客户端的信息的模式肯定是行不通了,因为这种结构太过脆弱,只要对方攻占了服务器,整个聊天网络就会瘫痪。
林鸿经过慎重思考,觉得还是回归到自己最初的想法比较靠谱,也就是,把客户端和服务器端集成到一起。
也就是说,网络上有多少个是用整个软件的客户,那么就有多少台消息中继服务器,每一台服务器都可以对消息进行中转,构成一个庞大的没有任何规律的网状网络。
确定好了这个大体的方向之后,他脑海中各种灵感不断冒出,以至于他立刻从课桌里面拿出几张白纸,开始以极快地速度将这些想法以图形和简短的文字记录在这些纸上。
不一会儿,不断冒出的想法就记满了五张白纸,林鸿这才停了下来。
林鸿抽出其中一张,这张纸上,画了一张用方块代表计算机的网络拓扑图,用线条表示数据流动的方向。
林鸿重新回过头来,对之前的思路进行整理,然后又对这张图进行完善和修补。
接下来便又抽出另外一张纸,这张纸上画了四个方块表示计算机,中间用几条细线和一条粗线连接,细线表示少量数据交换,粗线表示真正的数据。
想了一下,林鸿又重新在它们之间添加了两条粗线,将原来的那一根粗线给划掉了。
经过刚才一阵头脑风暴,林鸿对于CQCQ新版的架构已经有了底稿,总体的设计框架已经想清楚了,接下来就是对它的技术细节的实现。
放弃中央控制服务器的架构,转而采用点对点的架构,消息可以通过每一个客户端进行中转。
不过,还是会存在一个对整个拓扑网络节点进行维护的“中继服务器端”,这些服务器端并不涉及到数据的中转,只保存客户端节点信息,例如IP映射地址,在线节点列表以及它们之间的拓扑结构。
考虑到稳定性方面的问题,这些服务器端不能只有一个,而是多个,并且他们共同维护同一张数据表,即每一台服务器上都有全部的备份,这样,即时某一台服务器下线了,整个通信网络也不会受到影响。
并且,按照林鸿现在的设想,就算是所有中继服务器都被关停或者下线,也不会造成整个通信网络的瘫痪,最多会影响到消息发送的即时性。
当网络中存在中继服务器的时候,客户端会和中继服务器保持连接,以便获知自己好友在线状态,要发送信息的时候,也会先向中继服务器查询整个拓扑结构,然后通过算法计算,随机找出一条最优路径,通过这条最优路径将消息发送到目的地。
而假设所有中继服务器都挂掉了,大家便无法确认好友是否在线,数据传输的时候,是一种广播式的行为,即向全网广播自己的消息,在传输之前,还得确认下一个节点是否在线,然后再传输,最终总会到达自己发送的目的。
不过这样一来,通信就失去了时效性,可能一条信息发送出去,快则几秒钟,慢则要好几分钟甚至上十分钟对方才能够收到,时间的长短和网络的拓扑结构有关。
这种结构,在安全方面也有保证。
一条信息发出,会首先通过自身的软件进行加密,然后再传送到“中转节点”中,那些节点都是匿名的,经过至少五次跳转之后,完全查不到来源路径,最终从“出口节点”对消息进行解密,然后再传递到目标客户端。
在整个流程中,唯一有可能被监听的环节就在于最后的“出口节点”,假设有人正好在出口节点监控,则就可以截获被发送的消息。
这个缺点林鸿也发现了,所以他在后来对图纸进行整理的时候,再次进行了完善。
他想了一个解决方案,那就是消息发送之后,会加密成一个数据包,然后再对这个数据包进行分割,包的各部分通过几条不同的路径最终传递到目的地,这样,就算某一个“出口节点”被监控了,他们截获的内容也只有一部分,没有截获其他包的话,根本无法对整个包进行解密。
理论上,同时将所有包都截获的可能性是趋近于零的,所以这样一来,通讯安全得到了最大限度的保障。
林鸿设计的整个新的架构,不但实现了信息传递的匿名性,而且消除了中心化的服务器端,极大地提升了软件的保密性和稳定性。
经过反复完善和优化,林鸿觉得最终没有问题之后,便开始着手进行代码编写。
由于他对加密解密方面还不是很了解,所先将其他基本功能暂时实现,将加密解密放到了最后。
到天亮的时候,新版CQCQ的原型便被编写出来了,首先实现的功能非常简单,只能传递文字版,并且还没有对其进行加密。
今天是周一,林鸿的课不多,上午在十点多的时候就已经没课,他便立刻奔向了学校图书馆。
今天来这里有两个问题需要解决。
一个是查找一下,看看有没有POSIX标准的书籍,另外就是学习一下加密解密算法方面的内容。
由于林鸿是图书馆的常客,另外又是最近风头正盛的SAM小组成员,图书馆中的不少工作人员都对他非常熟悉了,见到他之后,纷纷和他打着招呼。
林鸿微笑着一一回应,这几个月来,他算是彻底融入了拉丁学校的这个大集体当中。虽然这里也存在
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!