网络编程书籍讲义(第三讲)_第1页
网络编程书籍讲义(第三讲)_第2页
网络编程书籍讲义(第三讲)_第3页
网络编程书籍讲义(第三讲)_第4页
网络编程书籍讲义(第三讲)_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人民邮电出版社

第3章 互联网络层13.1 网络层的互联技术3.1.1 网络互联概述1.互联网随着网络技术的发展与应用普及,人们提出了“网络孤岛”的概念。如果一个物理网络不能与其他的网络相互连接,这样当该网络上的用户与另一个网络上的用户需要通信或共享网络资源时,就不能满足用户的需求,这样一个网络就成了“网络孤岛”,其应用范围和作用就受到了限制。如果利用网络互联设备将两个或多个物理网络相互连接,就成了互联网络(internetwork),简称互联网(internet,注意“i”为小写,当“I”为大写时,即Internet,特指全球范围内的互联网)。将多个物理网络互联的最常用设备是路由器(Router),如图3-1所示,该示意图有4个物理网络,这4个物理网络通过R1、R2、R3、R4和R5共5个路由器来实现其互联互通的作用。3.1 网络层的互联技术3.1 网络层的互联技术3.1.1 网络互联概述2. Intranet与Extranet如果一个企业内部网络,使用了Internet中的TCP/IP协议及其网络互联技术,就是一个Intranet。简单地说,Intranet就是一个有限的、封闭的计算机网络,而该网络使用Internet技术共享数据,一个Intranet可以是一个Internet的子网,不过在子网与Internet的交界处增加了访问控制,以防止不受欢迎的访问。由于Internet技术的成熟与普及,使使用了Internet技术的Intranet实现和维护费用较低。如果一个Intranet通过防火墙等技术与外部Internet相连,该Intranet就是一个开放的,通过外部可以访问的网络,这时它就成了一个Extranet,因此从某种程度上说,Extranet就是公司与公司之间的网络。3.1 网络层的互联技术3.1.2 路由器路由器是用于连接多个逻辑上分开的网络。路由器具有转发报文和路由选择两大功能,它能在异种网络互联环境中,建立灵活的连接。路由器不关心各子网使用的硬件设备,但要求各网络层协议要运行功能一致的软件。一般来说,异种网络互联与多个子网互联都应采用路由器来完成。1. 路由器的工作原理当IP子网中的一台主机发送IP报文给同一子网的另一台主机时,它将直接把IP报文送到网络上,对方就能收到。而要送给不同IP子网上的主机时,它要选择一个能到达目的子网的路由器,把IP报文送给该路由器,由路由器负责把IP报文送到目的地。如果没有找到这样的路由器,主机就把IP报文送给一个称为“默认网关”(defaultgateway)的路由器上。“默认网关”是每台主机上的一个配置参数,它是接在同一个网络上的某个路由器端口的IP地址。3.1 网络层的互联技术3.1.2 路由器路由器转发IP报文时,只根据IP报文中目的IP地址的网络号部分,选择合适的端口,把IP报文送出去。每个路由器在收到IP报文后也要判定端口所连接的是否是目的子网,如果是,就直接把报文通过端口送到网络上,否则,也要选择下一个路由器来转发IP报文。路由器也有它的“默认网关”,用来传送不知道往哪儿送的IP报文。这样,通过路由器把知道如何传送的IP正确转发出去,不知道如何传送的IP报文送给“默认网关”,这样一级级地传送,IP报文最终将送到目的地,送不到目的地的IP报文则被网络丢弃了。3.1 网络层的互联技术3.1.2 路由器2. 路由器的功能路由器是互联网中最常用的网络连接设备,在图3-1中,不同的物理网络之间通过路由器互相连接起来。顾名思义,路由器的起网络寻找路由的作用,即它为经过路由器的每个IP报文寻找一条最佳的传输路径,最终将该IP报文传输到目的节点。总之,路由器的功能主要包括下面几个方面:(1)在网络之间接收和发送数据包。将接收到的数据包根据包中所包含的源地址和目的地址,对照自己的路由信息表,把数据包向目的节点转发。3.1 网络层的互联技术3.1.2 路由器2. 路由器的功能(2)为网际间通信选择最合理的路由。(3)根据需要可对数据包进行拆分或组装。(4)对于支持多通信协议的路由器,可以将两个使用不同协议的网络连接起来。(5)网络安全功能,目前大部分路由器都具备一定的防火墙功能,能够屏蔽内部网络的IP地址,自由设定IP地址、通信端口过滤等,使网络更加安全。3.1 网络层的互联技术3.1.3 面向连接的互联技术图3-1所示的互联网络,如果网络1中的主机A要与网络4中的主机D进行通信,可以通过“主机A→网络1→路由器R3→网络4→主机D”这样的一条固定线路来完成,路由器R3就要保存一条这样的信息,所有由网络1中的主机要传输到网络4中主机的信息,都要由路由器R3接收并转发。这种解决方案就好像在通信的源端和目标端之间建立了一条逻辑通路,一般称为虚电路(virtualcircuit),即“网络1→路由器R3→网络4”,当然也可以反过来“网络4→路由器R3→网络1”,说明网络4中主机要与网络1中主机通信时,也要由路由器R3转发。这就是所谓面向连接(connect-oriented)的互联技术,这种方式看似简单,易于实现,但其最大的缺点是如果不能保证虚电路中沿途经过的节点都能可靠的发送数据,就可能使网络崩溃。由于互联网所连网络的复杂性和多样性,很难保证所节点都能可靠的发送数据。3.1 网络层的互联技术3.1.4 无连接的互联技术无连接的(connectionless)的互联网解决方案在源端和目标端之间不需要建立一条逻辑通路,而是送到网络中的每个分组带有完整的目标主机地址,收到分组的节点(主要是路由器)根据目标地址和当前网络状况(如通信量等),选择一条合适的线路把分组发送到接近目标端的下一个节点,通过多个节点的转发,最终把分组送达目标节点。例如图3-1所示网络中,如果网络1中的主机A要与网络4中的主机D进行通信,可能通过“主机A→网络1→路由器R3→网络4→主机D”这样的一条逻辑链路来完成,也可能通过“主机A→网络1→路由器R2→网络3→路由器R4→网络4→主机D”这样的一条逻辑链路来完成,当然还可以有其他的逻辑链路,这就是所谓无连接的互联技术。3.1 网络层的互联技术3.1.5 IP互联原理不同的网络使用的协议不同、地址长度和寻址方式不同、数据帧的长度不同。物理网络的这些差别是无法改变的,也就是说,我们无法做到物理网络的“统一”。但是,我们可以对互联的不同物理网络(具体表现就是不同网络的网络接口卡和设备驱动程序互不相同)上传输的数据帧,都加上一层相同的“包装”,使加了“包装”后的网络数据帧对外有统一的“外表”(为了区别数据帧,我们就把它叫“数据报”),并且有足够的地址信息(即IP地址)用来识别数据报从何而来(信源),要到什么地方去(信宿)。这样的数据报,不同网络中的节点(主要是路由器)都可以识别,因此,就可以根据数据报的目标地址,把它从一个节点转发到另一个节点,直到目标主机。最后由目标主机对数据报的内容进行解释。3.2 IP协议3.2.1 IP协议概述IP协议是TCP/IP协议簇中最重要的协议,从协议体系结构来看,向下它屏蔽了不同物理网络的低层,向上它提供了一个逻辑上统一的互联网。TCP/IP网络中的IP就如同邮政服务中的“标准信封”,在这个基本的、有效的传送机制中,任何种类的数据都能放入到该“标准信封”中,如图3-3所示。IP协议头被封装在内的高层数据图3-3IP协议示意图3.2 IP协议3.2.1 IP协议概述1. IP协议的主要功能IP协议所完成的主要功能包括以下内容:将上层数据(如TCP,UDP数据)或同层的其它数据(如ICMP数据)封装到IP数据报中。将IP数据报传送到最终目的地。为了使数据能够在链路层上进行传输,对数据进行分段。确定数据报到达其它网络的路径。3.2 IP协议3.2.1 IP协议概述2. IP协议在TCP/IP协议栈中的地位与特点互联网上的所有数据报都要经过IP协议进行传输,它是通信网络与高层协议的分界,如图3-4所示。图3-4 IP协议在TCP/IP协议簇中的地位物理传输介质应用层传输层网络层链路层应用程序应用程序应用程序应用程序TCPUDPICMPIPIGMPARP硬件接口RARP3.2 IP协议3.2.1 IP协议概述2. IP协议在TCP/IP协议栈中的地位与特点使用IP协议的互联网具有以下重要特点:IP协议是一种无连接(connectionless)不可靠(unreliable)的数据报传输协议。说它不可靠是因为IP协议不能保证数据报能正确的传输到目标主机。它负责数据报在网络中的传输,而不管传输的正确与否,不进行数据报的确认,也不能保证数据报按正确的顺序到达(即先发的不一定先到达),但同时它也是“尽最大努力”的传输数据,因为它不随便丢弃传输中的数据报。3.2 IP协议3.2.1 IP协议概述2. IP协议在TCP/IP协议栈中的地位与特点使用IP协议的互联网具有以下重要特点:IP互联网中的计算机没有主次之分,所有主机地位平等(因为惟一标识它们的是IP地址),当然从逻辑上来说,所有网络不管规模大小也没有主次之分。IP互联网没有确定的拓扑结构,就像图3-1所示的哪样。在IP互联网中的任何一台主机,都至少有一个独一无二的IP地址,有多个网络接口卡的计算机每个接口可以有一个IP地址,这样一台主机可能就有多个IP地址,有多个IP地址的主机叫多宿主机(multi-homehost)。在互联网中有IP地址的设备,不一定就是一台计算机,如IP路由器、网关等,因为与互联网有独立连接的设备都要有IP地址。3.2 IP协议3.2.1IP数据报格式IP协议是TCP/IP协议族中最为核心的协议,前面我们已经讨论过,它提供不可靠、无连接的数据报传输服务。IP层提供的服务是通过IP层对数据报的封装与拆封来实现的。IP数据报的格式分为报头区和数据区两大部分,其中数据区包括高层协议需要传输的数据,报头区是为了正确传输高层数据而加的各种控制信息。IP数据报的格式如图3-5所示。版本号(4位)头长度(4位)服务类型TOS(8位)总长度(16位)标识(16位)标志(3位)片偏移(13位)生存时间TTL(8位)上层协议标识(8位)头部校验和(16位)源IP地址(32位)目标IP地址(32位)选项数据3.2 IP协议3.2.1IP数据报格式图3-5中所表示的数据,最高位在左边,记为第0位;最低位在右边,记为第31位。在网络中传输时,先传输0~7位,其次传输8~15位,然后传输16~23位,最后传输的是24~31位。由于TCP/IP协议首部中所有的二进制数在网络中传输时都要求以这种次序进行,因此把它称为网络字节序。在进行程序设计时以其他形式存储的二进制数,必须在传输数据之前,使用网络编程API提供的函数(这些函数在第2篇中介绍)把首部转换成网络字节顺序。IP数据报中的每一个域包含了IP报文所携带的一些信息,正是这些信息来完成IP协议功能的,现说明如下:3.2 IP协议3.2.1IP数据报格式1.版本号占用4位二进制数,表示该IP数据报使用的是哪个版本的IP协议。目前在Internet中使用的TCP/IP协议簇中,IP协议的版本号为4,所以也常称为IPv4。下一个IP协议的版本号为6,即IPv6,当前正在试验中,在本章的最后一节介绍有关IPv6的知识。2. 头长度用4位二进制数表示,此域指出整个报文头的长度(包括选项),该长度是以32位二进制数为一个计数单位的,接收端通过此域可以计算出报文头在何处结束及从何处开始读数据。普通IP数据报(没有任何选项)该字段的值是5(即20个字节的长度)。3.2 IP协议3.2.1IP数据报格式3. 服务类型(TOS-TypeofService)用8位二进制数表示,规定对本数据报的处理方式。服务类型字段的8位分成了五个子域,如图3-6所示。(1)优先权:占0~2位,这3位二进制数表示的数据范围为000~111(0~7),数越大,表示该数据报优先权越高,如0表示一般的优先权,7表示网络控制优先权。网络中的路由器可以使用优先权进行拥塞控制,如当网络发生拥塞时可以根据数据报的优先权来决定数据报的取舍。3.2 IP协议3.2.1IP数据报格式3. 服务类型(TOS-TypeofService)(2) 短延迟位D(Delay):该位被置1时,数据报请求以短延时信道传输,0表示正常延时。(3) 高吞吐量位T(Throughput):该位被置1时,数据报请求以高吞吐量信道传输,0表示普通。(4) 高可靠性位R(Reliability):该位被置1时,数据报请求以高可靠性信道传输,0表示普通。(5) 低费用位C(Cost):该位被置1时表示低费用的路由。(6) 保留位:目前未用,需置0。3.2 IP协议3.2.1IP数据报格式4.总长度用16位二进制数表示,总长度字段是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以计算出IP数据报中数据内容的起始位置和长度。由于该字段长度为16位二进制,所以从理论上来说,IP数据报最长可达65535字节(实际由于受物理网络的限制,要比这个数值小得多)。3.2 IP协议3.2.1IP数据报格式5. 生存时间(TTL-TimetoLive)用8位二进制数表示,它指定了数据报可以在网络中传输的最长时间。在实际应用中为了简化处理过程,把生存时间字段设置成了数据报可以经过的最大路由器数。TTL的初始值由源主机设置(通常为32、64、128或者256),一旦经过一个处理它的路由器,它的值就减去1,当该字段的值减为0时,数据报就被丢弃,并发送ICMP报文(第4节介绍)通知源主机,这样可以防止数据报进入一个循环回路时,数据报无休止的传输。6. 上层协议标识用8位二进制数表示,从图3-4我们知道,IP协议可以承载多种上层协议,目标端根据协议标识,就可以把收到的IP数据报送TCP或UDP等处理此报文的上层协议。表3-2给出了常用的网际协议编号。3.2 IP协议3.2.1IP数据报格式十进制编号协议说明0无保留1ICMP网际控制报文协议2IGMP网际组管理协议3GGP网关-网关协议4无未分配5ST流6TCP传输控制协议8EGP外部网关协议9IGP内部网关协议11NVP网络声音协议17UDP用户数据报协议3.2 IP协议3.2.1IP数据报格式7.校验和用16位二进制数表示,这个域用于协议头数据有效性的校验,可以保证IP报头区在传输时的正确性和完整性。头部校验和字段是根据IP协议头部计算的校验和码,它不对头部后面的数据进行计算。为了计算一份数据报的IP校验和,首先把校验和字段置为0,然后对首部中每16位二进制数进行反码求和(整个首部看成是由多个16二进制数组成)的运算,结果存在检验和字段中。接收端在收到一个IP数据报后,同样对首部中每个16位二进制数进行反码求和运算。3.2 IP协议3.2.1IP数据报格式8. 源地址用32位二进制数表示的发送端IP地址。9. 目的地址用32位二进制数表示的目的端IP地址。3.2 IP协议3.2.3IP数据报的分片与重组1. 最大传输单元MTU正如图3-1所示,IP数据报在互联网上传输,可能要经过多个物理网络数据报才能从源端传输到目标端。不同的网络由于链路层和介质的物理特性不同,因此在进行数据传输时,对数据帧的最大长度都有一个限制,这个限制值叫最大传输单元MTU(MaximumTransmissionUnit)。同一个网络上的两台主机之间通信时,该网络的MTU是确定,不存在分片问题。分片问题一般只存在于具有不同MTU值的互联网中。由于现在互联网主要使用路由器进行网络连接,所以分片工作通常由路由器进行。3.2 IP协议3.2.3IP数据报的分片与重组1. 最大传输单元MTU如果两台主机之间的通信要通过多个具有不同MTU值的网络时,重要的不是两台主机所在网络的MTU值,而是两台通信主机路径上的最小MTU值,它被称作路径MTU。两台主机之间的路径MTU不一定是个常数,它取决于数据报所经过的路径。由于路由选择不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此,路径MTU在两个方向上不一定是一致的。表3-3列出了几种常用网络的MTU值。3.2 IP协议3.2.3IP数据报的分片与重组网络名称MTU(单位:字节)以太网1500IEEE802.3/802.21492FDDI4352ATM(信元)48X.25576点到点(低延时)296令牌环网(IBM16MB/s)17914令牌环网(IEEE802.5IBM16MB/s)44643.2 IP协议3.2.3IP数据报的分片与重组2. 分片当一个IP数据报要通过链路层进行传输时,如果IP数据报的长度比链路层MTU的值大,那么IP层就需要对将要发送的IP数据报进行分片,把一个IP数据报分成若干个长度小于或等于链路层MTU的IP数据报,才能经过链路层进行传输。这种把一个数据报为了适合网络传输而分成多个数据报的过程,叫分片(fragmentation)。一定要注意,被分片后的各个IP数据报,可能经过不同的路径到达目标主机。一个IP数据报在传输过程中可能被分片,也可能不被分片。如果被分片,分片后的IP数据报和原来没有分片的IP数据报结构是相同的,即也是由IP头部和IP数据区两部分组成。3.2 IP协议3.2.3IP数据报的分片与重组3. 重组当分了片的IP数据报被传输到最终目标主机时,目标主机要对收到的各分片重新进行组装,以恢复成源主机发送时的IP数据报,这个过程叫IP数据报的重组。重组时如何知道收到的分片(IP数据报)属于原来哪个IP数据报呢?解决这个问题就要使用IP数据报头部的标识字段。在IP数据报头部中,标识用16位二进制数表示,它惟一地标识主机发送的每一份数据报。通常在源端保持着一个计数器,每发送一个数据报它的值就会加1,以保证每个数据报有一个惟一的标识,而在一个数据报被分片时,每个分片仅把原数据报标识字段的值原样复制一份,所以一个数据报的所有分片具有相同的标识。3.2 IP协议3.2.3IP数据报的分片与重组3. 重组目标端主机重组数据报的原理是:根据标识可以确定收到的分片属于哪个原IP数据报;根据标志字段的片未完MF子字段可以确定分片是不是最后一个分片;根据偏移量就可以确定分片在原数据报中的位置。3.2 IP协议3.2.4IP数据报选项IP数据报选项主要有两大功能:一个可以用来实现对数据报传输过程的控制,如规定数据报要经过的路由;二是进行网络测试,如一个数据报传输过程中经过了哪些路由器。IP选项域共分为四大类,见表3-4所示,每类分为若干个选项,每个选项有确定的编号。0类表示数据报或网络控制,有6个选项在使用。2类表示调试与测量,有1个选项在使用。1类和3类未使用。3.2 IP协议选项类用途选项号长度功能0类数据报或网络控制0-IP数据报头中的任选项域结束1-无操作211字节安全和处理限制(用于军事领域,详细内容参见RFC1108[Kent1991])3可变设置宽松源路由选择7可变记录数据报经过的路由9可变设置严格源路由选择1类未用2类调试与测量可变记录Internet时戳3类未用选项类用途选项号长度功能0类数据报或网络控制0-IP数据报头中的任选项域结束1-无操作211字节安全和处理限制(用于军事领域,详细内容参见RFC1108[Kent1991])3可变设置宽松源路由选择7可变记录数据报经过的路由9可变设置严格源路由选择1类未用2类调试与测量可变记录Internet时戳3类未用3.2 IP协议3.2.4IP数据报选项IP数据报选项由三个部分组成:选项码、选项长度和选项数据。选项码和选项长度各占一个字节,选项长度用于确定整个选项部分的长度,如图3-9所示。图3-9 IP数据报头标志位2位1位5位选项码选项长度选项数据

