大数据时代下的通信需求——TCP传输原理与优化(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-09 01:30:31

点击下载

作者:徐永士,王新华

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

大数据时代下的通信需求——TCP传输原理与优化

大数据时代下的通信需求——TCP传输原理与优化试读:

前言

“云计算”、“大数据”这些概念和词汇在网络中随处可见。基于这些技术的一些服务也日益成为人们生活的一部分。如果我们深入想一想就会发现,推动这些改变的因素有哪些呢?首当其冲的当属人们的需求。快捷而廉价的沟通方式永远都是技术进步的动力。于是,一些传统的内容服务提供商之间就展开了一系列竞争,“做大”、“做强”变得不可避免,换句话说,也就是如何更加充分地利用这些资源。

那么,这些服务商都有哪些资源呢?“计算能力”、“存储能力”、“数据传输”,这些就是它们的基本要素。虽然现在硬件的购买成本越来越低,但是这并不意味着拥有成本或运维成本会下降。规模效应成了一个强劲的驱动力。对于“计算能力”和“存储能力”来说,也要更加充分地利用这些硬件资源。例如,对于代表“计算能力”的CPU,一个策略是不让CPU空转,另一个就是干脆关掉那些暂时空闲的机器。在“数据传输”方面,尽量减少需要传输的数据量是一个策略,如数据压缩、缓冲等,但是更根本的策略是提高数据传输的能力。网络设备性能的提升只是其中的一个侧面,如何更加充分地利用网络传输能力是另一个重要的侧面。

当前的互联网是一个无中心的自治网络。从网络传输的角度来看,一个瓶颈因素就是关键链路,主干网上的交换机的性能和链路的电气特性决定着网络传输的能力。这犹如现实生活中的高速公路,或者城市里的主马路,早、晚高峰的时候,每个人都想快速到达自己的目的地,但是在某些情况下,我们看到的是水泄不通的马路和焦急等待的目光。与现实生活中的道路拥堵不同的是,互联网上没有主动调度的“警察”。也就是说,在互联网上缺乏宏观的中心调控。当然这种中心调控的策略也非常不现实,因此,侧重微观调控的拥塞控制算法,成为影响网络性能的一个重要因素。

有关拥塞控制算法的研究由来已久。拥塞控制算法有几个显著的特点。首先,受限于框架,能够被用于调节拥塞的内核变量较少,主要有当前时间、往返时延等,以及丢包事件。因此,如何估计有效带宽、增减的幅度等都需要在算法中仔细考量。网络有延迟,当前的网络状况,影响的实际上是已经发出去的包。这就带来另外的难度。其次,网络(尤其是主干网络)是公共资源,如何公平有效地使用,这个问题不容忽视。网络的用户特性是短连接占有很大的比例,但是长连接的影响更大,也就是说,在资源长时间使用的情况下,如果短连接几乎得不到占有的机会,实际上就是长连接独占了资源,这就会带来极大的不公平。当然衡量公平性的方式有很多,这也是算法需要考虑的地方。在网络快速传递数据包的情况下,高速的计算非常必要,对应于代码,Linux 系统已经在内核中实现了网络的大部分功能,因此留给算法的“空间”就很有限。从编程的角度来看,要求代码短小精炼,任何小的错误都可能导致内核停止、崩溃,因此要非常谨慎。

如何准确、有效地确定网络的各种参数,也是随之而来的一个重要问题。现实中使用的网络具有动态性,可重复性低,因此为了能更好地研究网络,不仅需要测试真实网络的带宽、时延、丢包率等,还需要网络模拟工具,尤其是在研究公平性方面。

网络的发展速度非常快,时下兴起的“云计算”、“大数据”、“电子商务”等,更是将网络再次推向了一个高速发展期。从用户的角度来看,数量巨大的手持智能终端是一个巨大的业务来源,众多商家都希望在这个产业链条上有所斩获。另一方面,大型计算中心内部在巨大的压力下,也在重新思考网络资源,大而统一的分配模式终将让位于精细化、个性化的定制网络,软件定义的网络(SDN)是发展的另一个方向。这些新兴的概念和实践在本书的最后也有所讨论。

本书第1~5章侧重理论,第6~8章较深入地讨论了相关理论在Linux操作系统上的实现,作为本书的最后一章,第9章讨论了当前的热点和方向。请读者根据需求自行选择对照阅读。

本书得到了中科院高能物理研究所计算中心的大力支持。该数据中心在机房建设方面积累了丰富的实践经验,在此特别感谢其为本书付出的辛勤工作。编著者第1章概述1.1 快速发展的互联网1.1.1 互联网的发展规模

众所周知,互联网(万维网,Internet)是在美国较早的军用计算机网络ARPANET的基础上,经过不断发展变化而形成的一个国际性的计算机通信网络集合体。它集现代通信技术和现代计算机技术于一身,将各种各样的物理网络联合起来,构成一个整体,实现全球范围内广泛的信息交流和资源共享。

以互联网为代表的信息网络已经逐渐渗透到当今社会的各个领域,成为国家发展和社会进步的重要支柱,以及知识经济的基础载体和支撑环境。它的重要性就如同铁路和高速公路的蓬勃发展给工业社会带来了广泛而深远的影响一样,必将成为 21 世纪全球最重要的基础设施之一。如图1.1所示为部分互联网的路由路径的可视化图,右下角的小图为某部分末端的放大图,可以想象互联网的规模和复杂程度。图1.1 互联网的路由路径可视化图(部分)

据中国互联网信息中心CNNIC调查报告,截至2014年6月底,我国网民数量已达到6.32亿,互联网普及率为46.9%,手机网民规模达到5.27亿,手机上网比例增长至83.4%,超过了计算机。截至2014年6月,中国互联网网站数约有273万。预计2015年,我国互联网服务业收入将突破6000亿元,直接吸纳就业超过230万人,网民数超过8亿人,骨干网总带宽较“十一五”期末增长10倍。

人们不断提高的信息服务要求,推动着互联网的蓬勃发展。以互联网为基础的信息技术响应人们的需求,呈现出多样化的发展趋势。一方面,为了满足人们摆脱环境与设备束缚,随时、随地获取信息服务的需求,3G、LTE、WiMax等新型无线移动通信技术开始逐步普及,并成为重要的互联网接入方式;另一方面,针对数据中心、云计算集群等海量数据交换的应用需求,千兆网络、光纤通信等超高速数据传输技术也在互联网中广泛应用,并构成了互联网核心网络的联通脉络。

不难预见,超高速的光通信技术、高速无线通信技术、网格计算和生物计算技术的研究进展会使网络技术在未来十年内产生新的飞跃,朝向以“更大、更快、更及时、更方便、更安全、更可管理和更有效”为标志的下一代互联网发展。1.1.2 争相建设的下一代互联网

基于这样的共识,下一代互联网络及其应用的研究引起了普遍关注,世界各国相继启动了一系列的重大研究计划与项目,例如,美国的VBNS(Very high-speed Backbone Network Service)、Internet2和NGI(Next Generation Internet)三大研究计划,就是为了向美国的教育和科研机构提供世界最先进的信息基础设施,并保持美国在高速计算机网络及其应用领域的技术优势,分别在不同的技术和应用层面上共同打造一个全新概念的下一代互联网络。

与此同时,其他国家和地区也相继开展了下一代高速互联网络的研究,英、德、法、日、加等发达国家目前除了拥有政府投资建设和运行的大规模教育和科研网络以外,也都建立了研究高速计算机网络及其典型应用技术的高速网络试验床,例如,加拿大的CAnet4、欧盟的下一代互联试验网主干网GEANT(Gigabit European Academic Network)和亚太高级网络联盟APAN (Asia-Pacific Advanced Network)等。中国相关机构也在积极开展下一代互联网发展战略研究,其中,下一代互联网NSFCNET在北京建立了连接六个节点的2.5~10Gbps高速计算机互联研究试验网,分别以1Gbps速率连接我国的学术网络CERNET和CSTNET,同时连接国际下一代互联网络交换中心STARTAP和亚太地区高速网APAN交换中心Tokyo-XP,完成了与国际下一代互联主干网Abilene和VBNS的互联,是我国第一个与Internet2实现互联的计算机网络。

就目前的现状和未来的发展而言,下一代互联网的骨干带宽必将呈现指数增长的趋势。自2002 年以来,美国的下一代互联试验网主干网 Internet2 和欧盟的下一代互联试验网主干网GEANT不仅在带宽方面不断升级,还在2002年完成了5Gbps的高速互联;2004年2月,Internet2的独立高速试验床Abilene的骨干带宽从2.5Gbps全面升级到10Gbps;亚太高级网络联盟(APAN)也发起了GTRN(Global Terabit Research Network)计划,旨在推动骨干带宽的升级和实现全球互联。下一代互联网建设与发展的各种趋势表明:大规模的高速网络试验环境已经形成,未来几年内,互联网骨干将全面升级到支持近10Gbps的高速链路,而且很有可能持续增长。1.1.3 永无止境的带宽需求

与此同时,各种新型应用的产生对网络的数据传输需求也在不断提高。现在已经有越来越多的研究人员开始经常利用这些高速网络传输10Gbps~1Tbps的数据,代表性的应用有量子物理学、地球观测、生物信息科学和射电天文学等方面的各种数据密集型的网格应用,以及Web站点的镜像和基于push的Web高速缓存更新等应用。

于是,虽然下一代互联网的骨干带宽呈现指数性的增长,实践中上述海量数据传输业务的用户却并没有切身感受到网络带宽剧增所带来的好处,于是人们开始怀疑高速网络中传输协议的性能。据统计,当前在所有因特网的数据包中,大约有95%的数据包传送使用了TCP协议,因此针对TCP协议相关机制的研究很有实际意义。

为了澄清事实,加州理工大学的Sylvain Ravot通过试验手段分析和评价了Internet上流行的TCP Reno协议的传输性能。在互联GEANT和Internet2的WaveTriangle试验床上,研究人员持续监测芝加哥超级计算中心与CERN(欧洲核子研究中心)之间1Gpbs的链路,测量结果表明端到端的有效吞吐量(Goodput)甚至还达不到400Mbps。之后,美国北卡罗来纳州立大学的Lisong Xu借助仿真试验也证实:TCP协议在高速网络中确实存在效率问题。

进一步的细致分析将问题症结锁定在 TCP 拥塞控制中“加性增加乘性减小”(AIMD,Additive Increase Multiplicative Decrease)的调节机制及其相关系数上。为了论述方便,我们举例说明:假设高速链路带宽是10Gbps,分组大小为1500字节(byte),回路延时RTT(Round Trip Time)为100ms,则发送端达到10Gbps吞吐量时,发送端拥塞窗口大小应为83 333个分组,依据AIMD窗口调整规则,TCP拥塞避免阶段所经历的时间为4167s,约1.2h,这意味着丰富的带宽资源在长时间内都无法得到充分利用。于是,实践中网络数据传输效率低下便成为必然。究其根本原因是传统的AIMD拥塞控制算法在高速网络中适应性不强,效率低下,无法适应高速网络环境。1.1.4 网络传输还需要加速

上述工程实践中发现的问题引起了众多网络研究者的关注,研究适应于高速网络的拥塞控制算法成为网络研究的新热点。在较短的时间内,研究者已经相继提出了若干新的改进算法。总的来说,高速网络拥塞控制的研究从最初单纯解决TCP的低效问题,到围绕公平性、稳定性及收敛性等方面开展了一系列更深入的研究。

传输层(Transport Layer)是互联网分层网络模型中的第四层,其主要任务是屏蔽网络的底层细节,为上层的网络应用提供端到端的总体数据传输控制。拥塞控制(Congestion Control)作为传输层的一项重要的网络传输控制任务,其主要功能是解决端到端网络连接在数据传输过程中存在的数据流量与网络传输能力适配问题。优秀的拥塞控制算法可以在充分、公平地利用网络传输资源的同时,避免网络链路因数据过载而造成的丢包、延迟增加、传输速率下降等拥塞崩溃问题。作为底层网络与上层应用的衔接环节,传输层中的拥塞控制算法在整个互联网网络体系结构中扮演着举足轻重的角色。

随着计算机通信技术的飞速发展,新型网络通信技术和应用服务形式不断涌现,互联网的异构性和复杂性也随之日益增强,现在的互联网无论是在底层网络性质方面还是在上层应用需求方面,都较设计之初产生了根本性的变化。传统的传输层拥塞控制技术已经难以适应互联网日益复杂的网络结构与应用需求,并逐步成为了整个互联网系统的性能瓶颈。

但是到目前为此,在该研究领域仍然存在很多开放性问题。目前的多数研究没有充分强调模型分析的重要性,缺乏总结性结论和定律的归纳与描述,同时在拥塞控制机制和算法的设计上,过分依赖基于经验的启发式设计结合典型、有限和局部仿真试验验证的设计方法,得到的算法往往是静态和准静态的,不能适应快速变化的动态网络化环境。

高速网络环境下拥塞控制算法的优化设计还存在很大的研究空间。不仅如此,设计适应当前互联网网络结构与应用需求的新型传输方案,改进网络设备的性能,研究复杂异构网络中传输控制的关键技术与核心理论问题,都已经成为目前网络研究领域的重点和热点。1.2 网络互联的基础——网络协议

网络协议代表着标准化,规定了计算机信息交换中消息格式和意义,是通信双方都必须遵循的一系列规则。在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式及相关的同步问题。由此可见,网络协议是计算机网络不可缺少的组成部分。

为了简化网络设计的复杂性,通信协议采用分层的结构,各层协议之间既相互独立又高效地协调工作。对于复杂的通信协议,其结构应该有层次。分层的协议可以带来很多便利。

1.降低了问题的复杂度,易于实现和维护

各层不需要知道它的下一层是如何实现的,而仅仅需要知道下一层通过层间的接口所提供的服务。由于每一层只实现一种相对独立的功能,因而可将一个难以处理的复杂问题分解为若干个较容易处理的更小一些的问题。这样,整个问题的复杂度就降低了。

这种结构使得实现和调试一个庞大而又复杂的系统变得容易,因为整个系统已经被分解为若干个相对独立的子系统。

2.各层之间相互独立,灵活性好

某一层发生变化时,只要层间接口关系保持不变,则在该层以上或以下各层均不受影响。此外,对某一层提供的服务还可进行修改。当某层提供的服务不再需要时,甚至可以将该层取消。

3.促进标准化工作

层级结构下,每一层的功能及其所提供的服务都需要精确的说明。目前广泛使用的有两种标准化模型,分别是改进后的OSI模型和TCP/IP模型,以下详细介绍。1.2.1 OSI参考模型与TCP/IP参考模型之争

为了使不同体系结构的计算机网络都能互联,国际标准化组织ISO于1977年成立专门机构来研究这个问题,不久即推出了一个试图使各种计算机在全世界范围内互联成网的标准框架,即著名的开放系统互联基本参考模型OSIRM(Open Systems Interconnection Reference Model),简称 OSI。OSI 试图达到一种理想境界,即全世界的计算机网络都遵循这个标准,使得全球所有的计算机都能够很方便地进行互联和交换数据。在20世纪80年代,许多大公司甚至一些政府机构都纷纷表示支持OSI。当时看来似乎在不久的将来,全世界一定都会按照OSI制定的标准来构造自己的计算机网络。然而到了90年代,虽然整套的OSI国际标准都已经制定出来了,但由于因特网已抢先在全世界覆盖了相当大的范围,而与此同时却几乎找不到有什么厂家生产出符合OSI标准的商业产品。而因特网使用的体系结构是TCP/IP。法律上的国际标准OSI并没有得到市场的认可。非国际标准TCP/IP现在获得了最广泛的应用,所以TCP/IP被称为事实上的国际标准。

两种主要的体系结构对应层次分布图及TCP/IP的三个服务层次如图1.2所示。图1.2 OSI和TCP/IP体系

目前一般认为,OSI只获得了一些理论研究的成果,但在市场化方面OSI则事与愿违地失败了。现今规模最大的、覆盖全世界的计算机网络——因特网使用的是TCP/IP体系。OSI/RM失败的原因可归纳为以下几方面。(1)网络功能在各层的分配差异大,链路层和网络层过于繁重,表示层和会话层又太轻。为此,一般只采用五层模型。(2)OSIRM有关协议和服务定义太复杂且冗余,很难且没有必要在一个网络中全部实现。例如,流量控制、差错控制、寻址在很多层重复。(3)高层的标准化工作唯一性太差,某些功能究竟在哪层不明确。1.2.2 OSI模型

历史上,在制定计算机网络标准方面起着重大作用的两大国际组织分别是国际电报与电话咨询委员会(CCITT)和国际标准化组织(ISO)。虽然它们工作领域不同,但随着科学技术的发展,通信与信息处理之间的界限开始变得比较模糊,这个领域也就成了CCITT和ISO共同关心的领域。1983年,ISO发布了著名的ISO/IEC 7498标准。该标准定义了网络互联的7层框架,也就是开放式系统互联参考模型。OSI 是一个定义良好的协议规范集,并有许多可选具体协议来完成类似的任务。OSI将计算机网络通信抽象成如图1.3所示的模型。图1.3 OSI模型中的数据传输OSI将计算机网络体系结构划分为以下七层,各层的名字和基本功能如表1.1所示。表1.1 OSI 模型各层功能简介

从表 1.1 可以看出来,第一层物理层涉及的是纯电气特性,与软件的关系不大。因为物理层传送的是原始的比特数据流,即设计的目的是为了保证当发送时的信号为二进制“1”时,对方接收到的也是二进制“1”而不是二进制“0”。因而就需要定义哪个设备有几个针脚,其中哪个针脚发送的多少电压代表二进制“1”或二进制“0”。还有诸如一个bit需要持续几微秒、传输信号是否在双向上同时进行、最初的连接如何创建和最终如何终止等问题。

物理层的主要功能和提供的服务如下。(1)在设备与传输媒介之间创建及终止连接。(2)参与通信过程使得资源可以在共享的多用户中有效分配,例如,冲突解决机制和流量控制。(3)对信号进行调制或转换,使得用户设备中的数字信号定义能与信道上实际传送的数字信号相匹配;这些信号可以经由物理线缆(如铜缆和光缆)或无线信道传送。

OSI 作为一个框架来协调和组织各层所提供的服务,它定义了开放系统的层次结构、层次之间的相互关系,以及各层所包括的可能的任务。但是OSI参考模型并没有提供一个可以实现的方法,而是描述了一些概念,用来协调进程间通信标准的制定,即OSI参考模型并不是一个标准,而是一个在制定标准时所使用的概念性框架。在ISO/OSI模型框架里,可以兼容很多具体的协议,如表1.2所示。表1.2 协议示例续表

由表 1.2 也可以清楚地发现,OSI 是一个逻辑上的定义、规范,它把网络协议从逻辑上分为了七层,它的主要目是为解决异种网络互联时所遇到的兼容性问题,其最主要的功能就是帮助不同类型的主机实现数据传输。它的最大贡献是将服务、接口和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统、不同的网络之间实现可靠的通信。在OSI模块框架提出后,网络协议得到了极大的发展。1.2.3 “阿帕网”(ARPANET)与TCP/IP协议族

说到计算机网络,就不能不谈到它的雏形“阿帕网”(ARPANET,the Advanced Research Projects Agency Network)。阿帕网为美国国防高等研究计划署(Advanced Research Project Agency)开发的世界上第一个运营的封包交换网络。1967 年开始筹建,1969 年底阿帕网正式投入运行,1982年开始停用原来的通信协议NCP,1983年1月1日TCP/IP开始成为通用协议,1985年TCP/IP协议成为UNIX操作系统的组成部分。阿帕网在1989年被关闭,1990年正式退役。

最初的“阿帕网”由美国西海岸的4个节点构成。第一个节点选在加州大学洛杉矶分校(UCLA,University of California,Los Angeles),第二个节点选在斯坦福研究院(SRI,Stanford Research Institute)。此外,加州大学圣芭芭拉分校(UCSB,University of California,Santa Barbara)和犹他大学(UTAH,University of Utah)分别被选为三、四节点。其对应的结构图如图1.4所示。图1.4 阿帕网各节点连接方式

在阿帕网时期,计算机的使用方式与现在略有不同。发起人之一的鲍勃·泰勒(Bob Taylor)有好几台终端连接不同的主机,而这些主机有着不同的命令和实现,他就设想有一台终端能够连接所有的主机。这才是阿帕网的真正的项目意图,而不是传言中的“冷战”。由此可以看出,那个时代的网络设计侧重的还是“互通性”。网络发展到现在,已经侧重应用了。当然,这个问题在那个时代,依然是个“开放性”问题。根据设计者的看法,需要太多的控制和太多的网络中机器设备的标准化。

1969年,最开始阿帕网上主机对主机通信应用的是1822协议。该协议定义了消息如何传递给一个“路由器”(IMP,Interface Message Processor)。一个1822基本消息由消息类型、数字编码的主机地址和数据构成。而NCP(Network Control Program)协议运行在主机上,该协议旨在为运行在不同主机上的应用建立可信的、流控制的双向通信标准。电子邮件(E-mail)和文件传输即建立在NCP协议之上。

1983年TCP/IP协议取代了NCP协议,成为今天互联网的基石。TCP/IP模型有时候也被称为DoD模型(Department of Defense Model)。一般认为,1973年夏,文顿·瑟夫(Vinton Cerf)和罗伯特·卡恩(Robert E.Kahn)开始提出了一些协议改进,1973—1974年期间基本设计思想成熟。之后有四个版本被开发出来——TCP v1、TCP v2、在1978年春分成TCP v3和IP v3的版本,以及后来稳定的TCP/IP v4(1981年)——目前因特网仍然使用的标准协议,今天的版本和最早的版本并没有多少改变。1984年,美国国防部将TCP/IP作为所有计算机网络的标准。1985年,因特网架构理事会举行了长达三天,有250家厂商代表参加的关于计算产业使用TCP/IP的工作会议,帮助协议的推广并且引领其日渐增长的商业应用。TCP/IP的蓬勃发展发生在1990年代中期。当时一些重要而可靠的工具面世,如WWW服务和HTML、浏览器Mosaic,导致了互联网应用的飞速发展。1.2.4 TCP/IP参考模型与协议族组成

TCP/IP协议族能够大致匹配到一些厂商喜欢使用的7层的OSI模型,然而由于应用的设计和支持网络的不同,族内的协议往往会涉及OSI模型中不同的层,而这些层并非都能够很好地与基于IP的网络对应。甚至一些研究人员认为试图将因特网协议组对应到OSI会带来混淆而不是有所帮助。

整个通信网络的任务可以划分成不同的功能区块,即所谓的层级(layer)。TCP/IP 参考模型(见图1.2)是一个抽象的分层模型,这个模型中,所有的TCP/IP系列网络协议都被归类到4 个抽象的“层”中。每一抽象层建立在低一层提供的服务上,并且为高一层提供服务。完成一些特定的任务需要众多的协议协同工作,这些协议分布在参考模型的不同层中,因此有时被称为一个协议族。

TCP/IP协议族(有时也被称为因特网、TCP/IP协议组),是一组实现支持因特网和大多数商业网络运行的协议族的网络传输协议。这个名称来源于其中两个最重要的协议:传输控制协议(TCP)和因特网协议(IP),它们也是最先定义的两个协议。我们可以分层次画出具体的协议来表示TCP/IP协议族,如图1.5所示,它的特点是上下两头大而中间小。应用层和网络接口层都有很多种协议,而中间的IP层很小,上层的各种协议都向下汇聚到一个IP协议中。这种很像沙漏计时器形状的TCP/IP 协议族表明:TCP/IP 可以为各式各样的应用提供服务,同时也可以连接到各式各样的网络上。正因为如此,因特网才会发展到今天这种全球规模。

TCP/IP协议族起始于IP协议(大致对应OSI模型的第三层)。TCP/IP族的所有协议都在相应的 RFC 文档中讨论及标准化。重要的协议在相应的 RFC 文档中均标记了状态:“必须”(required)、“推荐”(recommended)、“可选”(elective)。其他的协议还可能有“试验”(experimental)或“历史”(historic)的状态。所有的TCP/IP应用都必须实现IP和ICMP。对于一个路由器而言,有这两个协议就可以运作了,但是从应用的角度来看,这样一个路由器意义不大,实际的路由器一般还需要许多“推荐”协议。

例如,TCP协议在RFC793中正式定义;RFC1122对如何检测错误和不一致性及解决方法进行了说明;RFC1323给出了对TCP的一些扩展功能;RFC2518中重点阐述了TCP的拥塞控制机制并描述了更新后避免过度拥塞的算法;RFC3168描述了显示拥塞通告等。

TCP/IP参考模型为TCP/IP协议族量身制作,如图1.6所示为最简单的网络拓扑结构。整个TCP/IP协议族则负责解决数据如何顺利通过多个点对点通路(一个点对点通路,也称为一“跳”,1 hop),其中IP协议只关心如何使得数据能够跨越本地网络边界的问题,而不关心数据如何利用传输媒体进行传输。不同的网络成员能够在许多“跳”的基础上建立相互的数据通路。图1.5 TCP/IP协议族简要示意图图1.6 最简单的网络拓扑结构

总体来说,研究人员普遍认为,OSI 模型下层还不具备能够真正占据层的位置的能力,在传输层和网络层之间还需要另外一个层(网络互联层)。特定网络类型专用的一些协议应该运行在网络层上,但是却运行在基本的硬件帧交换上。类似协议的例子有地址解析协议和生成树协议(用来保持冗余网桥的空闲状态直到真正需要它们)。然而,它们是本地协议并且在网络互联功能下面运行。不可否认,将两个组(更不用说它们只是运行在如ICMP等不同的互联网络协议逻辑上的网络层的一部分)整个放在同一层会引起混淆,但是OSI模型还没有复杂到能够做更好的工作。OSI模型的最上面三层(应用层、表示层和会话层)在TCP/IP组中是一个应用层。由于TCP/IP有一个相对较弱的会话层,由TCP和RTP下的打开和关闭链接组成,并且在TCP和UDP的各种应用下提供不同的端口号,这些功能能够被单个的应用程序(或者那些应用程序所使用的库)增加。与此相似的是,IP是按照将它下面的网络当作一个黑盒子的思想设计的,这样在讨论TCP/IP的时候就可以把它当作一个独立的层。

以下简要介绍各层功能和主要协议,如表1.3所示。表1.3 T CP/IP协议族功能与主要协议

1.丰富多彩的应用层协议

应用层包括所有和应用程序协同工作,利用基础网络交换应用程序专用数据的协议。应用层是大多数与网络相关的普通程序为了通过网络与其他程序通信所使用的层。这个层的处理过程是应用特有的:数据从网络相关的程序以这种应用内部使用的格式进行传送,然后被编码成标准协议的格式。

一些特定的程序被认为运行在这个层上。它们提供服务直接支持用户应用。这些程序和它们对应的协议包括HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)、SSH(安全远程登录)、DNS(机器名称到 IP 地址映射),以及许多其他协议。一旦从应用程序来的数据被编码成一个标准的应用层协议,它将被传送到IP栈的下一层。

