计算机网络是当今计算机科学与技术学科中发展最为迅速的技术之一,也是计算机应用中一个空前活跃的领域。计算机网络技术已经成为信息技术与信息产业发展的基础,也可以说是现代信息社会发展的基石。
如果将计算机网络的基础“分组交换”概念的提出与ARPANET的出现作为计算机网络技术发展起点的话,那么计算机网络技术已经历了50多年的发展。回顾计算机网络技术与应用发展的历程,我们如今可以清晰地看到它是沿着“互联网-移动互联网-物联网”的轨迹,“由小到大”一步一步地发展、壮大,“由表及里”地渗透到社会的各行各业与各个角落,开启了互联网与传统行业跨界融合的新趋势,按照“互联网+”的模式,推动着信息社会的发展。如果说互联网的作用是扩大了信息社会人与人之间信息共享的广度,移动互联网的作用是扩大了信息共享的深度与灵活性,那么物联网将利用各种感知技术,构建覆盖世界上人与人、人与物、物与物互联的网络信息系统。随着移动互联网、物联网技术与产业的发展,计算机网络技术与知识更新的速度正在进一步加快,从事计算机网络课程教学的教师有了更加广阔的发展空间,同时也面临着越来越大的挑战。
作者记得1984年第一次在南开大学计算机系开设计算机网络课程时,计算机系的近百名学生中只有7位学生选修了这门课程,人们对计算机网络都很陌生。如今互联网与电力一样,成为了人们须臾不能离开的基本生活与工作环境。作者在30年的网络课程教学与科研工作中,跟踪着计算机网络技术研究与应用的发展,见证了计算机网络从互联网、移动互联网到物联网的高速发展过程。作者在1995年参与研究与起草“天津市信息港工程规划纲要”,至今也有20年了。在这20年里,作者也见证了我国互联网技术与信息产业的发展历程。作者在参与和主持城市信息化建设“九五”、“十五”与“十一五”发展规划的研究工作中,学会从宏观的角度去认识网络技术的发展,体会网络技术对信息产业与社会经济发展的重大影响。这些经历使得作者逐渐对计算机网络技术有了一个更加深刻、全面的认识。我国是信息技术应用的大国,但不是信息技术强国。要实现建设“网络强国”之梦,必须培养出一大批网络技术精英,大学在培养高层次网络技术人才方面应该走在前面。作者在多年教学的过程中逐渐理解了“授人以渔”与“授人以鱼”的区别。作者希望通过总结计算机网络技术的3个发展阶段中,前人的研究方法与目前的进展情况,让读者(尤其是信息技术学科的硕士、博士研究生与技术人员)能够了解网络技术发展的现状,了解研究与应用发展的趋势,在学习、实践、总结、提炼的基础上,学会选题和研究。这是作者的初衷,也是一名教师的责任。
这本教材在写作上注意贯彻了“新、精、实、活”的原则。
“新”: 教材内容的选题上,注意贴近网络技术的最新发展与研究的热点。
“精”: 适度减少成熟技术的份量,精选与增加了新技术与新发展的内容。前言计算机网络高级教程(第2版)“实”: 从科研实践中提炼“近似实战”的网络编程能力训练的选题。
“活”: 能够适应“因材施教”的教学方法与不同基础学生的学习。
我们从教材第2版的10章内容的选题与结构安排中可以看到以上的特点。
第1章用网络技术发展过程中不同阶段的标志性研究成果与具有代表性的科学家,以及大量的照片、图表,对计算机网络技术发展的过去、现在与未来做了较为全面的综述。
第2章对支撑网络发展的各种传输网技术进行了系统分析与梳理,对目前发展迅速的无线通信技术进行了较为深入的讨论。
第3章对支撑Internet运行的IP协议(尤其是IPv6协议)、路由器技术的发展,以及下一代互联网(NGI)体系结构研究的现状进行了系统讨论。
第4章从分布式进程通信实现方法的角度讨论了TCP/UDP协议与RTP/RTCP协议,系统地介绍了支撑物联网(IoT)发展的容迟网(DTN)技术研究的现状。
第5章对Internet应用与应用层协议分类,各种协议的基本工作原理与实现方法进行了系统讨论。
第6章对P2P技术的特点、P2P网络的分类以及各种P2P 应用系统的工作原理与实现技术进行了系统讨论。
第7章对移动互联网与移动IP协议的基本概念与关键技术,尤其是移动IPv4与IPv6的特点进行了系统讨论。
第8章对无线自组网络(Ad hoc)与无线传感器网络(WSN),以及目前研究的热点——无线地下、水下、多媒体传感器网络(UWSN、WUSN、WMSN)、无线人体传感器网络(WBSN)、无线传感器与执行器网络(WSAN)与无线纳米传感器网络(WNSN)的概念、特点、体系结构、关键技术的研究与进展做了较为系统的介绍。
第9章对IoT的概念、特点,IoT与Internet的关系,以及IoT体系结构、关键技术的研究与进展进行了系统讨论。
第10章对网络安全概念、关键技术以及涉及Ad hoc、WSN与RFID应用系统的安全技术研究进行了系统讨论。
在本书的修订过程中注意解决好以下3个问题:
1. 处理好网络课程中“变”与“不变”的关系
本书修订过程中,作者体会最深也是最困难的问题是:如何处理好网络课程中“变”与“不变”的关系。作者有两点认识。一是网络技术发展得实在是太快了,个人的研究工作与阅历不可能涉及各个方面。个人的研究工作也就局限在网络技术中的几个比较窄的方面,深度也十分有限,因此要系统地总结网络技术领域的研究与进展难度很大。作者深知,在网络技术领域,选取出其中任何一项网络新技术、一个目前研究的网络热点问题,就可以写一本书。很多新技术、新标准与新的研究文献看明白就很难,看明白之后还要对一类问题做综述,并且要在一本教材中将这些新内容汇聚成一个体系,实在是难上加难。尽管作者也经常与同行交流,仍然经常感到力不从心,但是出于网络教学的需要和本着对学生负责的态度,作者还是坚持完成了本书的修订工作。二是要在教材中增加新技术,反映技术研究的新进展,那么在做“加法”的同时,必须先做好“减法”。在增加网络新技术研究内容时,必须相应地压缩成熟技术内容的分量。而压缩成熟技术内容是与保持课程体系的完整性与系统性相矛盾的。我们不能简单地通过减少篇幅的办法来实现,而是要通过从更高的认知角度,采用综述的方法,才能达到既减少了篇幅,又不破坏知识的系统性的目的。例如,IP协议很重要,关于IPv4与IPv6深层次的讨论足可以写几本书。然而对IPv4与IPv6知识没有深层次的理解,那么对“下一代互联网”技术路线与体系结构的研究往往停留在“就事论事”的层面。本书采用分专题对比的方式,通过总结、归纳的方法,引出深层次的研究问题。这样既减少了篇幅,又不破坏知识的系统性。同时,对于当前很多新的研究热点问题也不可能全面地展开,作者注意标注了较多的参考文献,有兴趣的学生可以通过查找论文来深入了解研究工作的进展情况。修订过程让我们体会到:只有立足于自身与科研教学团队在网络技术研究中对新技术发展的正确理解与把握,才有可能处理好网络课程内容“变”与“不变”关系,帮助读者对网络新技术的发展有一个比较全面的认识。
2. 处理好理论学习与实际能力培养的关系
目前本科生与研究生在毕业求职过程中反映出的实际动手能力弱的缺陷,与教学过程中的硬件实验、软件编程训练量不足以及要求不严有直接关系。要提高教学质量,增强学生就业的竞争力,就必须加强实践环节的训练。目前网络课程教学急需解决理论与实际的结合,加强学生实际能力培养的问题。网络是一门应用性与实践性很强的课程。学生只有通过严格的实践训练,才有可能真正理解解决网络问题的基本方法。为了处理好理论学习与实际工作能力培养相结合的问题,作者与教学科研团队结合多年实际科研、开发的经验,从研究实践中总结出近50个“近似实战”的网络协议与应用软件,以及网络安全软件编程题目,分别精选与整理成《计算机网络高级软件编程技术(第2版)》与《网络安全高级软件编程技术》两本辅助教材,与作为主教材的本书构成一个能够支持“以能力培养为导向”的教学改革理念的研究生网络课程教学体系。
3. 处理好教师“因材施教”与学生“自主学习”的关系
研究生教学要服务于为国家培养一批“计算机专业精英”的目标,传统的“以教师为主导”的教学模式必须改革。作者在设计这套教材体系时注意处理好如何适应教师“因材施教”与学生“自主学习”的问题。这套教材在南开大学计算机系研究生学位课程的多年使用中,教师采取的方法是:结合自己的科研心得,按照主教材的章节结构与基本内容,用12周(每周一次,3学时)做10~12次“导读”式的授课;每隔一周结合教学内容在《计算机网络高级软件编程技术(第2版)》中选择一个题目,安排学生完成一次“近似实战”课题的网络软件编程练习。对于一般的学生,基本的要求是一学期完成6次网络软件编程练习;对于有兴趣与基础好的学生,不限制他们完成网络软件编程练习次数。在读者执教的经历中,甚至有的学生做完了22道Windows环境中的网络软件编程与12道Linux环境中的网络安全编程练习。在教学实践中,希望教师本着对学生负责的态度,帮助基础比较差的学生完成6次基本的网络软件编程练习,指导有能力的学生通过“自主学习”的方式完成更多的实践训练内容,实现“让基础差的学生‘走’起来,让基础好的学生‘跑’起来”的“因材施教”教学理念。这套教材在南开大学计算机系以及很多大学相关专业的教学实践中,学生的反映与教学效果是好的,对提高研究生网络理论水平与实际工作能力发挥了积极的作用。
这本教材涉及的内容很广,作者阅读了很多书籍与文献,也向同行请教了很多问题,因此也可以说它汇聚了很多人的研究心血,作者只是将个人能够理解的部分按照自己的思路编写出来。书中对某一方面的技术理解有错误或不准确,以及在总结和参考文献标注中出现挂一漏万的问题在所难免,恳请读者批评指正。
本书由吴功宜完成了第1~5章、第9章、第10章的写作,吴英完成了第6~8章的写作,全书由吴功宜统稿。牛秀卿、刘立新老师在资料查询、核对方面做了大量工作。
本书可以供计算机、软件工程、信息安全、通信工程、微电子、电子信息等相关专业的硕士、博士研究生的计算机网络课程教材或教学参考书,也可以供信息技术领域的工程技术与技术管理人员在学习和研究网络技术时参考。
作者在本书的写作过程中得到了南开大学计算机系网络实验室刘瑞挺教授、徐敬东教授、张建忠教授、张玉副教授与许昱玮老师的帮助,在此谨表衷心感谢。感谢董大凡、王珺、刘乾、杨凯、许昱玮、潘怡然、王伟为《计算机网络高级软件编程技术》第1、2版所做的写作与修订工作,以及张建忠、张健、许昱玮为《网络安全高级软件编程技术》的写作做出的贡献。感谢兄弟院校老师多年的支持与帮助。
吴功宜
南开大学计算机与控制工程学院计算机系
2015年3月12日