复制选项类选项号3.2 IP协议3.2.4IP数据报选项其中,选项码由复制、选项类和选项号三个部分组成。(1) 复制:占1位,用来控制一个带有选项的IP数据报被分片时,分片后对选项的处理方式。如果该位被置1,将选项复制到所有分片中;被置0,将选项仅复制到第一个分片中。(2) 选项类和选项号:选项类占2位,选项号占5位,用于确定该选项是哪类选项中的哪个选项。其实就是用于确定该选项的功能。如表3-4所示。3.2 IP协议3.2.4IP数据报选项对几种常用的选项说明如下:1. 源路由选择所谓源路由选择(sourcerouting)是指IP数据报在互联网中传输时,所经过的路由是由发出IP数据报的源主机指定,以区别于数据报在互联网中传输时,由路由器的IP层自动寻径所得到的路由。通过设置源路由选择选项,可进行测试网络中指定路由的连通性,以使数据报绕开出错的网络,也可用于测试特定网络的吞吐量。源路由选择分为两类,一类是严格源路由选择(strictsourcerouting),另一类是宽松源路由选择(loosesource.routing)。3.2 IP协议3.2.4IP数据报选项(1) 严格源路由选择严格源路由选择由发送端规定IP数据报必须要经过的路径上的每一个路由器,相邻路由器之间不得有中间路由器,并且所经过路由器的顺序不可更改。如果一个路由器发现源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源站路由失败”的ICMP差错报文。其选项格式如图3-10所示。1字节1字节1字节4字节4字节4字节4字节选项码选项长度指针第1站IP地址第2站IP地址第3站IP地址……第9站IP地址3.2 IP协议3.2.4IP数据报选项其中,选项码为10001001(0X89),即为0类9号选项,最高位为1,是因为分片后的数据也要按严格源路由传输。选项长度最大为39,可存放9个IP地址。因为IP首部长度字段只有4位二进制,因此整个IP首部最长只能包括15个32位长的字(即60个字节)。由于IP首部固定长度为20字节,选项码、选项长度和指针共用去3个字节,这样只剩下37个字节(=60-20-3)来存放IP地址清单,也就是说只能存放9个IP地址。指针字段指向当前的IP地址,每经过一个路由器,指针的数值加1,以指向下一个IP地址的位置。在指针之后是IP数据报所要经过路由器的IP地址列表。3.2 IP协议3.2.4IP数据报选项(2) 宽松源路由选择宽松源路由选择由发送端指明一个数据报经过的IP地址清单,但是在数据报传输的路径上,可以在选项中指定的两个IP地址之间有其它IP地址的路由器。宽松源路由选择选项的格式与图3-13所示的严格源路由选择选项的格式相同,各字段的含意也一样,但选项码字段的值为0x83。3.2 IP协议3.2.4IP数据报选项2. 记录路由通过设置记录路由选项,IP数据报就可以记录数据报从源主机传输到目标主机时,所经过路径上各个路由器的IP地址。记录路由选项的数据格式与图3-9所示的格式相同,但选项码字段的值为0x87,指针的初值为4,指向存放第一个IP地址的位置。IP数据报经过各路由器时,每个路由器的IP地址存入选项的数据区中,指针字段的值也随着增加(从4开始到8、12、16、最大到36),它始终指向下一个存放IP地址的位置,当记录了9个IP地址后,指针字段的值为40,表示数据区已满。3.2 IP协议3.2.4IP数据报选项3. 记录时间戳所谓记录时间戳就是IP数据报每经过一个路由器都记下它的IP地址和时间。时间戳中的时间以ms为单位,时间戳的取值一般为格林威治时间(universaltime)自午夜开始计时的毫秒数。时间戳选项的选项代码为0x44。选项长度表示选项的总长度(一般为36或40),指针指向下一个可用空间的指针(值为5,9,13等)。接下来的两个字段各占4位:溢出字段OF(OverFlow)表示因时间戳选项数据区空间不够,而未能记录下来的时间戳个数。标志字段FL用于控制时间戳选项的格式。3.3 IP地址3.3.1IP地址的表示格式互联网是由很多网络连接而成的,互联网中的数据报有些是在本网内主机之间传输的,有些是要送到互联网中其它网络中主机的数据报,因此,IP地址不但要标识在本网内的主机号,还要标识在互联网中的网络号。一个IP地址由网络号和主机号两部分组成,网络号标识互联网中的一个特定网络,主机号标识该网络中的一台特定主机。这样给定一个IP地址,就可以很方便的知道它是哪个网络上的哪一台主机。3.3 IP地址3.3.1IP地址的表示格式表示方法举例说明二进制10000110000110000000100001000010计算机内部使用十进制2249721922很少使用十六进制0X86180842较少使用点分十进制134.24.8.66最常用3.3 IP地址3.3.2IP地址的分类在Internet发展的初期,人们用IP地址的前8位用来定义所在的网络,后24位用来定义该主机在当地网络中的地址。这样互联网中最多只能有255(应该有256个,但全1的IP地址用于广播)个网络。后来由于这种方案可以表示的网络数太少,而每个网络中可以连入的主机又非常多,这不符合互联网的实际情况。于是,人们设计了一种新的编码方案,该方案中用IP地址高位字节的若干位来表示不同类型的网络,以适应大型、中型、小型网络对IP地址的需求。这种IP地址分类法把IP地址共分为A、B、C、D和E共五类,用IP地址的高位来区分。3.3 IP地址3.3.2IP地址的分类类别类标识第一字节网络地址长度主机地址长度最大网络数最大主机数选用范围A类01~1261字节3字节12616777214大型网络B类10128~1912字节2字节1638265534中型网络C类110192~2233字节1字节2097150254小型网络D类1110224~239----多点播送E类11110240~247----保留地址3.3 IP地址3.3.3子网的划分1. 子网与子网地址IP地址最初使用两层地址结构(包括网络地址和主机地址),在这种结构中A类和B类网络所能容纳的主机数非常庞大,但使用C类IP地址的网络只能接入254台主机。随着时间的推移,计算机网络技术不断普及,有大量的个人用户和小型局域网接入互联网,对于这样的用户,即使分配一个C类网络地址仍然会造成IP地址的很大浪费。因此,人们提出了三层结构的IP地址,把每个网络可以进一步划分成若干个子网(subnet),子网内主机的IP地址由三部分组成。一个网络可以划分成多少个子网,由子网地址位数决定,当然一种给定类型的IP地址,如果子网占用的位数越多,子网内主机就越少。划分子网进一步减少了可用的IP地址数量,这是因为,把主机地址的一部分拿走用于识别子网和进行子网内广播.3.3 IP地址3.3.3子网的划分2. 子网掩码对于划分了子网的网络,由于子网地址是由两级地址结构中主机地址的若干位组成的,具体子网所占位数的多少,要根据子网的规模来决定,如果一个网络内的子网数较少,而子网内主机数较多,就应该把两级地址结构中主机地址的大部分位数分配给子网内的主机,少量位用来表示子网号。那么,究竟在一个IP地址中哪些位用来表示网络号,哪些位用来表示子网号,以及哪些位用来表示主机号呢?这就要使用子网掩码(subnetmask)来标识。3.3 IP地址3.3.3子网的划分2. 子网掩码子网掩码用32位二进制数表示,常用点分十进制数格式来书写,掩码中用于标识网络号和子网号的位置为1,主机位为0。举例来说,一个C类地址取主机号的两位为子网号,则掩码为11111111.11111111.11111111.11000000(255.255.255.192),子网可以产生64个可能的主机地址,实际上只有62个地址是可用的,另外两个地址,一个用于识别子网自身,另一个用于子网的广播,因此得到子网内最大可用的主机数时总要减去2。如2位的子网号数学上的组合为00、01、10和11共四种,第一种和最后一种组合有特殊用处,只剩下01和10可用于识别子网,得到2个可用的子网地址。3.3 IP地址3.3.4特殊IP地址IP地址用来标识互联网中的主机,但少数IP地址有特殊用途,不能分配给主机,共有如下几种(以下用Netid表示网络号,用Hostid表示主机号)。1. 网络地址(Netid=特定网络号,Hostid=0)在互联网中经常要使用某个网络的网络地址。在IP地址编码方案中,网络地址由一个有效的网络号和全“0”的主机地址组成。例如,某主机的IP地址为100.1.1.110,它是一个A类地址,则该主机所在网络的地址为100.0.0.0,某主机的IP地址为157.34.12.56,它是一个B类地址,则主机所在网络的地址为157.34.0.0。3.3 IP地址3.3.4特殊IP地址2. 直接广播地址(Netid=特定网络号,Hostid=全1)当IP地址由一个有效的网络号和全“1”的主机地址组成时,这样的IP地址用于广播通信,即同时向指定网络中的所有主机发送数据报,叫直接广播(directedbroadcasting),具有这种特点的IP地址叫直接广播地址。例如,当互联网中的一台主机如果使用157.34.255.255为目标地址发送数据报时,则网络号为157.34.0.0的网络中的所有主机都能收到该数据报。3.3 IP地址3.3.4特殊IP地址3. 有限广播地址(Netid=全1,Hostid=全1)有限广播(limitedbroadcast)地址也称为本网广播地址,如果IP地址的32位二进制数全为“1”,这样的地址用于对本网广播通信。也就是说,如果一台主机发送的数据报,目标IP地址为255.255.255.255,则该数据报被送到本网中的每一台主机。4. 本网特定主机地址(Netid=全0,Hostid=特定主机号)在本网内部主机之间通信时,可以用网络地址全为“0”的IP地址。这有两种情况:一是可能主机想进行本网内主机之间的通信,但又不知道本网的网络地址;二是为了简单起见,在本网络内通信时只给出目标主机的主机号。例如,某主机发送数据报时,目标IP地址为0.0.123.42(B类地址),则表示该数据报要送到本网主机号为123.42的主机上。3.3 IP地址3.3.4特殊IP地址5. 回送地址(Netid=127,Hostid=任意值)A类地址中网络地址为127的地址是一个保留地址,用于网络软件测试或本机进程间通信,发送到这种地址的数据报不输出到线路上,而是数据报被立即返回,又当作输入数据报,在本机内部进行处理,所以称为回送(lookback)地址。在任何网络上不可能出现网络地址为127的数据报在传输,一般用来对本机协议的正确性进行测试。3.3 IP地址3.3.4特殊IP地址6. 本网络本主机(Netid=全0,Hostid=全0)全“0”的IP地址表示本网络上的本主机。从上面可以看出,IP地址网络地址或主机地址中值“全0”和值“全1”有特别的含意,值“全0”表示本网络或本主机;值“全1”表示一个广播地址。如果用户网络不与互联网相连,从原理上来说,可以由用户自行分配IP地址,但最好还是使用互联网地址分配管理机构保留的私有IP地址,这些地址范围是:A类地址:10.0.0.1~10.255.255.254B类地址:172.13.0.1~172.32.255.254C类地址:192.168.0.1~192.168.255.2543.4Internet控制报文协议(ICMP)3.4.1ICMP报文的封装与格式1. ICMP报文的封装ICMP报文和其它协议的报文一样,也由ICMP报文头区和数据区两部分组成。ICMP报文是封装在IP数据报中通过链路层在网络进行传输的。这与高层其它协议(如TCP、UDP等)相似,它在IP数据报头中的协议标识是1。我们通常还是把ICMP看成是网络层(IP层)协议,主要有两个原因:一是ICMP只传送差错与控制报文,不可能在TCP/IP协议簇中构成一个单独的层;二是ICMP报文处理与传输的都是有关IP层的信息,收到ICMP报文的主机一般也把报文交给IP层的ICMP模块进行处理,因此从协议逻辑层次来说,ICMP属于网络层协议。3.4Internet控制报文协议(ICMP)3.4.1ICMP报文的封装与格式2. ICMP报文的格式ICMP报文的格式如图3-17所示,其中报文头分为三个部分:类型、代码和校验和。类型(8位)代码(8位)校验和(16位)ICMP数据区3.4Internet控制报文协议(ICMP)3.4.2ICMP差错报文1. ICMP差错报文的特点报告IP数据报在传输中的差错是ICMP报文最基本的功能,ICMP差错报文有如下特点:(1)ICMP差错报文都是由路由器发送到源主机的,因为IP数据报中含有源主机的IP地址,报告给源主机是最可行的方案,另外,发出IP数据报的源主机最需要知道数据是否到达目标主机。(2)ICMP差错报文只提供IP数据报在传输过程中的差错报告,并不规定对各类差错应采取什么样的处理措施。具体对差错的处理,由收到ICMP差错报文的源主机将相应的差错与应用程序联系起来才能进行相应的差错处理。(3)ICMP差错报文不享受任何优先权,也没有特别的可靠性保证措施,与普通的IP数据报一样进行传输,传输过程中可能被丢失、损坏,甚至被抛弃。(4)ICMP差错报文是伴随着抛弃出错的IP数据报而产生的。3.4Internet控制报文协议(ICMP)3.4.2ICMP差错报文1. ICMP差错报文的特点(5)当路由器发送一份ICMP差错报文时,ICMP报文数据区始终包含产生ICMP差错报文的IP数据报的首部和其数据区的前8个字节(64位)。这样做的目的是,接收到ICMP差错报文的模块就会把它与某个特定的上层协议TCP或UDP(根据IP数据报首部中的协议字段来判断)联系起来,再根据包含在IP数据报数据区前8个字节中的内容,把TCP或UDP报文首部的端口号与某应用程序联系起来(端口在下一章介绍,读者可以学习完下一章内容后,回过头来再学习该内容),这样就可以知道是哪个应用程序发送的数据未送到目标主机,由应用程序做出相应的处理。(6)在有些情况下,为了防止在网络中产生大量的ICMP差错报文(广播风暴),影响网络的正常工作,即使发生差错,也不会产生ICMP差错报文。3.4Internet控制报文协议(ICMP)3.4.2ICMP差错报文2. 目标不可达ICMP报文目标不可达是指当一个路由器检测出一个IP数据报不能发往它的目的地时,路由器发出一个目标不可达的ICMP差错报文。3. IP数据报超时ICMP报文当IP数据报报头中生存时间TTL的值减为0时,路由器则抛弃该IP数据报,并且产生一个ICMP超时报文,向源主机报告超时错误。ICMP超时报文的格式与图3-18所示的ICMP不可达报文格式相同,类型字段取值为11,代码字段为0或为1。为0时表示IP数据报传输期间TTL超时,为1时表示分片重组时超时。4. 参数错误ICMP报文当IP数据报在传输过程中发生数据报报头错误或数据报选项区缺少必要的参数时,路由器则抛弃该IP数据报,并且产生一个ICMP参数出错报文。类型字段为12,代码字段为0或1,为0时表示IP数据报报头错误,引起错误的字节用一个指针字段指出,3.4Internet控制报文协议(ICMP)3.4.3ICMP控制报文1. 拥塞控制与源站抑制报文当一个路由器接收IP数据报的速度比其处理IP数据报的速度快,或一个路由器传入数据报的速率大于传出数据报的速率时,就会产生拥塞(congestion)现象。这时路由器可以通过发送源站抑制(sourcequench)报文来抑制源主机发送IP数据报的速率,避免可能产生的差错。源站抑制技术是如何进行拥塞控制的呢?当路由器发现拥塞时,发出ICMP源站抑制报文。拥塞的判别可以用这几种方法:一是根据路由器缓存区已满,二是给缓存区输出队列设置一个阈值,当队列中数据报的个数超过阈值时,三是检测到某输入线路传输率过高时。源主机收到抑制报文后,按一定的速率降低发往目标主机的数据报传输率。如果在一定的时间间隔内源主机没有收到抑制报文,便认为拥塞已解除,源主机可以逐渐恢复到原来数据报的流量。3.4Internet控制报文协议(ICMP)3.4.3ICMP控制报文2. 路由控制与重定向报文在主机启动后,一般通过默认的路由器把IP数据报发送出去,但不能保证是最优的路由,因为网络中的路由器或网络拓扑结构都可能随网络的调整而以生变化。ICMP重向定报文的格式如图3-21所示,它的类型字段为5,代码字段为0~3。路由器IP地址为源主机向目标主机发送IP数据报时的优化路由。类型(8位)代码(8位)校验和(16位)路由器IP地址IP数据报头部(一般为20个字节)IP数据报数据区前8个字节3.4Internet控制报文协议(ICMP)3.4.4ICMP请求与应答报文差错报文和控制报文都是送往源主机的单向报文,并且对源主机来说都是被动的接受。ICMP请求与应答报文可以由源主机主动发出请求报文,为了响应一个请求,ICMP软件需要发送一个ICMP应答报文。通过这种方法可以获得网络中某些有用的信息,以便进行故障诊断和网络控制。3.5IP数据报路由选择与路由协议3.5.1路由表网络层进行路由选择的依据是保存在路由器中的路由表。路由表保存了通过该路由器可能到达的目标网络以及如何到达该目标网络的信息。路由表中的基本表项包括目标网络地址、子网掩码以及到达目标网络的下一跳路由器地址。目标地址一般为目标网络地址,因为同一个网络中的主机网络号相同,这样做的优点是可以减少路由表的规模,提高对路由表的搜索速度。子网掩码可以使路由器以网络中的子网为目标网络(该例中没有划分子网)。下一站路由器是一个与该路由器连接在同一个网络上的路由器,为了把路由器收到的数据报送到目标网络,路由器必须把数据报传输到该地址指定的接口,下一站路由器并不一定与目标网络直接相连,但是通过它可以把数据报转发到最终目的主机。对与该路由器直接相连的网络则可直接投递。路由表的目标地址主要是目标网络地址,但也可以包含两种特殊的路由表项。一种是默认路由,它可以进一步简化路由表,当路由表中没有表项能与目标网络相匹配时,就把数据报发送到默认路由。3.5IP数据报路由选择与路由协议3.5.2路由选择算法路由器具体如何实现路由选择,由路由选择算法来完成。路由选择算法(routingalgorithm)工作在网络层,它负责确定对所收到的IP数据报应通过哪条传输线传出(转发)。下面给出路由选择的一般算法:1. 路由器从收到的IP数据报中取出目标IP地址;2. 搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口,路由选择过程结束;如果找不到,则执行下一步操作;3. 搜索路由表,把目标IP地址与子网掩码逐位求“与”后,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口,路由选择过程结束;如果找不到,则执行下一步操作;4. 搜索路由表,寻找标为“默认(default)”的表目。如果找到,则把报文发送给该表目指定的下一站路由器;如果找不到,则本次选路失败,发送一个“目标不可达”的ICMP报文给源主机。3.5IP数据报路由选择与路由协议3.5.3路由表的建立与刷新路由器是根据路由表对所收到的数据报进行转发的,那么路由表是如何建立并更新的呢?本小节我们将回答这个问题。路由可分为静态路由和动态路由两种,它们的建立和维护方式不同。1. 静态路由静态路由是由互联网网络管理员,根据网络的拓扑结构和连接方式人工建立的。静态路由在目的地址和路由器端口之间的关系配置好之后,到达一个特定目标网络的IP数据报的路径就固定了。静态路由的优点是可以使网络更安全,因为只有一条流进和流出网络的路径(除非定义多条静态路由)。另一个优点是静态路由配置简单,系统开销少,因为它不使用路由器上的CPU来计算路由,需要很少的存储器就可以保存静态路由。因此在互联网中的很多设备都使用了静态路由,大多数操作系统提供了路由的配置命令route,用于查看、修改、增加或删除路由。静态路由的缺点是配置静态路由工作量大,并且要求网络管理员熟悉互联网的结构,一旦配置有错误就可能造成网络无法正常工作。当网络发生问题或拓扑结构发生变化时,网络管理员要对路由信息重新进行设置。另外,在静态路由配置完成后,由于去往某一目标网络的路径是固定的,如果该路径出现故障,即使有其它路径存在,目标网络也是不可达的。3.5IP数据报路由选择与路由协议3.5.3路由表的建立与刷新2. 动态路由动态路由指互联网中的路由器可以通过自身的学习,自动修改和刷新路由表。它是通过相邻路由器之间的通信,以告知对方每个路由器当前所连接的网络,收到路由信息的路由器就用这些信息对自己的路由进行更新。路由器之间必须采用选路协议进行通信,这样的选路协议有很多种。在路由器上有一个进程称为路由守护程序(routingdaemon),它运行选路协议,并与其相邻的一些路由器进行通信。路由守护程序如果发现前往同一目标系统存在多条路由,那么它以某种方法,选择最佳路由并加入到内核路由表中。如果路由守护程序发现一条链路已经断开(可能是路由器崩溃或通信线路不好造成的),那么它可以删除受影响的路由或增加另一条路由。3.5IP数据报路由选择与路由协议3.5.3路由表的建立与刷新2. 动态路由路由守护程序在选择最佳路由时,是根据一定的选路策略(routingpolicy)来进行的。选路策略与线路的速度、带宽、延迟、可靠性、跳数(IP数据报到达目标站必须经过的路由器个数)等因素有关,每条线路的好坏用一个数字来表示,这个数字称为度量值(Metric),度量值小的线路,说明通过该线路到目标的代价就小。这样在动态路由表中每个表项必须增加度量值这一属性。为了简化对度量值的计算,有些路由协议用跳数(hopcount)代替度量值。动态路由的刷新要通过执行路由选择协议来实现,在互联网中,目前采用了许多不同的选路协议。但每个自治系统AS(AutonomousSystem,自治系统通常指是由单个实体管理的系统,如一个公司或一个大学校园都可以定义为一个自治系统)必须使用相同的选路协议。用户自治系统最常用的路由协议有两种:一种是基于距离-向量路由算法的路由信息协议RIP(RoutingInformationProtocol);另一种中是基于链路-状态路由算法的开放式最短路径优先OSPF(OpenShortestPathFirst)协议。3.5IP数据报路由选择与路由协议3.5.3路由选择协议1. 距离-向量路由算法和路由信息协议RIP距离-向量算法,有时也称为Bellman-Ford算法。该算法的基本思想是路由器会周期性地把自己的路由表拷贝传送给与其直接相连的网络中的各个路由器。也就是说,每个路由器都会把自己可以到达的目标网络(或主机)以及到达这些网络的代价(一般为跳数)告诉给与它相邻的其它路由器,相邻路由器根据收到的路由信息修改或刷新自己的路由表。刷新的原则是使该路由器到其它目标网络的代价最小。举一个例子,如果路由器A告诉路由器B它到路由器C的代价是2,而路由器B自己记录的去路由器C的代价是6,那么,路由器B就会发现它经过路由器A去路由器C的代价只有3(因为路由器B到路由器A为1,路由器A到路由器C为2),所以路由器B就会刷新自己去路由器C的路由,改为通过路由器A到路由器C,代价为3。3.5IP数据报路由选择与路由协议3.5.3路由选择协议距离-向量算法的具体内容描述如下:(1) 在初始启动路由器时,各路由器的路由表中只包含了与本路由器直接相连网络的路由,因为各路由器还不知道去其它网络的信息,并把距离设为0(与本路由器直接相连)。(2) 各路由器周期性地向相邻的路由器广播自己的路由表信息,收到广播路由信息的其它路由器,根据这些信息对自己的路由表进行刷新。如果路由器A收到了发自路由器B的路由信息(以下用A和B表示),则路由器A路由表的刷新可以分为以下几种情况: 添加表项:A收到的路由信息中包含A原来路由表中没有的表项(不可达),则A增加该表项。表项中的目标网络与B的目标网络一样,下一个路由器为B,距离为B到该目标网络的距离加1。 修改表项:A收到的路由信息中的某表项在原来A的路由表中已经存在,也就是说A可达该表项中指出的目标网络。可分为两种情况,一种情况是A原来没有经过B到该目标网络,如果经过B到该目标网络则距离更短,路由表的修改方法是,表项中的目标网络不变,下一个路由器为B,距离为B到该目标网络的距离加1。另一种情况是A原来路由表中到达该目标网络经过B,但新收到B发来的路由信息中距离更短,A的路由表只修改该表项的距离,变为B的距离加1。3.5IP数据报路由选择与路由协议3.5.3路由选择协议 删除表项:原来A的路由表包含经过B去某目标网络的表项,但新收到的B发送的路由信息中没有该表项,说明经过B已经不能到达该目标网络,则该表项必须从A的路由表中删除。距离-向量路由选择算法在网络中的具体使用是通过RIP协议来实现,该协议规定了路由器之间广播发送路由信息(报文)的时间间隔(一般为30秒)、信息格式、错误处理等内容。另外,该协议对于相同开销的路由采用了先入为主为原则,还给路由表中的每条路由增加了一个定时器,如果在180秒内没有收到关于该路由的信息,则认为该路由已过时,从路由表中删除。距离-向量路由的优点是算法简单、易于实现,缺点是当网络失败或发生其他变化时,路由器需要较长的时间才能收敛到对网络拓扑的正确认识。在收敛过程中,网络可能是脆弱的,产生不一致的路由,甚至路由环。有许多措施(如限制路由的最大距离、水平分割、保持对策、毒性逆转等,读者可参看专门介绍网络知识的书籍)来防止这些情况发生,但在收敛过程中,网络的性能仍处于危险之中。RIP协议要求路由器每隔30秒钟无向地广播其路由表,在具有许多节点的大型网络中,这会消耗掉相当数量的带宽,它采用先入为主的原则,缺乏负载均衡的能力。最大距离规定为15,等于或超过16的距离视为不可达路由,限制了网络规模。路由度量值以跳数代替,并且默认跳数使用1(相邻路由之间),没有考虑其它因素。3.5IP数据报路由选择与路由协议2. 链路-状态路由算法和开放式最短路径优先OSPF协议链路-状态路由算法也叫最短路径优先算法,它的基本思想是每个路由器主动地测试与其相连链路的状态,并将这些信息发送给其它相邻的路由器,这样利用扩散,每个路由器可以告诉它所在区域的其它路由器,与它相邻的路由器及其开销,每个路由器接收这些链路状态信息并保存在一个数据库中。根据这些数据,每个路由器都可以构造出一个关于网络结构的拓扑图,根据该图和每条链路的代价,利用最短路径算法,每个路由器都可以求得以自己为根的一棵最短路径生成树,再利用该树生成路由表。开放式最短路径优先OSPF协议是基于链路-状态路由算法的,它的收敛速度比距离向量协议更快,也就是说在路由发生变化后(如在路由器关闭或链路出故障),它可以较快的稳定下来。它还可以根据吞吐率、往返时间、可靠性或其他性能来生成路由。另外,当同一个目的地址存在着多个相同费用的路由时,OSPF在这些路由上可以平均分配流量(流量平衡)。综上所述,OSPF是一个真正意义上的动态路由协议,现在,由于大部分厂商提供的路由器支持OSPF协议,因此使用OSPF的网络越来越多。3.6地址转换协议3.6.1ARP协议1. ARP报文格式在常用的以太中,ARP报文被封装成如图3-26所示的以太网数据帧,然后以广播方式发送到物理网络。以太网目标地址(6字节)以太网源地址(6字节)帧类型(2字节)ARP报文(28字节)3.6地址转换协议3.6.1ARP协议1. ARP报文格式ARP报文格式如图3-27所示,硬件类型(16位)协议类型(16位)硬件地址长度(8位)协议地址长度(8位)操作代码(16位)发送方硬件地址(以太网为6字节)发送方协议地址(IP地址为4字节)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论