在传输层,应用程序最常用的是 TCP 或者 UDP,并且服务器应用程序经常与一个公开的端口号相联系。服务器应用程序的端口由互联网号码分配局(IANA)正式地分配,但是现今一些新协议的开发者经常选择它们自己的端口号。由于在同一个系统上一般只有少数几个服务器应用,端口冲突引起的问题很少。应用软件通常也允许用户强制性地指定端口号作为运行参数。

客户端程序通常使用系统分配的一个随机端口号。监听一个端口并且通过服务器将那个端口发送到应用的另外一个副本,以建立对等连接(如IRC上的dcc文件传输)的应用,也可以使用一个随机端口,但是应用程序通常允许定义一个特定的端口范围的规范,以允许端口能够通过实现网络地址转换(NAT)的路由器映射到内部。

每一个应用层(TCP/IP参考模型的最高层)协议一般都会使用两个传输层协议之一:面向连接的TCP传输控制协议和无连接的UDP用户数据报文协议。

常用的应用层协议有以下三种。

1)运行在TCP协议上的协议(1)HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。(2)HTTPS(Hypertext Transfer Protocol over Secure Socket Layer,or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。(3)FTP(File Transfer Protocol,文件传输协议),顾名思义,用于文件传输。(4)POP3(Post Office Protocol,version 3,邮局协议),接收邮件。(5)SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。(6)Telnet(Teletype over the Network,网络电传),通过一个终端(terminal)登录到网络。(7)SSH(Secure Shell,用于替代安全性差的Telnet),用于加密安全登录用。

2)运行在UDP协议上的协议(1)BOOTP(Boot Protocol,启动协议),应用于无盘设备。(2)NTP(Network Time Protocol,网络时间协议),用于网络时间同步。

