6.1 Internet概述
表面上看,Internet与广域网差不多,但实际上相差很远。广域网是一个比
较独立的网络,拥有一个连接非常紧密的结构,并且有一个专门的机构对整个网
络进行维护。而Internet是由成千上万个网络松散地连接而成的,它不属于任何
一个国家、部门、单位、团体,也没有一个专门的机构对它进行维护;任何一台计
算机,任何一个网络,只要遵守共同的规则———TCP/IP,就可以与它连接在一起。
所以,有人说它是一个虚拟网,也有人说它是一个网上之网。图6.1是Internet
的结构示意图。
图6.1 Internet结构示意图
6.1.1 TCP/IP概述
在Internet中包含的网络是形形色色的,它们的硬件组成不同,运行的协议
也不同。要将它们连接起来协调工作,就需要一个大家都公认的协议。传输控
制协议和网际协议TCP/IP(TransmissionControlProtocol/InternetProtocol)就是这样
的协议簇。它是美国国防部高级研究计划署为实现美国本土广域互联网
APARNet而开发的通信传输协议。APARNet于1969年12月投入运行,后来发展
成为洲际Internet。由于Internet的成功应用,TCP/IP已成为世界公认的事实上
的网络标准。它的特点是适应异种计算机和异种计算机网间的通信。随着
Internet的广泛应用和被全世界承认,Internet所使用的TCP/IP体系结构在计算
机网络领域亦占有特殊重要的地位,成为一种实际的标准。TCP/IP模型是在物
理网基础上建立的,包括网络接口层、网际层(IP层)、传输层(TCP层)和应用层。
图6.2所示为TCP/IP的体系结构,同时给出了它与ISO/OSI之间的大致对
应关系。其核心是IP层和TCP层。
图6.2 TCP/IP四层参考模型
1.网络接口层
TCP/IP协议栈结构没有包含数据链路层和物理层,因此不能完成计算机网
络的全部功能,必须与其他协议协同工作。网络接口层负责将IP分组封装成适
合在具体的物理网络上传输的帧结构并交付传输。它包括:
�用于协作IP分组在现有网络介质上传输的协议,如IEEE802.x;
�IP地址与实际物理网络地址间的转换协议———ARP(AddressResolution
Protocol)和RARP;
�用于串行线路连接主机与网络或连接网络与网络的SLIP协议和PPP协议。
2.网际层
网际层的主要作用是解决网络互连中的问题,即网际寻址(包括地址格式、
地址转换等)。主要协议有:
�IP协议,规定一种统一的地址格式———协议地址;
�网际控制信息协议(ICMP,InternetControlMessageProtocol),提供差错报告
机制;
· 4 3 1 · 第2篇 计算机网络体系结构
�路由信息协议(RIP,RoutingInformationProtocol),RIP协议负责数据的包
装、寻址和路由。
3.传输层
传输层负责维护信息的完整性,它提供端到端的通信服务,即提供一个应用
程序到另一个应用程序之间的通信服务。传输层有如下功能:
�解决不同应用程序的识别问题,要附加从何处(信源)来到何处(信宿)去
的应用程序信息;
�提供可靠传输,为此传输层的每个分组均含有校验字段;
�对信息流进行格式化。
传输层提供传输控制协议TCP(TransmissionControlProtocol)和用户数据报协
议UDP(UserDataProtocol)。
4.应用层
TCP/IP的应用层是几个可以在各种机型上广泛实现的协议,如文件传输协议
FTP、远程终端访问协议Telnet、域名服务程序DNS、简单邮件传输协议SMTP等。
6.1.2 TCP/IP与OSI/RM的比较
OSI/RM与TCP/IP是两个独立协议体系结构模型,有许多相似之处,如主要
层上有一定的对应关系。但是,OSI/RM是作为计算机网络的标准制定出来的,
TCP/IP则是在Internet发展的实践中产生的。两者的背景不同,出发点不同,并
且各具特色。除表现结构上的不同之外,还需要说明几点。
1.层次性是否严格
OSI/RM最大的贡献在于它作为一种理论模型,有清晰的层次结构,并且用
服务、接口和协议三个基本概念作为每一层的核心。
�协议:同层实体之间通信的规程。
�服务:下一层实体对上一层实体的支持。
�接口:上下层之间的通信界面。
OSI/RM先于TCP/IP制定出来,并且它不基于某个具体的协议集。这使得
OSI/RM非常一般化,并且制定者对将哪些功能放在哪一层还缺乏更多的实践经
验。OSI/RM这样强的层次结构缺少灵活性。例如它原先是基于点到点的结构
考虑的,当出现广播式结构时,就需要插入一个新的子层,这在介绍局域网时已
经看到。
TCP/IP是实践中形成的,是经验的总结,虽然TCP/IP模型也分层次,但是
层次间的依赖关系不像OSI/RM那样强。在OSI/RM中,上层实体之间的通信,
· 5 3 1 · 第6章 Internet与TCP/IP体系结构
必然涉及下一层实体,并且要在下一层服务的支持下进行,不相邻层间的协议是
隐藏的,随着技术的变化具有较好的可替换性。TCP/IP模型则不同,它在传输
层上面只设了一层———应用层,使结构比较实用,并且允许上一层越过紧靠的下
一层去使用更低层提供的服务功能,这样有利于减少不必要的开销,提高协议的
效率。
2.可靠性第一还是效率第一
可靠性是指网络正确地传输数据的能力。OSI/RM以可靠性第一作为其基
本宗旨,每一层都要进行差错检测和处理,因而按OSI/RM构建的网络可以适应
较恶劣的传输条件,但额外传输开销大,传输效率低。
TCP/IP模型则以效率第一作为其基本宗旨,它不是在每一层中都进行差错
检测和恢复,特别是在通信子网中不对传输数据进行差错检测和恢复;它把可靠
性看做传输层的任务,丢失和损坏数据的恢复只由传输层完成,即由主机承担,
而通信子网对可靠性不做检查。
3.主机负担重还是通信子网负担重
OSI/RM认为通信子网是提供传输信息的设置,它把与传输有关的问题都放
在通信子网中处理,如监视数据流量、控制网络访问、记账收费、路径选择、流量
控制等问题的处理,而给主机留下的事情并不太多。同时,它在运输层只提供面
向连接的服务。因此,OSI/RM系统中通信子网负担较重,主机负担较轻,即
OSI/RM对主机的要求不高。
TCP/IP主要的功能是实现异种网之间的互连。它没有定义自己的通信子
网,而以其它通信子网作为考虑的基础并把它们都看成是不可靠的,不管通信子
网是复杂还是简单,都要在传输层要求主机参与几乎所有复杂性问题的处理过
程。因此,在TCP/IP模型中主机的负担较重。
4.异种网互连的能力
TCP/IP模型从一开始就考虑到异种网的互连问题,并用网际层来处理异种
网的互连问题。而OSI最初并没有考虑网络互连问题,后来才不得不打一个补
丁———在网络层中划分出一个子层来完成类似网际层的功能。
6.2 网络接口协议SLIP和PPP
网络接口层的重要功能是将IP分组封装成适合在物理网络上传输的帧格
式进行传输。SLIP协议和PPP协议就是使用串行线路连接主机与网络,或连接
· 6 3 1 · 第2篇 计算机网络体系结构
网络与网络的两个协议。
6.2.1 SLIP协议
SLIP(SerialLineInternetProtocol)提供在串行线路上封装IP分组的简单方
法,使得远程用户通过电话线路和高速调制解调器方便地接入TCP/IP网络。图
6.3表明了SLIP协议对IP分组的封装方法。
图6.3 SLIP封装方式
下面总结SLIP封装的基本方法:
(a)在IP分组的前后各加一个称为END的特殊字符(0xc0———11000000),
如图6.3(a)所示;
(b)当IP分组中含有“11000000”(END)时,应在其前填充0xdb(SLIPESC),
并在传输时用0xdb+0xdc———1101101111011100代替,如图6.3(b)所示;
(c)当IP分组中含有“11011011”(ESC)时,应在其前填充0xdb(SLIPESC),
并在传输时用0xdb+0xdd———1101101111011101代替,如图6.3(c)所示。
SLIP提供了一个简单的组帧方法,但是它存在如下一些问题:
�SLIP不支持在连接建立过程中动态分配IP地址,通信双方必须事先知
道对方的IP地址,但又不可能为每一台连接的计算机分配一个IP地址;
�SLIP帧中无协议类型域,因此只能支持IP协议;
�SLIP帧中无校验字段,因此必须选用有校验功能的MODEM,或由上层进
行差错处理。
这些问题给实际应用带来不少限制。
· 7 3 1 · 第6章 Internet与TCP/IP体系结构
6.2.2 PPP协议
PPP(Point-to-PointProtocol)是串行通信线路上一个有效的点对点通信协
议,它的格式与HDLC相似,如图6.4所示。
图6.4 PPP帧格式
可以看出,PPP帧格式在IP分组之上增加了起始和结束标志、地址、控制、
协议和校验等字段,下面进一步对这些字段加以介绍。
(1)起始和结束标志
PPP协议帧的起始和结束标志都是“01111110”(0x7e)。如果在信息字段中
出现0x7e,就要对该信息字段进行填充:在同步数据链路中,采用逢连续5个1
就加1个0的比特填充法;在异步数据链路中,采用以0x7d为转义字符的字符
填充法,同时要将第6个字符变反。例如,字符0x7e要转换成0x7d+0x5e
(0111110101011110),而字符0x7d要转换成0x7d+0x5d(0111110101011101)。
(2)地址字段
地址字段的值总是0xff,这是一个广播地址,表示将该帧发向所有的站点。
(3)控制字段
控制字段的缺省值为0x03,这时帧为无编号帧,即不提供使用帧编号和应
答的可靠传输机制。
(4)协议字段
协议字段的编码值指明信息字段中携带的数据的协议类型,使得PPP可以
支持多种协议,其缺省长度为2个字节,可以用LCP协商成1个字节。
(5)帧校验字段
设置帧校验字段,使PPP协议在链路上具有差错检测功能。
PPP协议的上述优点,使其将SLIP协议取而代之。
6.3 网 际 层
网际层是TCP/IP协议簇中最重要的一层。它的主要功能是网络互联,或者
· 8 3 1 · 第2篇 计算机网络体系结构
说是解决网络互联中的各种问题。
IP协议等同地看待所有的物理网络,它定义了一个抽象的“网络”,屏蔽了
物理网络连接的细节,为众多的不同类型的网络和计算机提供了一个单一的、无
缝的通信系统。正因为如此,才把多个网络连成一个互联网。
这一节介绍这些功能。
6.3.1 IP地址结构
Internet是由许许多多的物理网络组成的网上之网,其中每一个小型网络都
是由信道和节点组成。由于两个节点可能在同一个物理网络之中,也可能不在
同一个物理网络之中,因此关键就是如何从源节点出发找到目标节点,这就是寻
址问题。
寻址问题主要涉及Internet的地址结构、有关地址的协议以及对寻址过程进
行控制的路由机制。
1.IP编址方案
在IP层中传输的协议数据单元是IP分组,也称IP数据报。IP分组从源主
机向目的主机传送,依据就是IP地址。IP地址是Internet协议地址的简称,用作
Internet网络上独立的计算机惟一标识。通信时要利用IP地址来指定目的机地
址,就像电话网中每台电话机必须有自己的电话号码一样。
IP协议提供整个Internet通用的地址格式。为了确保一个IP地址对应一台
主机,网络地址由Internet注册管理机构网络信息中心NIC分配,主机地址由网
络管理机构负责分配。如图6.5所示,每个IP地址占用32位,并被分为A、B、
C、D和E五类,分别用0、10、110、1110和11110标识。
图6.5 五类IP地址结构
IP地址是32位的二进制地址,例如某地址为
10000000000010100000001000011110
由于它以“10”打头,所以是一个B类地址。
· 9 3 1 · 第6章 Internet与TCP/IP体系结构
IP地址太长,而且不便于记忆,因而常用4个十进制数分别代表4个8位二
进制数,在它们之间用圆点分隔,以X.X.X.X的格式表示,称为点分十进制计数
法(DottedDecimalNottion)。
上述地址可以写为
128.10.2.30
其网络地址为128.10,网络内主机地址为2.30。
A、B、C是3类基本地址类型,都由3个部分IP数据组成:类型标志、网络标
识符(Netid)和主机编号(Hostid)。这3类基本地址类型的区别仅在于网络大小
不同。
A类地址是给巨型网络分配的IP地址,它用1位“0”作为类型标志,Hostid
占24位,网内主机可达1600万个;Netid占8位(实际是7位),因而在Internet中
可以有126个(除去127)具有A类地址的网络,如ARPANet、NSFNet等。
B类地址是给大型网络分配的IP地址,它用“10”作为标志,Hostid占16位,
网内主机最多65534个;Netid占16位(实际是14位),取值范围为128.1~
191.254,最多网络数为16384个。
C类地址是给小型网络分配的IP地址,它用“110”作为标志,Hostid占8位,
网内主机最多可达254个;Netid占24位(实际是21位),一般可以选用192.1.1
~223.254.254之间的数,最多网络数达200万个。
D类地址是一种多址广播地址格式,用4位的“1110”作为标志。E类地址是
为实验保留的地址。
2.子网掩码
任何一个A、B、C类地址都对应着一定规模(主机数目)的网络。当某实际
的网络规模接近IP地址的Hostid上限时,该IP地址就得到充分利用。如一个实
际网络中的主机数为250台左右时,申请一个C类地址最为合理。若实际的网
络规模较小,如只有30台左右的主机时,独自占用一个C类地址会造成地址资
源的浪费,而改用D类地址又会给网关的路由选择表和寻址增加很大复杂性,
较合理的做法是将一个C类地址分给若干个小的网络共同使用。具体办法是
将这些较小的网络看作一个网络的子网,并从Hostid域中借用某几位高位作为
子网的Subnetid域。于是,网关(连接物理网络的路由器)的路由表就被分成两
级:先识别由Netid标识的路由,以确定一个逻辑的网络;再在该逻辑的网络内部
用Subnetid来确定具体的子网。
网络管理员使用子网掩码来借用Hostid域中的某几位高位作为子网的
Subnetid域,即用一个与IP地址格式相同的屏蔽码对网络IP地址进行“与”操
作,用来限定一个网络的IP地址范围。利用子网掩码,可以把一个大的网络划
· 0 4 1 · 第2篇 计算机网络体系结构
分为几个子网。
当网络中没有子网时,A、B、C三类网络的缺省掩码分别为:
A类网络,11111111000000000000000000000000,即255.0.0.0;
B类网络,11111111111111110000000000000000,即255.255.0.0;
C类网络,11111111111111111111111100000000,即255.255.255.0。
这些数据与同类型的网络地址进行“与”运算时,所得出的值不变。而当网
络中有子网时,就要在上述三类网络缺省掩码的“0”的部分从高到低占用几位。
例6.1 将一个有256台主机、网络号为200.15.192的C类网络分为2个相
同的各拥有128台主机的子网。
在网络号为200.15.192的C类网络中,主机的编号为200.15.192.0~
200.15.192.256。由于要将一个C类网络分为两个子网,因而要在其Hostid域中
借用最高一位,子网掩码由C类的缺省掩码255.255.255.0变为
255.255.255.128,即
11111111.11111111.11111111.10000000
由此类推,要划分为4个子网,应借用2位;要划分为8个子网,应借用3
位;……
例6.2 对于一个C类网络202.113.240,可以使用子网掩码
255.255.255.224划分为8个子网,每个子网有32个IP地址:
202.113.240.0~202.113.240.31
202.113.240.32~202.113.240.63
……
202.113.240.224~202.113.240.255
应当注意,不管如何划分,一个网络中可容纳的主机总数不会增多。
6.3.2 IP地址解析
1.协议地址和物理地址
IP地址称为高级协议地址,是站在Internet网络的角度按照IP协议为主机
和路由器所做的编号,是抽象地址。
但是,每台主机都是属于某个特定的物理网络的。在每个具体的物理网络
中,每台主机又各有一个物理地址。例如对以太网来说,每一个网卡的卡号就是
使用该网卡的主机的物理地址,由于全世界的以太网卡是统一编号的,因此网卡
号就可以惟一地指定一台机器。然而,在以太网中运行的协议是IEEE802.3,而
IEEE802.3所辨认的只是以太网地址,而非IP地址。也就是说,具体的物理网
· 1 4 1 · 第6章 Internet与TCP/IP体系结构
(组成Internet的局域网或广域网)并不知道如何通过协议地址来定位一台计算机。
2.地址解析
IP地址是由软件进行维护的软地址,而物理地址是由硬件管理的硬地址。
物理网络无法直接根据软地址定位一台主机。为此,要想通过一个物理网进行
帧的传送,必须含有目的地的硬件地址(如以太网地址)。将一台计算机的IP地
址翻译成等价的硬件地址的过程称为地址解析或称地址映射,也称为地址绑定。
应当注意,地址解析是同一个网络内部的局部过程,即一台计算机只能够解
析位于同一网络中的另一台计算机地址。如在图6.6中,主机A上的一个应用
程序要传输一条报文到主机F上,由于A与F不在同一个网络上,因此A上的
软件无法解析F的地址,于是这个报文的传输要经过如下过程:
①主机A上的软件首先确定要将报文传输到F必须经过路由器R1,于是
解析位于同一网络中路由器R1的地址,将报文传送到R1;
②路由器R1上的软件确定要将报文传输到F必须经过路由器R2,于是解
析位于同一网络中路由器R2的地址,将报文传送到R2;
③路由器R2上的软件确定F就在同一网络上,于是解析位于同一网络中
主机F的地址,将报文传送到F。
图6.6 地址解析实例
3.地址解析技术与地址解析协议
地址解析是通过软件实现的。地址解析软件要根据使用的协议和硬件编址
方案来进行地址解析。对不同的物理网络,由于协议和编址方案不同,解析方法
也不相同。例如,将IP地址解析为以太网地址与解析为ATM网地址的方法是
不相同的。
一般说来,大体上有三种地址解析方法。
(1)查表(TableLookup)方法:将地址绑定信息存放在内存的一张表中,当要
进行地址解析时,可以查表找到所需的结果。这种方法常用于WAN。
(2)相似形式计算(Close-FormComputation):网络中主机的IP地址分配通
· 2 4 1 · 第2篇 计算机网络体系结构
过对硬件地址的简单逻辑运算和算术运算得到,因而在IP地址与物理地址之间
存在一种函数关系,可以直接运算求出。这种方法常用于可配置的网络。
(3)报文交换(MessageExchange)法:前两种方法是集中式地址解析,而报文
交换是分布式地址解析方法,即当一台机器要解析同一网络中另一台计算机的
IP地址时,先通过网络发送一个请求报文———请求对指定IP地址的解析,之后
收到一个应答———回答对应的硬件地址。这种方法常用于静态编址的LAN。
那么,请求报文如何发送呢?通常有两种方法:一是在网络中设立一台或几
台服务器,专门用来回答地址解析的请求;一是向全网广播,由各台计算机自己
解析自己的IP地址。
为了使所有的计算机共同认可地址解析消息的精确格式和含义,TCP/IP的
地址解析协议ARP定义了两种基本的消息:ARP请求消息(一个请求包含一个
IP地址和对相应硬件的请求,格式如图6.7所示)和ARP应答消息(一个应答消
息既包含发来的IP地址,也包含相应的硬件地址)。ARP规定:所有ARP请求消
息都直接封装在LAN帧中,广播给网上的所有计算机,每台计算机收到这个请
求消息后都要检测其中的IP地址;与IP地址匹配的计算机即发出一个应答消
息,而其他计算机则丢弃收到的请求,不发出任何应答。
图6.7 用于以太网的ARP分组格式
通过对一个帧中协议类型的判断,一台计算机就可以知道该帧中是否含有
ARP报文。例如,当一个以太网帧携带有ARP报文时,类型字段中就包含十六
进制数0x806。
IP层中还包含一个反向地址解析协议RARP,用于规定硬件地址到等价的
IP地址的翻译过程。
需要说明的是,ARP/RARP可以看作IP层的协议,也可以看成网络接口层
· 3 4 1 · 第6章 Internet与TCP/IP体系结构
的协议。有的资料也把网络接口层看成IP层的一部分。TCP/IP的分层是不太
严格的。
6.3.3 IPv4分组格式
Internet是建立在多个物理网之上的。TCP/IP协议通过IP分组将各种物理
网络统一起来,达到屏蔽细节、提供一致性的目的。IP协议的主要功能还包括
无连接IP分组传送、IP分组寻址以及差错处理三部分。IP协议提供的是非可靠
的无连接分组服务。非可靠是指无论传输正确与否,都不做验证、不发确认,也
不保证IP分组的正确顺序。有关可靠性的工作都留给传输层处理。无连接是
指每一个IP分组的处理都独立于其他IP分组,一串IP分组从一台计算机出发
经过不同的路径到达另一计算机,中间可能部分丢失,而其他部分仍然被传送,
IP协议不轻易丢弃IP分组。
IPv4分组由报头和数据区两部分组成,每部分的格式如图6.8所示。
图6.8 IP分组格式
下面介绍各字段的含义。
(1)版本号Ver(Version)
版本号占4位,用来指明所使用的IP协议的版本号,目前使用的是IPv4。
所有的IP软件都要检查IP分组的版本号,若版本不同则需要转换,以保证IP分
组的格式与软件期待的格式一致。
(2)头标长IHL(InternetHeaderLength)
在IP分组的报头中,任选项和填充域是不固定的。当不含任选项和填充域
时,头标长为5行(每行4个字节);任选项和填充域的最大长度是10行(占40
字节)。报头的最大长度为15行(占60字节)。也就是说,头标的长度范围以行
计算,在5~15之间,为此IHL占4位。
(3)服务类型ToS(TypeofService)
· 4 4 1 · 第2篇 计算机网络体系结构
描述IP分组所希望获得的服务质量,占8位,包括:
�低延迟、高吞吐量、高可靠性,各占1位;
�优先级,共8级,占3位;
�未用2位。
(4)总长度TL(TotalLength)
给出IP分组的总长度,占16位,即允许最长的IP分组为65535字节。
(5)标识符ID(Identification)
ID是源主机赋予IP分组的标识号。同一源主机所发出的各IP分组有惟一
的标识。在IP分组传输的路径中,有些网络的处理能力有限,路由器必须将该
IP分组分成若干片段。但无论分成多少片,每一片都有相同的ID。目的主机根
据ID和源主机号来判断所收到的片属于哪个IP分组。ID占16位。
(6)标志F(Flag)
F共占3位:
�第1位恒为0;
�第2位为0时是可分片,为1时是不可分片;
�第3位为0时是最后报片,为1时是非最后报片。
(7)片偏移量FO(FragmentOffset)
FO占13位,用以标明当前段片在初始IP分组中的位置,目的主机可以根
据FO来重新组合IP分组。
(8)生存时间TTL(TimeToLive)
IP分组在网络中传送的倒计时时钟,占8位,最大值为255,缺省值为64,单
位为秒。当TTL=0而尚未传送到时,该IP分组即被丢弃。
(9)协议Prot(Protocol)
协议段占8个字节,用以标识接收的IP分组中的数据的高层(传输层)协
议。高层协议号由TCP/IP协议中央权威机构NIC(NetworkInformationCenter)分
配,如:1———控制报文协议ICMP,6———传输控制协议TCP,8———外部网关协议
EGP,17———用户数据报协议UDP,29———传输层协议第4类ISO-TP4。
(10)IP分组头校验和(HeaderCheksum)
IP分组头校验和占16位,用以保证IP分组报头的完整性。校验方法是:先
设初值为0,然后对报头数据每16位求异或,结果取反。当目的地计算出的校
验和与该域的值不符时,则丢弃该报文。
(11)源地址Source(SourceAddress)
源地址占32位。
(12)目的地址Dest(DestinationAddress)
· 5 4 1 · 第6章 Internet与TCP/IP体系结构
目的地址占32位。
(13)任选字段Opt(Options)
用于存放安全保密、报文经历、错误调试报告、时间戳等信息,其长度可变。
(14)填充段(Padding)
IP分组头长必须是4字节的整数倍,填充字段就是为最后满足这一条件而
设置的。
6.3.4 网际控制消息协议ICMP
IP协议的概念简明扼要,报文格式只有一种,它要求网络只需尽力传送报
文包到目的地,而不必保证传递的正确性,所以是一种不可靠、无连接的包传送
协议,也是一种尽最大努力服务的协议。这样,一个包在经过多个网际部件的传
送途中,可能出现传送方向出错、目的主机不响应、包拥塞、超时等情况时,IP协
议将无能为力。因为它没有差错报告和差错纠正机制。然而,这些问题又必须
处理,为此在IP层引入了一个子协议:网际控制消息协议ICMP(InternetControl
MessageProtocol)。
1.ICMP提供的服务
ICMP是一种差错报告机制,它为路由器或目标主机提供了一种方法,使它
们能把遇到的差错报告给源主机。具体地说,ICMP提供如下服务:
�测试目的主机可到达性和状态,如接收设备接收IP分组时缓冲区是否
够用;
�将不可到达的目的主机报告给源主机;
�进行IP分组流量控制;
�向路由器发送路由改变请求;
�检测循环(由此会引发“广播风暴”)或超长路由;
�报告错误IP分组头;
�获取网络地址;
�获取子网掩码。
2.ICMP分组
ICMP分组的格式如图6.9(a)所示。它由分组头和数据两部分组成,并且封
装在IP分组中传输。
在ICMP的首部,首先标识的是ICMP分组的类型。按照协议的功能,ICMP
分组可以分为三种类型:差错报告分组、控制分组和测试(请求/应答)分组。更
详细的分类见表6.1。
· 6 4 1 · 第2篇 计算机网络体系结构
图6.9 ICMP分组
表6.1 主要ICMP分组
基本类 类型码 分组名称 代码 说 明
差
错
报
告
3 目的站不可达 0~15 代码段指明了16种不可达具体原因
11 超时
12 参数出错
0 TTL超时(只由路由器使用)
1 重组超时(只由目的主机使用)
0 在首部的一个字段中有差错或二义性
1 缺少所需选项部分
控
制
4 源站抑制 0 拥塞控制和源站抑制
5 重定向 0 对特定网络路由的改变
1 对特定主机路由的改变
2 基于指明服务类型对特定网络路由的改变
3 基于指明服务类型对特定主机路由的改变
测
试
8 回应请求 0
0 回应应答 0
13 时间戳请求 0
14 时间戳应答 0
17 地址掩码请求 0
18 地址掩码应答 0
10 路由器询问 0
9 路由器通告 0
测试可达性
测试IP分组在两台机器之间往来所需时间
测试子网掩码
测试路由器地址及其是否正常工作
应当注意,ICMP虽然是第三层的一部分,但又好像第四层那样调用IP的服
务,并且ICMP与IP一样,都是不可靠传输,ICMP的信息也可能丢失。为了防止
ICMP信息无限制地连续发送,对ICMP分组传输中的问题不能再使用ICMP解决。
3.ICMP应用
ICMP作为IP协议的补充,使一个路由器或一台目的主机可以通知源主机
有关数据分组处理中的错误,并可以进行必要的处理。下面介绍它的两种简单
而广泛的应用。
· 7 4 1 · 第6章 Internet与TCP/IP体系结构
(1)ping
ping是TCP/IP网络中一个最简单而又非常有用的ICMP应用程序。它使用
ICMP回应请求/应答,测试一台主机的可达性,验证一个IP安装是否正确,具体
可以用于下列场合:
�验证基础TCP/IP软件的操作;
�验证DNS服务器的操作;
�验证一个网络或网络中的设备是否可以被访问。
ping在不同的实现中语法格式有所不同。下面是在UNIX中的应用格式:
ping[-switches]host
�host,目的主机的名字或其IP地址;
�switches,参数选项,它是下列可选项的组合:
[-dfnqrvR][-ccount][-iwait][-lpreload][-ppattern][-spacktssize]
表6.2给出了这些可选参数的意义。
表6.2 ping的可选参数
选项 意义
-d 设定下列测试参数
-f 洪泛ping———快速发出测试分组。只有超级用户可以选用此项
-n 只输出数字
-q 不显示任何传输分组的信息,只显示最后结果
-r 绕过正常的路由表,通过附加网络直接到达一台主机
-v 详细输出
-R 报告路由
-c 发送指定数目的分组后停止
-i 设定发送测试分组的时间间隔(秒数),预设值为1(每秒发送1个分组)
-l
预设在故障进入常规行为模式前ping能够尽快送出的分组数量。只有超级
用户可以选用此项
-p 规定填充字符
-s
指定分组的数据部分大小(字节数)。预设值为56(加上8字节的ICMP头,共
64字节)
(2)traceroute
traceroute程序用来确定通过网络的路由IP数据分组。它先把一个TTL=1
的IP分组发送给目的主机,在经过第1个路由器时把TTL减到0,遂丢弃该分组
并把ICMP超时消息返回给源主机,从而标识了第1个路由器。以后,不断增加
TTL值重复上述过程,就可以依次标识出通向目的主机的路径上各路由器。