本节书摘来华章计算机《计算机网络:自顶向下方法(原书第6版)》一书中的第2章 ,第2.1节,(美)James F.Kurose Keith W.Ross 著 陈 鸣 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
第2章 应 用 层
网络应用是计算机网络存在的理由,如果我们不能构想出任何有用的应用,也就没有任何必要去设计支持它们的网络协议了。自因特网发明以来,的确已开发出众多有用的、有趣的网络应用。这些应用程序已经成为因特网成功的驱动力,激励人们在家庭、学校、政府和商业中利用网络,使因特网成为他们日常活动的密不可分的一部分。
因特网应用包括20世纪70年代和80年代开始流行的、经典的基于文本的应用,如文本电子邮件、远程访问计算机、文件传输和新闻组;还包括20世纪90年代中期的招人喜爱的应用——万维网,包括Web冲浪、搜索和电子商务;还包括20世纪末引入的两个招人喜爱的应用——即即时讯息和对等(P2P)文件共享。自2000年以来,我们见证了流行的语音和视频应用的爆炸,包括IP电话(VoIP)、IP视频会议(如Skype);用户生成的视频分布(如YouTube);以及点播电影(如Netflix)。与此同时,我们也看到了极有吸引力的多方在线游戏的出现,包括《第二人生》(Second Life)和《魔兽世界》(World of Warcraft)。最近,我们已经看到了新一代社交网络应用如Facebook和Twitter,它们在因特网的路由器和通信链路网络上创建了引人入胜的人的网络。显然,新型和令人兴奋的因特网应用并没有减缓。也许本书的一些读者将创建下一代招人喜爱的因特网应用。
在本章中,我们学习有关网络应用的原理和实现方面的知识。我们从定义几个关键的应用层概念开始,其中包括应用程序所需要的网络服务、客户和服务器、进程和运输层接口。我们详细考察几种网络应用程序,包括Web、电子邮件、DNS和对等文件分发(第8章关注多媒体应用,包括流式视频和IP电话)。然后我们将涉及开发运行在TCP和UDP上的网络应用程序。特别是,我们学习套接字API,并浮光掠影地学习用Python语言写的一些简单的客户-服务器应用程序。在本章后面,我们也将提供几个有趣、有意思的套接字编程作业。
应用层是我们学习协议非常好的起点,它最为我们所熟悉。我们熟悉的很多应用就是建立在这些将要学习的协议基础上的。通过对应用层的学习,将有助于我们认知协议有关知识,将使我们了解到很多问题,这些问题当我们学习运输层、网络层及数据链路层协议时也同样会碰到。