3)其他(1)DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作(运行在TCP和UDP协议上)。(2)ECHO(Echo Protocol,回绕协议),用于查错及测量应答时间(运行在TCP和UDP协议上)。(3)SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的收集和网络管理。(4)DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。(5)ARP(Address Resolution Protocol,地址解析协议),用于动态解析以太网硬件的地址。

2.核心——传输层

传输层的协议,能够解决诸如端到端可靠性(通俗地说,也就是“数据是否已经到达目的地”)和保证数据按照正确的顺序到达这样的问题。在TCP/IP协议组中,传输协议也解决数据应该送给哪个应用程序的问题。

传输层协议主要包含TCP和UDP两个协议。传输控制协议(Transport Control Protocol,TCP)是面向连接的协议,用三次握手和滑动窗口机制来保证传输的可靠性和进行流量控制。用户数据包协议(User Datagram Protocol,UDP)是面向无连接的不可靠传输层协议。

TCP 协议即传输控制协议,是面向连接的、基于比特流的、可靠的传输层的数据通信协议。作为工作在传输层的协议,它的设计是为上层的应用和服务提供一个稳定、可靠的、端到端的连接,同时将其下层的网络实现对高层隐藏。在TCP/IP的协议族中,TCP的层次是置于IP层之上,且在应用层之下的一个中间层。不同主机或终端的应用层之间通常需要一个可靠、稳定的连接,但是其下层IP层提供不了这样的流机制,其提供的是不可靠的数据包的交换。TCP协议是一种面向连接的协议,它用了一个四元组来标识每一个数据的连接。TCP协议为每个连接采用了一个状态集,这个状态集的作用是用来保证连接的可靠性。当连接进行初始化的时候,需要源端和目的端进行三次握手,用来确保双方同步地进行连接的建立;当建立的连接要关闭时,也要进行握手,且对于一个完整的关闭同时还需源端和目的端两方都发起关闭的操作;当连接遇到某些错误或异常情况时,也有一些方法和操作来确保这次连接的顺利关闭。

