1、第第2章章 IP协议协议 第第2章章 IP协议协议 2.1 IP2.1 IP协议如何进行网络互联协议如何进行网络互联2.2 IP2.2 IP地址地址2.3 IP2.3 IP数据报格式数据报格式 2.4 Internet2.4 Internet控制报文协议控制报文协议(ICMP)(ICMP)2.5 2.5 地址解析地址解析2.6 2.6 IP数据报的路由选择数据报的路由选择习题习题第第2章章 IP协议协议 2.1 IP协议如何进行网络互联协议如何进行网络互联 2.1.1 网络互联方式面对一个由很多网络连接而成的互联网,在进行数据通信时,数据是如何从源端传输到目标端的呢?我们可以举一个日常生活中的
2、例子来说明这个问题,如有图2-1所示的一个城市交通图。第第2章章 IP协议协议 终点站始发站A城D城E城F城B城C城14375286图2-1 城市交通图示例 第第2章章 IP协议协议 在图2-1中有六个城市,它们之间通过图中所示的公路相连,为了便于说明问题,我们对图中的公路进行了编号。图2-1中所示的城市交通图与多个网络连接而成的互联网是非常相似的,图2-1中的一个城市相当于互联网中的一个网络,连接城市的公路相当于连接网络的介质,每条路上都有一个负责选路的路由器(在图2-2中用表示),这样我们可以把图2-1所示的交通图对应成图2-2所示的网络互联图。第第2章章 IP协议协议 A网络D网络E网络
3、F网络B网络C网络1375286虚电路4主机主机图2-2 网络互联网 第第2章章 IP协议协议 前面在交通图中所述的两种不同送信(通信)过程,正好与网络互联的两种解决方案相对应。这两种网络互联方案是:面向连接的(Connect-oriented)和无连接的(Connectionless)。面向连接的解决方案要求在通信的源端和目标端之间建立一条逻辑通路,一般称为虚电路(Virtual Circuit),源端和目标端之间通信时的所有信息都通过该通路传输,这与交通图中送信过程的第一种方式类似。这种方式看似简单,易于实现,但其最大的缺点是如果不能保证虚电路中沿途经过的节点都能可靠地发送数据,就可能使网
4、络崩溃。由于互联网所连网络的复杂性和多样性,因而很难保证所有节点都能可靠地发送数据。第第2章章 IP协议协议 无连接的互联网解决方案与交通图中送信过程的第二种方式类似,它在源端和目标端之间不建立一条逻辑通路,而送到网络中的每个分组带有完整的目标主机地址,收到分组的节点(主要是路由器)根据目标地址和当前网络状况(如通信量等),选择一条合适的线路把分组发送到接近目标端的下一个节点,通过多个节点的转发,最终把分组送达目标节点。使用这种方式时,由源端顺序送出的各分组,由于每个分组在网络中可能经过不同的路径到达目标端,所以先发出的分组不一定就先到达目标端,另外,也不能保证每个分组都能可靠地到达目标端。第
5、第2章章 IP协议协议 无连接方式的优点是显而易见的,源端和目标端之间的通信可以通过多条通路进行,而不依赖于某一条通路,因此可靠性和通信效率高。另外,这种方式实现起来也比较简单,适合于异构网络的互联,因此被很多网络厂商所使用。Internet使用的就是这种无连接的方式,由IP协议来实现。第第2章章 IP协议协议 2.1.2 IP互联网原理 利用信息隐蔽原理,在互联网中把不同网络的实现细节通过IP层隐藏起来,达到在网络层逻辑上一致的目的,如图2-3所示。第第2章章 IP协议协议 以太网数据帧令牌环网 数据 帧FDDIIP 协议对高层提供统一的 IP 数据报图2-3 IP对不同数据帧的统一 第第2
6、章章 IP协议协议 2.1.3 IP协议的地位与IP互联网的特点互联网上的所有数据报都要经过IP协议进行传输,它是通信网络与高层协议的分界,如图2-4所示。第第2章章 IP协议协议 应用程序应用程序应用程序应用程序TCPUDPIGMPIPIGMPRARP硬件接口ARP物理传输介质链路层网络层传输层应用层图2-4 IP协议在TCP/IP协议族中的地位 第第2章章 IP协议协议 使用IP协议的互联网具有以下重要特点:(1)IP协议是一种无连接(Connectionless)不可靠(Unreliable)的数据报传输协议。(2)IP互联网中的计算机没有主次之分,所有主机地位平等(因为惟一标识它们的是
7、IP地址),当然从逻辑上来说,所有网络(不管规模大小)也没有主次之分。(3)IP互联网没有确定的拓扑结构,就像图2-2所示的那样。第第2章章 IP协议协议(4)在IP互联网中的任何一台主机,都至少有一个独一无二的IP地址,有多个网络接口卡的计算机每个接口可以有一个IP地址,这样一台主机可能就有多个IP地址。有多个IP地址的主机叫多宿主机(Multi-home Host)。(5)在互联网中有IP地址的设备不一定就是一台计算机,如IP路由器、网关等,因为与互联网有独立连接的设备都要有IP地址。第第2章章 IP协议协议 2.2 IP地址2.2.1 IP地址的结构互联网是由很多网络连接而成的,互联网中
8、的数据报有些是在本网内主机之间传输的,有些是要送到互联网中其他网络中的主机中去的,因此,IP地址不但要标识在本网内的主机号,还要标识在互联网中的网络号,如图2-5所示。第第2章章 IP协议协议 图2-5 IP地址结构网络号主机号一个IP地址第第2章章 IP协议协议 2.2.2 IP地址的表示格式Internet现在使用的IP协议是IPv4(第四版),它使用32位二进制数(即4个字节)表示一个IP地址,在进行程序设计时一般用长整型。用二进制数表示IP地址适合于机器使用,但对用户来说难写,难记,易出错,因此人们常把IP地址按字节分成4个部分,并把每一部分写成等价的十进制数,数之间用“.”分隔,这就
9、是人们最常用的“点分十进制”表示法。IP地址的各种表示法如表2-1所示。第第2章章 IP协议协议 表2-1 IP地址的不同表示法表示方法 举 例 说 明 二进制 10000110000110000000100001000010 计算机内部使用 十进制 2249721922 很少使用 十六进制 0 x86180842 较少使用 点分十进制 134.24.8.66 最常用 第第2章章 IP协议协议 表中后三种地址表示方法只是为了人们书写方便而使用的,计算机内部使用IP地址时都要将其转化为二进制数。IP地址用32位二进制数表示,从数学上计算,应该一共有4 294 967 296个IP地址。在点分十进
10、制数表示法中,每个位组用0255之间的一个十进制数表示,因此最小的IP地址值为0.0.0.0,最大的地址值为255.255.255.255。然而由于有相当一部分IP地址有特殊用途,因而实际主机可用的IP地址要比这个范围小很多。第第2章章 IP协议协议 2.2.3 IP地址的分类根据前面学过的内容可知,IP地址由网络号和主机号两部分组成。在Internet发展的初期,人们用IP地址的前8位来定义所在的网络,后24位用来定义该主机在当地网络中的地址。这样互联网中最多只能有255(应该有256个,但全1的IP地址用于广播)个网络。后来由于这种方案可以表示的网络数太少,而每个网络中可以连入的主机又非常
11、多,于是人们设计了一种新的编码方案,该方案中用IP地址高位字节的若干位来表示不同类型的网络,以适应大型、中型、小型网络对IP地址的需求。这种IP地址分类法把IP地址分为A、B、C、D和E共五类,用IP地址的高位来区分,如图2-6所示。第第2章章 IP协议协议 01 0A类IP地址B类IP地址网络号主机号1 1 0C类IP地址网络号主机号1 1 1 0D类IP地址多播地址1 1 1 1 0E类IP地址保留地址网络号主机号图2-6 IP地址的分类 第第2章章 IP协议协议 这五类IP地址的特点见表2-2。表2-2 各类IP地址的特点类别 类标识 第一字节 网络地址长度 主机地址长度 最大网络数 最
12、大主机数 选用范围 A 类 0 1126 1字节 3字节 126 16777214 大型网络 B类 10 128191 2字节 2字节 16382 65534 中型网络 C类 110 192223 3字节 1字节 2097150 254 小型网络 D 类 1110 224239 多点播送 E类 11110 240247 保留地址 第第2章章 IP协议协议 2.2.4 一些有特殊用途的IP地址IP地址用来标识互联网中的主机,但少数IP地址有特殊用途,不能分配给主机,这些IP地址共有如下六种(以下用Netid表示网络号,用Hostid表示主机号)。1网络地址(Netid=特定网络号,Hostid=
13、0)在互联网中经常要使用某个网络的网络地址。在IP地址编码方案中,网络地址由一个有效的网络号和全“0”的主机地址组成。第第2章章 IP协议协议 2直接广播地址(Netid=特定网络号,Hostid=全1)当IP地址由一个有效的网络号和全“1”的主机地址组成时,这样的IP地址用于广播通信,即同时向指定网络中的所有主机发送数据报,叫直接广播(Directed Broadcast),具有这种特点的IP地址叫直接广播地址。3有限广播地址(Netid=全1,Hostid=全1)有限广播(Limited Broadcast)地址也称为本网广播地址。如果IP地址的32位二进制数全为“1”,则这样的地址用于对
14、本网广播通信。也就是说,如果一台主机发送的数据报,其目标IP地址为255.255.255.255,则该数据报被送到本网中的每一台主机。第第2章章 IP协议协议 4本网特定主机地址(Netid=全0,Hostid=特定主机号)在本网内部主机之间通信时,可以用网络地址全为“0”的IP地址。这包括两种情况:一是可能主机想进行本网内主机之间的通信,但又不知道本网的网络地址;二是为了简单起见,在本网络内通信时只给出目标主机的主机号。5.回送地址(Netid=127,Hostid=任意值)A类地址中,网络地址为127的地址是一个保留地址,用于网络软件测试或本机进程间通信。发送到这种地址的数据报不输出到线路
15、上,而是立即被返回,又当作输入数据报在本机内部进行处理,所以将这种地址称为回送(Look Back)地址。在任何网络上不可能出现网络地址为127的数据报在传输,它一般只用来对本机协议的正确性进行测试。第第2章章 IP协议协议 6.本网络本主机(Netid=全0,Hostid=全0)全“0”的IP地址表示本网络上的本主机。这些地址范围是:A类地址:10.0.0.110.255.255.254;B类地址:172.13.0.1172.32.255.254;C类地址:192.168.0.1192.168.255.254。第第2章章 IP协议协议 2.2.5 子网与子网掩码 1.子网与子网地址IP地址最
16、初使用两层地址结构(包括网络地址和主机地址),在这种结构中A类和B类网络所能容纳的主机数非常庞大,但使用C类IP地址的网络只能接入254台主机,见表2-2。因此,人们提出了三层结构的IP地址,把每个网络可以进一步划分成若干个子网(Subnet),子网内主机的IP地址由三部分组成,如图2-7所示,把两级IP地址结构中的主机地址分割成子网地址和主机地址两部分。第第2章章 IP协议协议 网络地址网络地址子网地址主机地址主机地址普通IP地址两级结构子网IP地址三级结构图2-7 子网IP地址结构 第第2章章 IP协议协议 2子网掩码对于划分了子网的网络,子网地址是由两级地址结构中主机地址的若干位组成的,
17、具体子网所占位数的多少,要根据子网的规模来决定。如果一个网络内的子网数较少,而子网内主机数较多,就应该把两级地址结构中主机地址的大部分位分配给子网内的主机,少量位用来表示子网号。那么,究竟在一个IP地址中哪些位用来表示网络号,哪些位用来表示子网号,以及哪些位用来表示主机号呢,这就要使用子网掩码(Subnet Mask)来标识。第第2章章 IP协议协议 子网掩码用32位二进制数表示,常用点分十进制数格式来书写,掩码中用于标识网络号和子网号的位置为1,主机位为0。举例来说,一个C类地址取主机号的两位为子网号,则掩码为11111111.11111111.11111111.11000000(255.2
18、55.255.192),子网可以产生64个可能的主机地址,但实际上只有62个地址是可用的,另外两个地址,一个用于识别子网自身,另一个用于子网的广播,因此得到子网内最大可用的主机数时总要减去2。如两位的子网号数学上的组合为00、01、10和11共四种,第一种和最后一种组合有特殊用处,只剩下01和10可用于识别子网,得到两个可用的子网地址。第第2章章 IP协议协议 3.子网划分实例如果用户申请到一个C类网络地址193.168.125.0,需要在该网络内划分出6个子网,那么至少需要用8位主机地址中的3位来表示子网号,用图2-8表示。第第2章章 IP协议协议 11000001.10101000.011
19、11101.193168125.网络地址子网地址 主机地址图2-8 子网IP地址位数分配第第2章章 IP协议协议 这样可用的子网地址是001、010、011、100、101和110(注意000和111除外)。主机地址中剩下的5位用于识别主机,共有32个主机号,可用的主机号有30个,也就是说每个子网最多有30台主机,则:子网掩码:11111111.11111111.11111111.111000001号子网地址:11000001.10101000.01111101.00100000(193.168.125.32),主机号为33622号子网地址:11000001.10101000.01111101
20、.01000000(193.168.125.64),主机号为6594第第2章章 IP协议协议 3号子网地址:11000001.10101000.01111101.01100000(193.168.125.96),主机号为971264号子网地址:11000001.10101000.01111101.10000000(193.168.125.128),主机号为1291585号子网地址:11000001.10101000.01111101.10100000(193.168.125.160),主机号为1611906号子网地址:11000001.10101000.01111101.11000000(19
21、3.168.125.192),主机号为193222第第2章章 IP协议协议 2.3 IP数据报格式数据报格式 IP数据报的格式如图2-9所示。第第2章章 IP协议协议 版本号(4位)头长度(4位)服务类型TOS(8位)总 长 度(16位)标 识(16位)标志(3位)片 偏 移(13位)上层协议标识(8位)生存时间TTL(8位)头 部 校 验 和(16位)源 IP 地 址(32位)目 标 IP 地 址(32位)选 项数 据07 8151631报头区数据区图2-9 IP数据报格式第第2章章 IP协议协议 2.3.1 IP数据报各字段的功能IP数据报中的每一个域包含了IP报文所携带的一些信息,正是用
22、这些信息来完成IP协议功能的,现说明如下。1版本号 2头长度3服务类型(TOS,Type Of Service)服务类型用8位二进制数表示,规定对本数据报的处理方式。服务类型字段的8位分成了5个子域,如图2-10所示。(1)优先权:占02位,这3位二进制数表示的数据范围为000111(07)。第第2章章 IP协议协议 优先权D01234567TR保留图2-10 服务类型子域结构 第第2章章 IP协议协议(2)短延迟位D(Delay):该位被置1时,数据报请求以短延时信道传输,0表示正常延时。(3)高吞吐量位T(Throughput):该位被置1时,数据报请求以高吞吐量信道传输,0表示普通。(4
23、)高可靠性位R(Reliability):该位被置1时,数据报请求以高可靠性信道传输,0表示普通。(5)保留位:第6和第7位,目前未用,但需置0。应注意在有些实现中,可以使用第6位表示低成本。对不同应用,TOS的建议数据值列于表2-3中。第第2章章 IP协议协议 表2-3 TOS建议使用数值 应用程序 短延迟位D 高吞吐量位T 高可靠性位R 低成本位 十六进制值 特性 Telnet 1 0 0 0 0 x10 短延迟 FTP控制 1 0 0 0 0 x10 短延迟 FTP数据 0 1 0 0 0 x08 高吞吐量 TFTP 1 0 0 0 0 x10 短延迟 SMTP命令 1 0 0 0 0
24、x10 短延迟 SMTP数据 0 1 0 0 0 x08 高吞吐量 DNS UDP查询 1 0 0 0 0 x10 短延迟 DNS TCP查询 0 0 0 0 0 x00 普通 DNS 区域传输 0 1 0 0 0 x08 高吞吐量 ICMP差错 0 0 0 0 0 x00 普通 ICMP查询 0 0 0 0 0 x00 普通 SNMP 0 0 1 0 0 x04 高可靠性 IGP 0 0 1 0 0 x04 高可靠性 NNTP 0 0 0 1 0 x02 低成本 第第2章章 IP协议协议 4总长度总长度用16位二进制数表示,总长度字段是指整个IP数据报的长度,以字节为单位。5生存时间(TTL
25、,Time To Live)生存时间用8位二进制数表示,它指定了数据报可以在网络中传输的最长时间。在实际应用中为了简化处理过程,把生存时间字段设置成了数据报可以经过的最大路由器数。TTL的初始值由源主机设置(通常为32、64、128或者256),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值减为0时,数据报就被丢弃,并发送ICMP报文(2.4节介绍)通知源主机,这样可以防止进入一个循环回路时,数据报无休止地传输。第第2章章 IP协议协议 6上层协议标识上层协议标识用8位二进制数表示,从图2-4可知,IP协议可以承载多种上层协议,目标端根据协议标识,就可以把收到的IP数据报送至TCP或
26、UDP等处理此报文的上层协议。表2-4给出了常用的网际协议编号。第第2章章 IP协议协议 表2-4 常用网际协议编号十进制编号 协 议 说 明 0 无 保留 1 ICMP 网际控制报文协议 2 IGMP 网际组管理协议 3 GGP 网关网关协议 4 无 未分配 5 ST 流 6 TCP 传输控制协议 8 EGP 外部网关协议 9 IGP 内部网关协议 11 NVP 网络声音协议 17 UDP 用户数据报协议 第第2章章 IP协议协议 7校验和校验和用16位二进制数表示,这个域用于协议头数据有效性的校验,可以保证IP报头区在传输时的正确性和完整性。8源地址源地址是用32位二进制数表示的发送端IP
27、地址。9目的地址目的地址是用32位二进制数表示的目的端IP地址。第第2章章 IP协议协议 2.3.2 IP数据报分片与重组1.最大传输单元MTU表2-5列出了几种常用网络的MTU值。第第2章章 IP协议协议 表2-5 几种常用网络的MTU值网 络 名 称 MTU(单位:字节)以太网 1500 IEEE802.3/802.2 1492 FDDI 4352 ATM(信元)48 X.25 576 点到点(低延时)296 令牌环网(IBM 16 MB/s)17 914 令牌环网(IEEE802.5 IBM 16 MB/s)4464 第第2章章 IP协议协议 2.分片 如图2-11所示的一个IP数据报(
28、假设数据区长度为1500字节)被分成了三个IP数据报。第第2章章 IP协议协议 IP数据报头部IP数据报头部 3数据区 3(300 B)数据区 2(600 B)IP数据报头部 2数据区 1(600 B)IP数据报头部 1数据区(1500 B)原IP数据报分片1分片2分片3图2-11 IP数据报的分片过程 第第2章章 IP协议协议 分片后的IP数据报,其数据区(如图2-11所示)是原IP数据报数据区的一个连续部分(一段),头部是原IP数据报头部的复制,但与原来未分片的IP数据报头部有两点主要不同:标志和片偏移。(1)标志:在IP数据报的头部,有一个叫标志的字段,用3位二进制数表示,如图2-12所
29、示。未使用不分片(DF)片未完(MF)图2-12 IP数据报头标志位 第第2章章 IP协议协议(2)片偏移:在图2-11中,IP数据报被分成3片之后,各片数据区在原来IP数据区中的位置用13位片偏移表示。3重组当分了片的IP数据报被传输到最终目标主机时,目标主机要对收到的各分片重新进行组装,以恢复成源主机发送时的IP数据报,这个过程叫IP数据报的重组。在IP数据报头部中,标识用16位二进制数表示,它惟一地标识主机发送的每一份数据报。目标端主机重组数据报的原理是:根据标识可以确定收到的分片属于原来哪个IP数据报;根据标志字段的片未完MF子字段可以确定分片是不是最后一个分片;根据偏移量就可以确定分
30、片在原数据报中的位置。第第2章章 IP协议协议 2.3.3 IP数据报选项IP数据报选项主要有两大功能:一是可以用来实现对数据报传输过程的控制,如规定数据报要经过的路由;二是进行网络测试,如一个数据报传输过程中经过了哪些路由器。IP选项域共分为四大类,如表2-6所示。第第2章章 IP协议协议 表2-6 IP数据报选项选项类 用 途 选项号 长度 功 能 0 IP 数据报头中的任选项域结束 1 无操作 2 11 字节 安全和处理限制(用于军事领域,详细内容参见RFC 1108Kent 1991)3 可变 设置宽松源路由选择 7 可变 记录数据报经过的路由 0 类 数据报或 网络控制 9 可变 设
31、置严格源路由选择 1 类 未使用 2 类 调试与测量 可变 记录 Internet 时戳 3 类 未使用 第第2章章 IP协议协议 IP数据报选项由三个部分组成:选项码、选项长度和选项数据,如图2-13所示。复制 选项类选项号选项码选项长度选项数据1位2位5位图2-13 IP数据报头标志位第第2章章 IP协议协议(1)复制:占1位,用来控制一个带有选项的IP数据报被分片后对选项的处理方式。如果该位被置1,将选项复制到所有分片中;被置0,将选项仅复制到第一个分片中。(2)选项类和选项号:选项类占2位,选项号占5位,用于确定该选项是哪类选项中的哪个选项,其实就是用于确定该选项的功能,可参见表2-6
32、。第第2章章 IP协议协议 1源路由选择所谓源路由选择(Source Routing),是指IP数据报在互联网中传输时,所经过的路由是由发出IP数据报的源主机指定的,以区别于数据报在互联网中传输时由路由器的IP层自动寻径所得到的路由。通过设置源路由选择选项,可以测试网络中指定路由的连通性,以使数据报绕开出错的网络,也可用于测试特定网络的吞吐量。源路由选择分为两类,一类是严格源路由选择(Strict Source Routing),另一类是宽松源路由选择(Loose Source Routing)。第第2章章 IP协议协议(1)严格源路由选择。严格源路由选择选项格式如图2-14所示。(2)宽松源
33、路由选择。第第2章章 IP协议协议 选项码选项长度指针第1站IP地址1字节 1字节 1字节4字节第2站IP地址4字节第3站IP地址4字节第9站IP地址4字节图2-14 IP数据报头中严格源路由选择选项格式第第2章章 IP协议协议 2记录路由 3记录时间戳时间戳选项的格式与源路由选择选项类似,如图2-15所示。第第2章章 IP协议协议 选项码选项长度指针第1站IP地址1字节 1字节 1字节4字节第1时间戳4字节第2站IP地址4字节溢出4位标志4位第2时间戳4字节图2-15 IP数据报头中时间戳选项格式第第2章章 IP协议协议 时间戳选项的选项码为0 x44。选项长度表示选项的总长度(一般为36或
34、40),指针指向下一个可用空间的指针(值为5、9、13等)。接下来的两个字段各占4位:溢出字段OF(Over Flow)表示因时间戳选项数据区空间不够而未能记录下来的时间戳个数;标志字段FL用于控制时间戳选项的格式,其值的含义如表2-7所示。第第2章章 IP协议协议 表2-7 时间戳选项标志字段含义标志字段值 含 义 0 只记录时间戳,不记录 IP 地址,即在图 2-15 所示的格式中去掉 IP 地址项,只记录每台路由器的时间戳。由于没有 IP 地址做参考,所以用途有限 1 记录数据报通过路径时每台路由器的 IP 地址和时间戳。在选项列表中只有存放 4对 IP 地址和时间戳的空间。其格式与图
35、2-15 所示的格式一致 3 发送端对选项列表进行初始化,存放了 4 个 IP 地址和 4 个取值为 0 的时间戳值。只有当列表中的下一个 IP 地址与当前路由器地址相匹配时,才记录它的时间戳。这种方式用途较广 第第2章章 IP协议协议 时间戳选项提供了IP数据报传输中的时域参数,可用于分析网络吞吐量、拥塞情况和负载情况等。在ping网络命令中提供了对严格源路由选择、宽松源路由选择和记录时间戳的支持,读者可以使用ping的帮助信息来查看这些参数。使用ping命令的这些功能,可以帮助读者理解IP数据报头选项。最后要说明,并非所有的主机和路由器都支持这些选项。另外,如果一个选项字段不是以32位二进
36、制数为界限的,则要在最后插入值为0的填充字符。这样就保证了IP头部始终是32位二进制的整数倍,这是因为头部长度是以32位二进制数为计数单位的。第第2章章 IP协议协议 2.4 Internet控制报文协议(ICMP)2.4.1 ICMP报文的封装与格式1ICMP报文的封装ICMP报文和其他协议的报文一样,也是由ICMP报文头区和数据区两部分组成的。ICMP报文是封装在IP数据报中通过链路层在网络中进行传输的,如图2-16所示。第第2章章 IP协议协议 IP报文头区IP数据区ICMP报文头区ICMP数据区ICMP报文IP数据报图2-16 ICMP报文及封装 第第2章章 IP协议协议 2ICMP报
37、文的格式ICMP报文的格式如图2-17所示,其中报文头分为三部分:类型、代码和校验和。类型(8位)代码(8位)校验和(16位)ICMP数据区图2-17 ICMP报文的格式 第第2章章 IP协议协议 类型字段占一个字节,每个取值描述特定类型的ICMP报文,如表2-8所示。第第2章章 IP协议协议 表2-8 ICMP报文类型类型 代码 说 明 查询 差错 0 0 回送应答(ping 命令应答)目 标 不 可 达 0 网络不可达 1 主机不可达 2 协议不可达 3 端口不可达 4 需要进行分片,但设置了 DF 不分片(2.3.2 节)5 源路由选择失败 3 6 目标网络未知 第第2章章 IP协议协议
38、 7 目标主机未知 8 源主机被隔离 9 与目标网络的通信被强制禁止 10 与目标主机的通信被强制禁止 11 对于请求的服务类型 TOS,网络不可达 12 对于请求的服务类型 TOS,主机不可达 13 由于过滤,通信被强制禁止 14 主机越权 15 优先权中止生效 表2-8 ICMP报文类型第第2章章 IP协议协议 4 0 源站抑制(用于拥塞控制)重 定 向 0 对网络重定向 1 对主机重定向 2 对服务类型和网络重定向 5 3 对服务类型和主机重定向 8 0 回送请求(ping 命令请求)9 0 路由通告 10 0 路由请求 表2-8 ICMP报文类型第第2章章 IP协议协议 超 时 0 在
39、数据报传输期间生存时间 TTL 为 0 11 1 在数据报组装期间生存时间 TTL 为 0 参 数 出 错 0 IP 数据报头部错误(包括各种差错)12 1 缺少必需的选项 13 0 时间戳请求 14 0 时间戳应答 17 0 地址掩码请求 18 0 地址掩码应答 表2-8 ICMP报文类型第第2章章 IP协议协议 2.4.2 ICMP差错报文1ICMP差错报文的特点报告IP数据报在传输中的差错是ICMP报文最基本的功能,ICMP差错报文有如下特点:(1)ICMP差错报文都是由路由器发送到源主机的,因为IP数据报中含有源主机的IP地址,报告给源主机是最可行的方案,另外,发出IP数据报的源主机最
40、需要知道数据是否到达目标主机。(2)ICMP差错报文只提供IP数据报在传输过程中的差错报告,并不规定对各类差错应采取什么样的处理措施。具体对差错的处理,由收到ICMP差错报文的源主机将相应的差错与应用程序联系起来才能进行相应的差错处理。第第2章章 IP协议协议(3)ICMP差错报文不享受任何优先权,也没有特别的可靠性保证措施,与普通的IP数据报一样进行传输,传输过程中可能被丢失、损坏,甚至被抛弃。(4)ICMP差错报文是伴随着抛弃出错的IP数据报而产生的。(5)当路由器发送一份ICMP差错报文时,ICMP报文数据区始终包含产生ICMP差错报文的IP数据报的头部和其数据区的前8个字节(64位)。
41、第第2章章 IP协议协议(6)在有些情况下,为了防止在网络中产生大量的ICMP差错报文(广播风暴),影响网络的正常工作,即使发生差错,也不会产生ICMP差错报文,这些情况包括:ICMP报文发生差错。这是为了避免差错报文无休止产生而规定的(但ICMP查询报文可能会产生ICMP差错报文)。目的地址是广播地址或多播地址(D类地址)的IP数据报。作为链路层广播的数据报。不是IP分片的第一片。源地址不是单个主机的数据报。这就是说,源地址不能为零地址、回送地址、广播地址或多播地址。第第2章章 IP协议协议 2.目标不可达ICMP报文目标不可达是指当一个路由器检测出一个IP数据报不能发往它的目的地时,路由器
42、发出一个目标不可达的ICMP差错报文。其报文格式如图2-18所示。第第2章章 IP协议协议 代 码(8位)校 验 和(16位)07 815 1631类 型(8位)未使用(32位,但必须为全0)不可达IP数据报头部(一般为20个字节)不可达IP数据报数据区前8个字节图2-18 目标不可达ICMP报文 第第2章章 IP协议协议 3.IP数据报超时ICMP报文4.参数错误ICMP报文如图2-19所示 第第2章章 IP协议协议 代 码(8位)校 验 和(16位)07 815 1631类型(8位)未使用(24位,但必须为全0)错误的IP数据报头部(一般为20个字节)IP数据报数据区前8个字节指针(8位)
43、图2-19 IP数据报报头错误ICMP报文格式 第第2章章 IP协议协议 2.4.3 ICMP控制报文1拥塞控制与源站抑制报文当一个路由器接收IP数据报的速度比其处理IP数据报的速度快,或一个路由器传入数据报的速率大于传出数据报的速率时,就会产生拥塞(Congestion)现象。这时路由器可以通过发送源站抑制(Source Quench)报文来抑制源主机发送IP数据报的速率,避免可能产生的差错。第第2章章 IP协议协议 源站抑制报文的格式与图2-18所示的不可达ICMP报文格式完全一样。其类型字段为4,代码字段只能为0。源站抑制技术进行拥塞控制的方法如下:(1)当路由器发生拥塞时,便发出ICM
44、P源站抑制报文。拥塞的判别可以用三种方法:一是检查路由器缓存区是否已满;二是给缓存区输出队列设置一个阈值,判断队列中数据报的个数是否超过阈值;三是检测某输入线路的传输率是否过高。(2)源主机收到抑制报文后,按一定的速率降低发往目标主机的数据报传输率。(3)如果在一定的时间间隔内源主机没有收到抑制报文,便认为拥塞已解除,源主机可以逐渐恢复到原来数据报的流量。第第2章章 IP协议协议 2.路由控制与重定向报文在图2-20所示的例子中,假如源主机要向目标主机发送IP数据报,源主机的默认路由是路由器1,则源主机先把IP数据报送到路由器1,再由路由器1进行路由选择。路由器1经过选路后,把IP数据报送到路
45、由器2,同时路由器1也发现源主机要发送到目标主机的IP数据报以后可以直接发送到路由器2(因为路由器1和路由器2同在一个网络中),则路由器1向源主机发送一个ICMP重定向报文,告诉它可以直接把IP数据报送到路由器2。这样,就使源主机始终保持着一个动态的、既小且优的路径表。第第2章章 IP协议协议 目标主机路由器2路由器1ICMP重定向报IP数据报源主机IP数据报后继IP数据报图2-20 ICMP重定向例子第第2章章 IP协议协议 ICMP重定向报文的格式如图2-21所示,它的类型字段为5,代码字段为03,见表2-8。路由器IP地址为源主机向目标主机发送IP数据报时的优化路由。第第2章章 IP协议
46、协议 代 码(8位)校 验 和(16位)078151631类型(8位)路由器IP地 址IP 数据报头部(一般为20个字节)IP数据报数据区前8个字节图2-21 ICMP重定向报文格式 第第2章章 IP协议协议 2.4.4 ICMP请求与应答报文1.回送请求与应答报文回送请求报文由源主机发出,目标主机应答,用于测试另一台主机或路由器是否可达。其报文格式如图2-22所示。第第2章章 IP协议协议 代 码(8位)校 验 和(16位)07 815 1631类型(8位)标识符(16位)任 选 数 据(一 般 为32字 节)序 号(16位)图2-22 回送请求与应答ICMP报文格式 第第2章章 IP协议协
47、议 2.地址掩码请求与应答报文3时间戳请求与应答报文时间戳请求与应答的报文格式如图2-23所示。第第2章章 IP协议协议 代 码(8位)校 验 和(16位)07 815 1631类型(8位)标识符(16位)序 号(16位)发送时间 戳(4字节)接收时间戳(4字节)传送时间戳(4字节)图2-23 ICMP时间戳请求与应答报文格式第第2章章 IP协议协议 2.5 地址解析TCP/IP协议族专门设计了用于地址解析的协议ARP(Address Resolution Protocol),它可以把一个IP地址映射成对应的物理地址。另外,对于无法保存IP地址的主机(如无盘工作站),TCP/IP协议族中也提供
48、了从物 理 地 址 到 I P 地 址 映 射 的 反 向 地 址 解 析 协 议RARP(Reverse Address Resolution Protocol),如图2-24所示。第第2章章 IP协议协议 应用层传输层网络层链路层应用层传输层网络层链路层IP地址物理地址ARPRARP图2-24 ARP和RARP第第2章章 IP协议协议 2.5.1 ARP协议1ARP报文格式在常用的以太网中,ARP报文被封装成如图2-25所示的以太网数据帧,然后以广播方式发送到物理网络。ARP报文格式如图2-26所示。第第2章章 IP协议协议 以太网目标地址(6字节)以太网源地址(6字节)帧类型(2字节)A
49、RP报文(28字节)以太网帧头以太网帧数据区图2-25 ARP报文的以太网封装格式第第2章章 IP协议协议 协议地址长度(8位)协议类型(16位)07 815 1631硬件地址长度(8位)硬 件 类 型(16位)操作代码(16位)发送方硬件地址(以太网为6字节)发送方协议地址(IP地址为4字节)目标方硬件地址(以太网为6字节)目标方协议地址(IP地址为4字节)5图2-26 ARP报文格式第第2章章 IP协议协议(1)硬件类型。硬件类型字段占2个字节,表示发送者硬件地址的类型。它的值为1即表示以太网地址。(2)协议类型。协议类型字段占2个字节,表示发送方要映射的协议地址类型,该字段的常用值如表2
50、-9所示。第第2章章 IP协议协议 表2-9 协议类型字段常用值(即以太网协议类型字段)十进制值 十六进制值 描 述 512 0200 Xerox PUP 513 0201 PUP 地址翻译 1536 0600 Xerox NS IDP 2048 0800 网际协议 IP 2049 0801 X.75 网际 2050 0802 NBS 网际 2051 0803 ECMA 网际 2052 0804 混沌网络(Chaosnet)2053 0805 X.25 第三层(Level 3)2054 0806 地址解析协议(ARP)32 821 8035 反向地址解析协议(RARP)32 824 8038