




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第9章 因特网控制报文协议(ICMP),知识点 ICMP的概念和功能 ICMP报文差错报文/查询报文的功能以及ICMP的工作原理 ICMP应用与Ping、Tranceroute和MTU的测试 ICMP引起的黑客隐患,2,IP协议是TCP/IP协议使用的传输机制,它是一种不可靠的无连接的数据报协议,但是IP协议假定了底层是不可靠的,因此,要尽最大的努力传输到目的地,但正因为如此,IP协议则没有了保证,也就是说,它并没有提供检验或跟踪机制。,Internet控制报文协议ICMP (Internet Control Message Protocol),所以, ICMP设计的本意就是希望对IP包无
2、法传输时提供报告,这些差错报告帮助了发送方了解为什么无法传递,网络发生了什么问题,确定应用程序后续操作。,注意:IP中有关于差错检测的机制用于检测传输错误的头部检验和。,3,ICMP具有如下一些特征: ICMP就像一个更高层的协议那样使用IP(即,ICMP消息被封装在IP数据报中)。然而,ICMP是IP的一个组成部分,并且所有IP模块都必须实现它。 ICMP用来报告错误,是一个差错报告机制。它为遇到差错的路由器提供了向最初源站报告差错的办法,源站必须把差错交给一个应用程序或采取其它措施来纠正问题。,4,ICMP不能用来报告ICMP消息的错误,这样就避免了无限循环。当ICMP查询消息时通过发送I
3、CMP来响应。 对于被分段的数据报,ICMP消息只发送关于第一个分段中的错误。也就是说,ICMP消息永远不会引用一个具有非0片偏移量字段的IP数据报。 响应具有一个广播或组播目的地址的数据报时,永远不会发送ICMP消息 响应一个没有源主机IP地址的数据报时永远不会发送ICMP消息。 总的来说,源地址不能为0、一个回送地址、一个广播地址或者一个组播地址。这些是为了防止过去允许ICMP差错报文对广播分组相应所带来的广播风暴。,5,ICMP的两级封装 每个ICMP报文放在IP数据报的数据部分中通过互联网传递,而IP数据报本身放在帧的数据部分中通过物理网络传递。,6,ICMP报文格式,ICMP报文有一
4、个8字节的首部和一个可变长度的数据部分。前4个字节对所有的类型都是共同的,第一个8比特字段是ICMP的类型,它定义了报文的类型。代码字段指明了发送此特定报文类型的原因。最后一个共同的字段是检验和字段。首部的其余部分对每一种报文类型都是特定的。 ICMP定义了五种常用差错报文和六种询问报文类型,以及用代码表达某类型下面不同情况的细分。,ICMP-报文格式,用来标识报文,有15个不同的值,提供有关报文类型的进一步信息,覆盖整个ICMP报文,差错报告报文的类型有一下几个: 类型3:目的站不可达 类型4:源站抑制 类型11:时间超过 类型12:参数问题 类型5:改变路由 查询报文的类型有一下几个: 类
5、型8或0:回送请求或回答 类型13或14:时间戳请求或回答 类型17或18:地址掩码请求或回答 类型10或9:路由器询问或通告,7,8,ICMP主要差错报文,所有ICMP差错报告报文中的数据字段都具有同样的格式。将收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报告的数据字段。再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。提取收到的数据报的数据字段的前8个字节是为了得到运输层的端口号(对于TCP和UDP)以及运输层报文的发送序号(对于TCP),9,重定向Redirect (5) 当一个源主机创建的数据报发至某路由器,该路由器发现
6、数据报应该选择其他路由,则向源主机发送改变路由报文。改变路由的报文能指出网络或特定主机的变化,一般发生在一个网络连接多路由器的情况下。,IP数据报首部,ICMP的前8 个字节,8字节,IP数据报 首部,8 字节,首部,ICMP差错报告报文,收到的IP数据报,ICMP差错报告报文,装入ICMP报文的IP数据报,10,下面对改变路由报文进行简短的解释: 在因特网中各路由器之间要经常交换路由信息,以便动态更新各自的路由表。但在因特网中主机的数量远大于路由器的数量。主机如果也像路由器那样经常交换路由信息,就会产生很大的附加通信量,因而大大浪费了网络资源。所以,出于效率的考虑,连接在网络上的主机的路由表
7、一般都采用人工配置,并且主机不和连接在网络上的路由器定期交换路由信息。在主机刚开始工作时,一般都在路由表中设置了一个默认路由器的IP地址。不管数据报要发送到哪个目的地址,都一律先将数据报传送给网络上的这个默认路由器,而这个默认路由器知道到每一个目的网络的最佳路由。如果默认路由器发现主机发往某个目的地址的数据报的最佳路由不应当经过默认路由器,而是应当经过网络上的另一个路由器R时,就用改变路由报文将此情况报告主机。 于是,该主机就在其路由表中增加一项:到某某目的地址应经过路由器R(而不是默认路由器)。,虽然改变路由报文算是一种差错报文,但是它与其他种差错报文的不同。在这种情况下的路由器不丢弃数据报
8、;数据报被送到适当的路由器中。它的代码段缩小了改变路由的范围: 代码0:对特定网络路由的改变 代码1:对特定主机路由的改变 代码2:基于指明的服务类型对特定网络路由的改变 代码3:基于指明的服务类型对特定主机路由的改变,11,目的站不可达Destination Unreachable (3) 当路由器检测到数据报无法传递到目的地时,向创建数据报的源主机发出目的地不可达报文。这报文区分:网络不通(如路由器故障),目的主机连不通(没开机),协议不可达、端口不可达、以及共15种不同的情况,用不同代码表示。 代码0. 网络不可达,可能是硬件故障。这种类型的报文只能由路由器产生。 代码1. 主机不可达,
9、这也可能是硬件故障。这种类型的报文只能由路由器产生。 代码2. 协议不可达,IP数据报携带的数据可能属于高层协议的。若目的主机收到了一个数据报文,但是此时,这个高层协议并未运行,则发出代码2的报文。这类报文只能由目的主机产生。(主机收到了一个数据报,它要交给TCP协议,但是TCP协议并没有运行) 代码3. 端口不可达,数据要交付的那个应用程序(进程)此时未运行。 代码4. 需要进行分片,但该数据报的DF(不分片)字段已经被设置。(数据报的发送站已经指明该数据报不能分片,但是不进行分片又不可能进行路由选择) 代码5. 源站路由选择不能完成。换言之,在这个源站路由选择选项中定义的一个或多个路由器无
10、法通过。,代码6. 目的网站不可知,路由器根本没有关于目的网络的信息。 代码7. 目的主机不可知,路由器根本不知道网络主机的存在。 代码8. 源主机是孤立的。 代码9. 与目的网络的通信从管理上是禁止的。 代码10. 与目的主机的通信从管理上是禁止的。 代码11. 对指明的服务类型,网络不可达。如果源站被请求一个可用的服务类型,路由器可以为数据报找到另一条路由。 代码12. 对指明的服务器类型,主机不可达。如果源站被请求一个可用的服务类型,路由器可以为数据报找到另一条路由。 代码13. 主机不可达,因为管理机构放置了一个过滤器在它上面。 代码14. 主机不可达,因为主机的优先级被破坏了。这个报
11、文由路由器发出,指出锁清秋的优先级对该目的站是不允许的。 代码15. 主机不可达,因为它的优先级被删掉了。(当网络操作员已经采用了运行该网络的最小优先级时就产生这个报文,但是这个数据报以比这个优先级更低的优先级发送出去) 但是有两点要注意:目的站不可达的报文可以由路由器也可以由目的主机产生,代码2和3的报文只能由目的主机产生,而其余的报文则只能由路由器产生。 在路由器没有发送目的站不可达报文时,也不一定表示数据报已经交付了。(如果数据报通过以太网网络,那么路由器就无法知道该数据报是否已经交付给目的主机或者下一个路由器,因为以太网并不提供任何确认机制),且路由器无法检测处分组没有交付的所有的问题
12、,12,13,源站抑制Source Quench (4) 当路由器收到太多的数据报以致内存不够时,在丢弃所收数据报的同时,向创建数据报的源主机发送源抑制报文。源主机收到源抑制报文后,需要降低发送数据报的速率。 当路由器或者主机因为拥塞而丢弃了一个数据报时,它就向数据报的发送站发送源站抑制报文。这个报文有两个目的:第一,它通知源站数据报已经被丢弃。第二,它警告源站,在路径中的某处出现了拥塞,因而源站必须放慢发送过程。,下面几点要注意: 经受拥塞的路由器或者目的主机必须为每一个丢弃的数据报向源主机发送源站抑制报文。 没有一种机制可以告诉源站,拥塞程度已经减轻,因为可以按照原来的速率发送数据报。源站
13、应继续降低发送速率,直到不再收到更多的源站抑制报文为止。 在一对一的通信,或者多对一的通信中,都可以产生拥塞。在一对一的通信中,每个高速主机可以很快地产生数据报,使得路由器和主机难于跟得上处理。这种情况下,源站抑制报文就有用处了,这些报文告诉了源站要放慢发送速率。而在多对一的通信中,许多个源站产生的数据报都必须由路由器或目的主机来处理。在这种情况下,有的会以低速率发送而有的则以高速率发送,这就导致了源站抑制报文在发送后,路由器或主机并不知道哪一个源站应对拥塞负责。它可能丢弃从不非常低速率的源站法来的数据报,而没有丢弃真正产生拥塞的源站所发来的数据报。,14,15,超时Time Exceeded
14、 (11) 有两种情况需要发送超时报文。一种是路由器把数据报的生存时间减至零时,路由器丢弃数据报,并向源主机发送超时报文;另一种是在规定的时间内没有收到所有的分片时,它就丢弃所有的分片,并向源站发送了超时报文。 代码段就是: 代码0:当数据报的生存时间字段的值为零被路由器丢弃 代码1:在固定的时间内分片未能到达而导致分片被丢弃,参数问题 Parameter Problem:数据报头部的标志出现差错,或缺少必须的选项 代码端是: 代码0:在首部的一个字段中有差错或二义性。在这种情况下,指针字段的值指向有问题的机子。 代码1:表示缺少所需的选项部分。在这种情况下,不使用指针,类型中 类型8代表回送
15、请求 请求0代表回送回答 主机或路由器可以发送回送请求报文给另一个主机或路由器。收到回送请求报文的主机或路由器创建回送回答报文,并将其返回给原来的发送者。 这种报文主要用来测试目的站是否可达以及了解其有关的状态。Ping服务就是采用这个报文来获得两个主机之间的连通性,请求/应答 Echo Request/Reply :可以对任何一台网上主机的ICMP软件发请求/应答报文。,ICMP 常用查询报文,地址掩码请求/应答Address Mask Request/Reply:主机启动时,会广播一个地址掩码请求报文。路由器收到地址掩码请求报文后,回送一个包含本网使用的32位地址掩码的应答报文。,类型中
16、类型17是请求而类型18是回答 ICMP地址掩码请求用于无盘系统在引导过程中获取自己子网掩码 主机的IP地址包括网络地址、子网地址和主机标识符。主机可能知道它的完整IP地址,但也可能不知道地址中的哪一部分定义网络地址和子网地址,以及哪一部分对应于主机标识符。这个时候就需要掩码。要得到掩码,主机应发送地址掩码请求报文给局域网上的路由器。若主机知道该路由器的地址,它将就这个请求直接发送给该路由器。若主机不知道,则要广播此报文。路由器收到地址掩码请求报文就响应地址掩码回答报文,向主机提供所需的掩码。,时间戳请求/应答Timestamp Request/Reply :主机发出查询当前时间的请求,应答报
17、文建议值是自午夜开始计算的毫秒数 ,UTC (Coodinated Universal time,协调统一时间)。,该ICMP报文的作用主要是使主机或路由器可使用时间戳请求和时间戳回答来确定IP数据报在这两个机器之间来往所需的往返时间,它也可作两个时间中的同步。 三个时间戳字段都是32位长。每一个字段可保存一个数,代表从通用时间的午夜起测量出的时间,以毫秒计。 源站创建时间戳请求报文。源站在报文离开源站时在原始时间戳字段填入它的时钟所显示的通用时间。其他两个时间戳字段则都填入零。,目的站创建时间戳回答报文。目的站将请求报文中的原始时间戳值复制到回答报文同样的字段中。它然后就在接收时间戳字段中填
18、入在收到这个请求时在它的时钟所显示的通用的时间。最后,它在回答报文离开该站时发送时间戳字段中填入它的时钟所显示的通用时间。 时间戳请求和时间戳回答报文可用来计算数据报从源站到目的站所需的单向时间,以及再返回到源站所需的往返时间。 发送时间 = 接收时间戳的值 - 原始时间戳的值 接收时间 = 分组返回的时间 - 发送时间戳的值 往返时间 = 发送时间 + 接收时间 要注意的是:只有当源站和目的站的机器中的时钟是同步的,发送时间和接收时间计算才是准确的。但是,即使两个时钟没有同步,往返时间的计算还是准确的,因为每一个时钟在往返时间的计算中出现了两次,它们在同步上的差别被抵消了。,路由器询问/通告
19、Router Request/Notice:主机若想将数据发送给另一个网络上的主机,就需要知道连接到它自己网络上的路由器的地址。,路由器通告报文格式,生存时间表示在多长时间内是有效的,以秒计算。优先级定义了路由器的等级。优先级用来选择一个路由器作为默认路由器,若优先级选择等级为零,则路由器就被认为是默认路由器。值越大则优先级越高,但若优先级是16进制的80000000,则该路由器永远不能被选为默认路由器。 地址数是指报文中所含的地址数。地址项长度指的是每个路由器地址32bit字的数目,始终为2。,路由器询问报文格式,路由器启动时,它定期在所有广播或多播传送接口上发送通告报文。准确地说,这些通告
20、报文不是定期发送的,而是随机传送的,以减小与子网上其他路由器发生冲突的概率。一般每两次通告间隔450秒和600秒。一份给定的通告报文默认生命周期是30分钟。是用生命周期域的另一个时机是当路由器上的某个接口被关闭时。在这种情况下,路由器可以在该接口上发送最后一份通告报文,并把生命周期值设为0.除了定期发送主动提供的通告报文以外,路由器还要坚挺来自主机的请求报文,并发送路由器通告报文以相应这些请求报文。如果子网上有多台路由器,有系统管理员为每个路由器设置优先等级。 主机在引导期间一般发送三分路由器请求报文,每三秒钟发送一次。一旦接收到一个有效的通告报文,就停止发送请求报文。主机也监听来自相邻路由器
21、的请求报文,这些通告报文可以改变主机的默认路由器。另外,如果没有接收到来自当前默认路由器的通告报文,那么默认路由器就会超时。只要有一般的默认路由器,该路由器就会每隔10分钟发送通告报文,报文的在生命周期是30分钟。这说明主机的默认表项是不会超时的,即使错过一份或两份通告报文。,路由器发现报文一般由用户进程(守护进程)创建和处理。这样在整个网络中会有一个修改路由表的程序,尽管它只增加或删除默认表项,守护进程必须把它配置成一台路由器或主机来使用。,5.其它还有DNS请求/应答,以及最新IPv6、安全、移动定位等类型定义,补充下 在这里对以上的报文格式中的标识符和序列号进行说明下,ICMP报文中的标
22、识符和序列号字段由发送端任意选择设定,这些值在应嘎中将被返回。这样,发送端就可以把应答与请求进行匹配了。 在ICMP差错报文中IP首部要求哦被送回的原因是因为IP首部中包含了协议字段,使得ICMP可以知道如何解释后面的8个字节。(UDP中)在TCP中可以发现源端口和目的端口被包含在TCP首部份前8个字节中。,23,有三种基于ICMP的简单而广泛使用的应用为:Ping , Traceroute,MTU测试 Ping 使用ICMP回送和应答消息来确定一台主机是否可达。,ICMP应用,发送数据Z,我不知道怎样访问Z,广域网,到Z,目的端不可达,ICMP描述了目的地不可达,A,24,B可以到达吗?,可
23、以,我在这里。,ICMP回声请求,ICMP回声应答,由PING命令产生的回声应答,A,B,Ping是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP.,25,Traceroute 该程序用来确定通过网络的路由IP数据报。Traceroute基于ICMP和UDP。它把一个TTL为1的IP数据报发送给目的主机。第一个路由器把TTL减小到0,丢弃该数据报并把ICMP超时消息返回给源主机。这样,路径上的第一个路由器就被标识了。随后用不断增大的TTL值重复这个过程,标识出通往目的主机的路径上确切的路由器系列. 继续这个过程直至该数据报到达目的主机。但是目的主机哪怕接收到TTL为1的IP数据报,也不会丢弃该数据并产生一份超时ICMP报文,这是因为数据报已经到达其最终目的地。那么如何判断是否已经到达目的主机了呢?,26,Traceroute实现有两种方法: 一种:发生一个ICMP回应请求报文;目的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泰拳一周训练计划
- 设定受益计划税
- 面点房工作与计划
- GeP3-C复合材料负极在钠离子电池中的应用
- 上海浦东新区公办学校储备教师教辅招聘笔试真题2024
- 宁夏医科大学《秘书学理论与实务》2023-2024学年第二学期期末试卷
- 平顶山职业技术学院《时事政治述评》2023-2024学年第二学期期末试卷
- 江西生物科技职业学院《基础英语(3)》2023-2024学年第二学期期末试卷
- 云南经贸外事职业学院《农药学实验》2023-2024学年第二学期期末试卷
- 泰州学院《水产品加工概论》2023-2024学年第二学期期末试卷
- 商务英语听说-对外经济贸易大学中国大学mooc课后章节答案期末考试题库2023年
- 水利水电工程投标书
- 第十二讲 建设社会主义生态文明PPT习概论2023优化版教学课件
- 2023年杭州中考科学(word版及详细答案)
- 安徽诺全药业有限公司年产105吨医药中间体及原料药项目环境影响报告书
- 阆中张飞牛肉名称的来历
- 2021上半年江津区社区专职工作者《综合基础知识》试题
- 外墙GRC造型板施工方案
- 护理不良事件管理、上报制度及流程
- 预制板桥梁吊装方案(完整版)
- GB/T 9254.1-2021信息技术设备、多媒体设备和接收机电磁兼容第1部分: 发射要求
评论
0/150
提交评论