TCP协议是可靠的,可以理解为TCP所发送的数据要被保证是正确、完整的,同时可以按顺序地让目的地址端接收到,任何一种数据包丢失、错误、乱序、重复等不正常的情况都是要解决的,同时这一点也是TCP协议能满足许多高层应用需求的一个重要的因素。TCP协议是通过目的端回复确认包(ACK),以及在源端处重传计时器设置来实现可靠性的。目的端处接收到一个正确的数据包之后,就会向源端处发送这个报文的确认消息,源端接收到确认消息以后就能确定之前发送过的数据包已经被可靠地传送到了目的端。当目的端接收到了错误的数据包、乱序数据包或重复数据包时,它便会给源端回复最近的收到可靠数据序号的位置,这事实上是冗余的一个确认包;源端接收到这个冗余确认包之后会再一次发送出问题的数据包,这样可以确保其可靠性。那么如果目的端没有收到任何的数据包,也就是数据包在发送过程中完全丢失,那么在源端设置的重传计时器RTO最后便会发生超时,由源端再一次发送这个数据包。

在TCP/IP协议族中技术上位于这个层的动态路由协议通常被认为是网络层的一部分,一个例子就是OSPF(IP协议号89)。

TCP(IP 协议号 6)是一个可靠的、面向连接的传输机制,它提供一种可靠的字节流保证数据完整、无损并且按顺序到达。TCP尽量连续不断地测试网络的负载,并且控制发送数据的速度以避免网络过载。另外,TCP试图将数据按照规定的顺序发送。这是它与UDP不同之处,这在实时数据流或者网络丢包率高的时候可能成为一个缺陷。

