第1页,人民邮电出版社,,,第1章 TCP/IP协议概述,第2页,1.1 TCP/IP协议的产生与发展,1.1.1 TCP/IP协议的产生 1968年6月DARPA提出的“资源共享的计算机网络”(Resource Sharing Computer Networks)研究计划该计划的最初目的是让DARPA的所有电脑都能互联起来,使大家可以共享人们的研究成果,由于当时该研究是在美国国防部高级研究计划署的组织下进行的,因此人们就把这个网络叫做“ARPANET”,在国内有些资料音译为“阿帕网” 在20世纪70年代初,加州大学洛杉机分校的网络工作小组(NWG)制定出“网络控制协议”(NCP,Network Control Protocol)网络控制协议”不过是一台主机直接对另一台主机的通信协议,实质上是一个设备驱动程序要想真正做到将许多安装了不同操作系统的电脑连接起来,“网络控制协议”就有点力不从心了而且,“网络控制协议”也没有纠错功能,如果要是在传输中出现了错误,就只能停止网络中传输的数据,那么这次传输也就失败了因此“网络控制协议”有其先天的不足第3页,1.1 TCP/IP协议的产生与发展,1.1.1 TCP/IP协议的产生 随着计算机应用领域的不断扩展,连入ARPANET的电脑数量的增加,就需要有一种新的协议来管理计算机网络中的通信。
最重要的问题是得考虑给每一台电脑分配一个唯一的名字,这样别的电脑才能把这台电脑“认”出来用专业一点的术语来说,就是要给网络中的每一台电脑给出一个惟一的“地址”这就需要人们设计出一种新的协议,以解决不同电脑或不同网络之间的互联问题,当时人们为这种新的协议确定了如下的一些基本设计原则: (1) 每一个独立的网络必须按自己的标准建立起来,当这个网络和互联网连接的时候,不需要对其内部做任何改动 (2) 网络应该在最佳的状态下完成通信 (3) 如果一个“信包”没有到达目的地,最初发出“信包”的节点将很快重发该“信包”第4页,1.1 TCP/IP协议的产生与发展,1.1.1 TCP/IP协议的产生 (4) 网络之间由叫做“黑匣子”的设备进行互相连接,这里所谓的“黑匣子”就是后来被人们称为类似于“网关”和“路由器”的设备 (5) 整个互联网不需要在操作层面上进行任何总体控制 按这些设计原则,在1973年由研究操作系统通信原理的Kahn和参与过网络通信协议NCP设计的Vinton Cerf两人一起为ARPANET开发具有上以特点的网络互联协议1974年5月Vinton Cerf和Kahn两人合作在IEEE(电气和电子工程师协会)刊物上发表了一篇题为“分组网络互联的一个协议”的论文,同年12月,他们正式发表了第一份TCP协议的详细说明,该协议负责在互联网上传输和转发信包。
第5页,1.1 TCP/IP协议的产生与发展,1.1.1 TCP/IP协议的产生 由于在后来的实验中证实这种TCP协议有时在信包丢失时不能得到有效的纠正,因此,他们认识到应该把这一协议分成两个不同的协议:一个是用来检测网络传输中差错的“传输控制协议”TCP,当检测到传输中有差错时,它就能发出重发信号,源端收到该信号后就重新发送发生差错的信包,通过这种差错重传机制保证数据能够正确传输到目的地;另一个是专门负责对不同网络进行互联的“互联网协议”IP,为了实现不同类型的局域网可以互联,它在各种局域网地址标准之上,为互联网络中的所有主机设定了统一的互联网地址(IP地址),以保证不同网络中的主机(当然也可以是同一个网络中的主机)只要接入互联网,它们之间就可以相互识别,以进行通信这两个协议就是我们现在所说的“TCP/IP协议”第6页,1.1 TCP/IP协议的产生与发展,1.1.1 TCP/IP协议的产生 使用TCP/IP协议的网络,其最大的优点是可以使不同的网络互联,并且网络中的任何节点或某部分被破坏,都不会造成整个网络的瘫痪,这正好符合美国军方的需要于是,在1982年做出了在ARPANET上使用TCP/IP协议以代替原来使用的网络控制协议(NCP)的决定。
1983年的1月1日,ARPANET停止了网络控制协议NCP的使用,从此互联网上的主机都使用TCP/IP协议,使TCP/IP协议成了计算机网络领域事实上的工业标准协议 什么是TCP/IP协议呢?对初学者来说,我们可以简单地理解为TCP协议是用来检测数据传输中的差错并进行流量控制的协议TCP协议如果发现问题,就要发出重新传输的信号,直到所有数据能够安全传输到目的地,因此它起到一个信息传输过程中的控制作用IP协议的最主要作用就是给网络中的每一台电脑分配一个唯一地址,否则别的电脑就找不到它这就像我们日常活生中寄信要有地址,打要有号码一样现在人们将Internet中使用的所有协议统称为TCP/IP协议第7页,1.1 TCP/IP协议的产生与发展,1.1.2 TCP/IP协议的发展与应用 TCP/IP协议产生于20世纪70年代,在1983年著名的ARPANET全面使用TCP/IP协议后,大大加快了TCP/IP协议的推广速度后来人们以ARPANET为骨干网建立了Internet在1985年,美国国家科学基金会(NSF)开始TCP/IP协议的研究工作,并在1986年资助建立了NSFNET,NSFNET使用TCP/IP协议,它作为骨干网连接了全美主要科研机构,后来NSFNET代替ARPANET成为Internet的骨干网。
这样,顺理成章的使TCP/IP协议成为了Internet中的“世界语” Internet在全球的广泛应用说明,Internet的快速发展得益于TCP/IP协议的提出和使用,反过来,Internet又促进了TCP/IP协议的普及和应用 这里还要说明一点,在计算机系统的操作系统领域,1983年加州大学伯克利分校的开发者发布的最新版的UNIX操作系统—4.2BSD(Berkeley Software Distribution )实现了TCP/IP协议,这也大大的促进了TCP/IP协议推广与应用第8页,1.1 TCP/IP协议的产生与发展,1.1.2 TCP/IP协议的发展与应用 TCP/IP协议从产生到现在虽然共出现了6个版本,但前3个版本基本没有投入实际使用,第5版是基于ISO/OSI中的7层模型提出来的,由于层次结构变化大,实现成本较高,因此没有投入实际使用现在Internet网络中广泛使用的是TCP/IP协议的第4版,一般简称为IP v4 在IP v4的使用过程中,人们发现其32位的地址范围有限、并存在安全等问题,于是提出IP v6,该协议主要将IP协议进行了修改,使其在地址空间、数据的完整性和保密性、语音和视频数据传输等方面有了很大的改进,能更好的满足当前网络实际应用的需求。
本书主要讨论IP v4协议,同时对IP v6协议的关键内容也进行一些介绍第9页,1.2 TCP/IP协议的体系结构,1.2.1 TCP/IP协议的分层体系结构与协议栈的概念 网络系统由硬件系统(如网卡、集线器、路由器等)和软件系统(如操作系统、通信协议等)组成在进行TCP/IP协议的研究与进行网络软件开发时,一般人们只关心网络系统的软件系统,而软件系统的核心内容就是通信时所使用的网络协议因此本小节讨论的TCP/IP协议结构是从软件角度来说的 在网络协议发展的初期,人们并没有想到要将网络协议进行分层设计,只是在后来的研究与应用中才逐步认识到网络协议的复杂性,于是才想到了人类在解决复杂问题时所广泛使用的“分层管理”的思想如在人类社会中,中央政府管理省级政府,省级政府管理地区级政府,地区级政府管理县级政府等这样,中央政府的管理指令先下达到省级政府,省级政府现再下达到地区级政府,地区级政府再下达到县级政府同样县级政府有问题先要向上一级地区政府汇报,然后由地区政府再向上一级政府汇报将这一思想应用到网络软件的设计上,人们就把网络系统的软件按功能划分为若干个层次(一般少则可分成4层,多则可达7层),每层负责不同级别的通信功能。
第10页,1.2 TCP/IP协议的体系结构,1.2.1 TCP/IP协议的分层体系结构与协议栈的概念 按照上面介绍的思想,人们将TCP/IP协议分为四层,这四层由高到低分别是:应用层、传输层、网络层和网络接口层,如图1-1所示第11页,1.2 TCP/IP协议的体系结构,1.2.1 TCP/IP协议的分层体系结构与协议栈的概念 其中每一层完成不同的通信功能,一个层就好像一个“黑匣子”一样每个“黑匣子”的内部是如何实现的其他层并不关心,其他层只关心的是这个“黑匣子”对外部提供了什么样的服务在这样一种体系结构中,每一层都向它的上层提供一定的服务,每一层同时可以使用它的下层所提供的功能这样在相邻层之间就有一个接口,通过这个接口将相邻层之间联系起来这种网络协议的层次结构主要有如下优点: (1) 各层之间相互独立:只要保持相邻层之间的接口不变,一个层内部可以用不同的方式来实现各层独立的另外一个好处是一个层内部实现升级或改变时,不影响与该层相邻的上层和下层 (2) 易于设计与实现:各层都可以使用最合适的技术来实现,并且不同层都可以由不同的团队来设计 (3) 易于维护:由于将一个复杂的系统分解为若干个相对简单的层次,并且各层由于完成的功能不同,当系统出现问题时易于分析与维护。
第12页,1.2 TCP/IP协议的体系结构,1.2.1 TCP/IP协议的分层体系结构与协议栈的概念 一般情况下,把网络的层次结构和每层所使用协议的集合称为网络体系结构(Network Architecture)一个具体的网络协议其所包含的层数和每层所使用的协议是确定的,如TCP/IP协议分为四层,每层所使用的协议如图1-1所示 如上所述,网络协议是分层的,在这种层次结构中各层有明确的分工,不同层的协议从上到下形成了一个栈结构的依赖关系,通常将其形象的称为协议栈(Protocol Stack)如图1-1所示是TCP/IP协议的栈结构,从该结构中可以看出,在TCP/IP协议栈中包括很多协议,但TCP协议和IP协议是该协议栈中两个最重要的协议,所以人们常常将该协议栈简称为TCP/IP协议 下面我们介绍一下TCP/IP协议栈中的4个层及其主要功能第13页,1.2 TCP/IP协议的体系结构,1.2.2 网络接口层 网络接口层处于TCP/IP协议栈的最低层,它负责将其之上的网络层要发送出去的数据(即IP数据报)发送到其下面的物理网络或接收由物理网络发送到该目标机的数据帧,并抽出IP数据报交网络层。
要注意,这里所说的物理网络是指各种实际传输数据的局域网或广域网等 这里有一点大家要明白,在TCP/IP协议栈中并没有具体定义网络接口层的内容,一般情况,人们认为只要是在其上能进行IP数据报传输的物理网络(如常用的局域网中的以太网、令牌环网、FDDI-光纤分布式数据接口、IEEE802.3及RS-232串行线路等),都可以当成TCP/IP协议栈的网络接口层 那么,为什么在TCP/IP协议栈中没有定义网络接口层呢?这是因为不定义网络接口层的具体内容有如下两点好处:,第14页,1.2 TCP/IP协议的体系结构,1.2.3 网际层 网际层(internet layer)在TCP/IP协议栈的第2层,也称为互联网络层(互联层),因该层的主要协议是IP协议,也可简称为IP层它是TCP/IP协议栈中最重要的一层,主要功能是它可以把源主机上的分组根据需要发送到互联网中的任何一台目标主机上当然在一般情况下,发送信息的源主机要知道接收信息的目标主机的“地址”(该内容在第3章中介绍)通信时,源主机与目标主机可以在同一个网络中,也可以在不同的网络中 在网际层传输的数据单位叫IP数据报,也称为IP分组 在一个由很多网络组成的互联网中,一台主机(即源主机)与不在同一个网络中的另一台主机(目标主机)通信时,可能有多条通路相连,网际层的一个重要。