较新的SCTP也是一个可靠的、面向连接的传输机制。它是面向记录而不是面向字节的,它在一个单独的连接上通过多路复用提供多个子流。它也提供了多路自寻址支持,其中连接终端能够被多个IP地址表示(代表多个实体接口),这样的话即使其中一个连接失败了也不中断。它最初是为电话应用开发的(在IP上传输SS7信令),但是也可以用于其他的应用。

UDP(IP协议号17)是一个无连接的数据包协议。它是一个“尽力传递”(best effort)或者说“不可靠”协议——不是因为它特别不可靠,而是因为它不检查数据包是否已经到达目的地,并且不保证它们按顺序到达。如果一个应用程序需要这些特性,那它必须自行检测和判断,或者使用TCP协议。UDP协议报文层次的封装,如图1.7所示。TCP协议报文的封装层次与之类似。图1.7 UDP协议报文的封装层次

UDP 的典型应用是流媒体(音频和视频等)这样按时到达比可靠性更重要的应用,或者DNS查找这样的简单查询/响应应用,如果建立可靠的连接所做的额外工作所占比例过大。

DCCP目前正由IEFT开发。它提供TCP流动控制语义,但对于用户来说保留了UDP的数据包服务模型。

TCP和UDP都用来支持一些高层的应用。任何给定网络地址的应用通过它们的TCP或者UDP端口号区分,根据惯例使一些大众所知的端口与特定的应用相联系。

RTP是为音频和视频流这样的实时数据设计的数据报协议。虽然RTP使用UDP包格式作为基础,它却位于因特网协议族的传输层。

3.万网互联的基础——网络互联层

正如最初所定义的,网络层解决在一个单一网络上传输数据包的问题。类似的协议有X.25和ARPANET的Host/IMP Protocol。

网络层包括多个重要协议,主要协议有4个,即IP、ARP、RARP和ICMP。网际协议(Internet Protocol,IP)是其中的核心协议,IP 协议规定网络层数据分组的格式。互联网控制消息协议(Internet Control Message Protocol,ICMP)提供网络控制和消息传递功能。地址解析协议(Address Resolution Protocol,ARP)用来将逻辑地址解析成物理地址。反向地址解析协议(Reverse Address Resolution Protocol,RARP)通过RARP广播,将物理地址解析成逻辑地址。

随着网际互联思想的出现,在这个层上添加了附加的功能,也就是将数据从源网络传输到目的网络。这就牵涉到在网络组成的网上选择路径传输数据包。

在因特网协议组中,IP完成数据从源端发送到目的端的基本任务。IP能够承载多种不同的高层协议的数据;这些协议使用一个唯一的IP协议号进行标识。ICMP和IGMP分别是1和2。

一些IP承载的协议,如ICMP(用来发送关于IP故障的诊断信息)和IGMP(用来管理多播数据),它们位于IP层之上但是完成网络层的功能,这表明了因特网和OSI模型之间的不兼容性。所有的路由协议,如BGP、OSPF和RIP实际上也是网络层的一部分,尽管它们似乎应该属于更高的协议层。

4.飞速发展的硬件与网络接口层

TCP/IP的网络接口层中包括各种物理网络协议,例如,Ethernet、令牌环、帧中继、ISDN和分组交换网X.25等。当各种物理网络被用作传输IP数据包的通道时,这种传输过程就可以看作属于这一层的内容。

但是,网络接口层实际上并不是因特网协议族中的一部分,它是数据包从一个设备的网络层传输到另外一个设备的网络层的方法。这个过程能够在网卡的软件驱动程序中控制,也可以在硬件或者专用芯片中控制。这一层完成如添加报头准备发送、通过实体媒介实际发送这样一些数据链路功能。链路层的另一端将完成数据帧接收、去除报头并且将接收到的包传到网络层的功能。

然而,链路层并不经常这样简单。它也可能是一个虚拟专有网络(VPN)或者隧道,在这里从网络层来的数据包使用隧道协议和其他(或者同样的)协议组发送而不是发送到实体的接口上。VPN和隧道通常预先建好,并且它们有一些直接发送到实体接口所没有的特点(例如,它可以加密经过它的数据)。由于现在链路“层”是一个完整的网络,这种协议组的递归使用可能引起混淆。但是它是一个实现常见复杂功能的特殊方法,需要特别注意的是预防一个已经封装并且经隧道发送出去的数据包再次封装和发送。

在TCP/IP模型中,网络接口层是TCP/IP模型的最底层,负责接收网络层交付的IP数据包,并将IP数据包通过底层物理网络发送出去,或者从底层物理网络上接收物理帧,抽出IP数据包,交给网络层。

网络层负责独立地将分组从源主机送往目的主机,为分组提供最佳路径选择和交换功能,并使这一过程与它们所经过的路径和网络无关。

传输层的作用是在源节点和目的节点的两个对等实体间提供可靠的端到端的数据通信。

应用层为用户提供网络应用,并为这些应用提供网络支撑服务,把用户的数据发送到低层,为应用程序提供网络接口。1.2.5 数据链路层

数据链路层是OSI参考模型中的第二层,介于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源机网络层来的数据可靠地传输到相邻节点的目标机网络层。该层在TCP/IP模型中没有对应,但是由于该层的功能比较重要,对网络性能有很大的影响,尤其是在无线网络环境下,因此在本部分详细介绍。

为达到可靠传输的目的,数据链路层必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以便与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。

1.基本功能

数据链路层(模型如图1.8所示)最基本的功能是向该层用户提供透明、可靠的数据传送基本服务。透明性是指该层上传输的数据的内容、格式及编码没有限制,也没有必要解释信息结构的意义;可靠的传输使用户免去对丢失信息、干扰信息及顺序不正确等的担心。在物理层中这些情况都可能发生,在数据链路层中必须用纠错码来检错与纠错。数据链路层是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一无差错的线路。数据链路层的关键词“帧”和“介质访问控制”。图1.8 数据链路层模型

数据链路层有4个基本功能:帧同步、差错控制、流量控制和链路管理。

1)帧同步

为了使传输中发生差错后只将有错的有限数据进行重发,数据链路层以帧为单位组织比特流。每个帧除了要传送的数据外,还包括校验码,以使接收方能发现传输中的差错。帧的组织结构必须设计成使接收方能够明确地从物理层收到的比特流中对其进行识别,也即能从比特流中区分出帧的起始与终止,这就是帧同步要解决的问题。由于网络传输中很难保证计时的正确和一致,所以不可单纯依靠时间间隔关系来确定一帧的起始与终止。

2)差错控制

一个实用的通信系统必须具备发现(即检测)差错的能力,并采取措施以纠正,使差错控制在所能允许的尽可能小的范围内,这就是差错控制过程,也是数据链路层的主要功能之一。接收方通过对差错编码(奇偶校验码或CRC码)的检查,可以判定一帧在传输过程中是否发生了差错。一旦发现差错,一般可以采用反馈重发的方法来纠正。这就要求接收方收完一帧后,向发送方反馈一个接收是否正确的信息,使发送方据此做出是否需要重新发送的决定。发送方仅当收到接收方以正确接收的反馈信号后才能认为该帧已经正确发送完毕,否则需要重发直至正确为止。

物理信道的突发噪声可能完全“淹没”一帧,使得整个数据帧或反馈信息帧丢失,这将导致发送方永远收不到接收方发来的信息,从而使传输过程停滞。为了避免出现这种情况,通常引入计时器(Timer)来限定接收方发回反馈消息的时间间隔,当发送方发送一帧的同时也启动计时器,若在限定时间间隔内未能收到接收方的反馈信息,即计时器超时(Timeout),则可认为传出的帧已经出错或丢失,就要重新发送。

由于同一帧数据可能被重复发送多次,就可能引起接收方多次收到同一帧并将其递交给网络层的危险。为了防止发生这种危险,可以采用对发送的帧编号的方法,即赋予每帧一个序号,从而使接收方能依据该序号来区分是新发送来的帧还是已经接收但又重发来的帧,以此来确定要不要将接收到的帧递交给网络层。数据链路层通过使用计数器和序号来保证每帧最终都能被正确地递交给目标网络层一次。

3)流量控制

首先需要说明一下,流量控制并不是数据链路层特有的功能,许多高层协议中也提供流量控制功能,只不过流量控制的对象不同而已。例如,对于数据链路层来说,控制的是相邻两节点之间数据链路上的流量;而对于传输层来说,控制的则是从源端到最终目的端之间端对端的流量。

由于收发双方各自使用的设备工作速率和缓冲存储空间的差异,可能出现发送方发送能力大于接收方接收能力的现象,若此时不对发送方的发送速率(也即链路上的信息流量)做适当的限制,前面来不及接收的帧将被后面不断发送来的帧“淹没”,从而造成帧的丢失而出错。由此可见,流量控制实际上是对发送方数据流量的控制,使其发送速率不致超过接收方的速率。也即需要有一些规则使得发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后再继续发送。

稍后将要介绍的XON/XOFF方案和窗口机制就是两种常用的流量控制方法。

4)链路管理

数据链路层向上层提供的基本服务是,将源节点的网络层数据可靠地传输到相邻的目的节点的网络层,还可进一步划分为以下三种服务。(1)无确认的无连接服务,目的节点不做确认,差错由上层负责。(2)有确认的无连接服务,目的节点对收到的帧要做确认,发送节点可以知道已发出的帧是否安全到达目的节点;若出现误帧或帧丢失则重传。(3)面向连接服务可靠地传送数据的服务,即提供在网络实体间建立、维持和释放数据链路的功能。

链路管理功能主要用于面向连接的服务。在链路两端的节点要进行通信前,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号初始化,然后才能建立连接。在传输过程中则要维持该连接。如果出现差错,需要重新初始化,重新自动建立连接。传输完毕后则要释放连接。数据链路层连接的建立、维持和释放就称为链路管理。

在多个站点共享同一物理信道的情况下(如在局域网中),如何在要求通信的站点间分配和管理信道也属于数据层链路管理的范畴。

2.帧同步

帧同步主要有以下四种方式。

1)字节计数法

这是一种以一个特殊字符表示一帧的起始,并以一个专门字段来标明帧内字节数的帧同步方法。接收方可以通过对该特殊字符的识别从比特流中区分出帧的起始,并从专门字段中获知该帧中随后跟随的数据字节数,从而可确定出帧的终止位置。

面向字节计数的同步规程的典型代表是 DEC 公司的数字数据通信报文协议 DDCMP (Digital Data Communications Message Protocol)。DDCMP报文结构如表1.4所示。表1.4 D DCMP报文结构

控制字符SOH标志数据帧的起始。实际传输中,SOH前还要以两个或更多个同步字符来确定一帧的起始,有时也允许本帧的头紧接着上帧的尾,此时两帧间就不必再加同步字符。Count字段共有 14 位,用以指示帧中数据段中数据的字节数,数据段最大长度为 8×(214-1)=131064位,长度必须为字节(即8位)的整倍数,DDCMP协议就是靠这个字节计数来确定帧的终止位置的。DDCMP帧格式中的ACK、SEG、ADDR及FLAG中的第2位,它们的功能分别类似于稍后要详细介绍的HDLC中的N(S)、N(S)、Addr字段及P/F位。CRC1、CRC2分别对标题部分和数据部分进行双重校验,强调标题部分单独校验的原因是,一旦标题部分中的Count字段出错,即失去了帧边界划分的依据,将造成灾难性的后果。由于采用字符计数方法来确定帧的终止边界不会引起数据及其他信息的混淆,因而不必采用任何措施便可实现数据的透明性,即任何数据均可不受限制地传输。

2)使用字符填充的首尾定界符法

该法用一些特定的字符来定界一帧的起始与终止。为了不使数据信息位中出现的与特定字符相同的字符被误判为帧的首尾定界符,可以在这种数据字符前填充一个转义控制字符(DLE)以示区别,从而达到数据的透明性。但这种方法使用起来比较麻烦,而且所用的特定字符过份依赖于所采用的字符编码集,兼容性比较差。

3)使用比特填充的首尾标志法

该法以一组特定的比特模式(如01111110)来标志一帧的起始与终止。稍后要详细介绍的HDLC规程即采用该法。为了不使信息位中出现的与该特定模式相似的比特串被误判为帧的首尾标志,可以采用比特填充的方法。例如,采用特定模式01111110,则对信息位中的任何连续出现的5个“1”,发送方自动在其后插入一个“0”,而接收方则做该过程的逆操作,即每收到连续5个“1”,则自动删去其后所跟的“0”,以此恢复原始信息,实现数据传输的透明性。比特填充很容易由硬件来实现,性能优于字符填充方法。

4)违法编码法

该法在物理层使用特定的比特编码方法时采用。例如,曼彻斯特编码方法,是将数据比特“1”编码成“高-低”电平对,将数据比特“0”编码成“低-高”电平对。而“高-高”电平对和“低-低”电平对在数据比特中是违法的。可以借用这些违法编码序列来定界帧的起始与终止。局域网IEEE 802标准中就采用了这种方法。违法编码法不需要任何填充技术,便能实现数据的透明性,但它只适用于采用冗余编码的特殊编码环境。

由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果),以及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充法和违法编码法。

3.差错控制

用以使发送方确定接收方是否正确收到了由它发送的数据信息的方法称为反馈差错控制。通常采用反馈检测和自动重发请求(Automatic Repeat Request,ARQ)两种基本方法实现。

1)反馈检测法

反馈检测法也称回送校检法或“回声”法,主要用于面向字符的

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载