ICMP和IGMP协议

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第五讲ICMP和IGMP协议主要内容•理解ICMP协议的概念与作用•掌握ICMP报文的格式与封装格式•掌握ICMP各种报文类型的作用•理解IGMP协议的概念与作用•掌握IGMP报文的格式与封装过程•掌握IGMP四种操作的过程•熟悉延迟响应策略5.1ICMP协议•ICMP协议即网际控制报文协议(InternetControlMessageProtocol,ICMP),运行于IP协议之上,但通常被认为是IP协议的一部分。•其中文实际含义是是“差错与控制协议”。ICMP协议的主要功能是:1.传输差错信息2.传输控制信息ICMP协议•ICMP在网络层中的位置如下:•ICMP协议提供了一种机制,用于反映IP数据报处理时产生的错误信息并提供管理和状态信息。•当数据报在传输过程中发生错误,比如通信线路出错、网关或主机处理器出错、IP数据报不能传输(比如信宿机不可到达、TTL时间到等)、系统拥塞等,主机或者路由器的ICMP模块将被触发,并产生一个ICMP报文,向信源机发送该ICMP报文,报告出错情况,以便信源机采取相应的纠正措施。ICMP协议•ICMP协议不能提高IP协议的可靠性•ICMP协议不能保证所有的数据报一定可以成功地达到目的主机•ICMP报文只是报告IP数据报处理时产生地错误信息,无法报告ICMP数据单元本身地错误。CMP协议与IP协议的关系⑴ICMP报文也是封装在IP数据报的数据部分中进行传输的,如下图ICMP数据的封装所示。⑵包含ICMP报文的IP数据报报头“协议”域指出数据区内容为ICMP报文。⑶ICMP软件只是作为IP软件的一个模块而存在。IP数据区IP报头ICMP数据ICMP头标ICMP数据IP数据报ICMP作为单独的一层吗?•虽然ICMP报文由IP数据报传输,但我们并不把ICMP看作比IP更高层的协议。事实上,ICMP报文的信宿总是信宿机上的IP软件,。IP软件一旦接收到差错或控制报文,立即交给ICMP模块进行处理。在这种意义上,我们也可以把ICMP看作不同机器的IP软件间相互通信的机制。•在协议层次结构中,ICMP的差错和控制信息传输在概念上并不构成一个独立的层次,它不是一种具有普遍意义的传输机制,不是上层协议赖以存在的基础,而只解决了Internet中的一类特殊问题,所以不能独立出来。ICMP报文的格式•ICMP报文包括8个字节的报头和长度可变的数据部分。对于不同的报文类型,报头的格式一般是不相同的,但是前3个字段对所有的ICMP报文都是一样的。ICMP报文的类型•类型(Type)字段,长度是1字节,用于定义报文类型。•ICMP报文有两大类:差错报告报文和查询报文。或称源抑制即信宿不可到达关于出错的报文关于控制的报文ICMP报文的其余字段•代码(Code)字段,长度是1字节,表示发送这个特定报文类型的原因。•校验和(Checksum)字段,长度是2字节,用于数据报传输过程中的差错控制。ICMP地校验和计算与IP报头的校验和类似,都是采用反码算术运算。•报头其余部分的内容因不同报文类型而不同。如果标识了“Unused”,则此字段必须为0,保留为以后使用。•数据字段内容因不同报文类型而不同,提供了ICMP差错和状态报告信息。ICMP报文以IP数据报的形式传送•携带了ICMP报文的IP数据报,其报头的主要设置如下:•Version:值为4,表示ipv4的版本•IHL:参考IP数据报格式•ServiceType:通常TOS的值都设为0•TotalLength、Identification、Flags、FragmentOffset:参考IP数据报格式•TTL:参考IP数据报格式,通常由路由器预先设定一个恰当的初值•Protocol:值为1,表示这个是ICMP报文•HeaderChecksum:参考IP数据报格式•SourceAddress:发现错误的主机或路由器的IP地址•DestinationAddress:接收ICMP报文的主机或路由器的IP地址基于WinPcap3.1的ethereal0.99捕获的一帧数据•WinPcap3.1下载地址•ethereal0.99下载地址协议数据分析目的站点的MAC地址源主机的MAC地址,表明该帧来自该主机协议类型值为0X0800,表示上层使用的是IP数据报该帧数据的IP头部分该帧数据的IP数据部分即ICMP报文数据DestinationUnreachable•目的不可达报文是一个差错报告报文,其类型值Type=3,供路由器和目的主机使用。•代码(Code)字段的值表示该数据报出错的原因Code字段值含义码值意义0网络不可到达——表示路由器找不到目的网络1主机不可到达——表示路由器找不到目的,可能目的主机已关闭2协议不可到达——表示数据报中指定的高层协议不可用3端口不可到达——表示数据报要交付的应用程序(进程)未运行4需分片但DF置“1”——表示数据报被设置为不可分割5源寻找路由失败6信宿网络未知7信宿主机未知8源主机被隔离9与信宿网络的通信被禁止10与信宿主机的通信被禁止11对请求的服务类型,网络不可到达12对请求的服务类型,主机不可到达13过滤的通信管理禁止——表示对该主机的访问被禁止14违反主机优先级15优先级中止生效SourceQuench:源主机消亡或称源抑制•源主机消亡报文是一个差错报告报文,其类型值Type=4,代码Code=0,用于要求减慢数据报传输的速度。拥塞控制•拥塞是无连接传输机制面临的重要问题,由于网关不预先为数据报分配缓冲区,可能出现大量数据报涌入同一网关的情况,当大量数据报涌入网关时,网关可能被“淹没”,这就是所谓拥塞(congestion)。•归纳起来,造成拥塞的原因有两种:⑴网关的处理速度太慢,不能完成数据报排队、表格刷新等日常工作;⑵网关输入数据的速率大于输出线路的容量,比如许多数据同时通过同一网关转发就可能导致拥塞。•拥塞的原因在于没有足够的网关缓冲区拥塞控制与流量控制•流量控制要解决的是点对点传输速率的匹配问题。比如在有直接物理连接的两台机器之间,假如发方发送数据的速率大于收方接收数据的速率,必然导致传输错误。这种问题就是流量控制要解决的。•流量控制是局部的,而拥塞控制是全局性质的。拥塞可能出现在一个网关,也可能出现在几个网关甚至全部网关,无论如何,拥塞都可能影响整个网络的数据传输,并且拥塞的解决可能要由全部机器共同参与解决拥塞控制的方法是采用“源抑制”(sourcequench)技术•所谓源抑制就是抑制信源机发出数据报的速率⑴网关发现拥塞,发出ICMP源抑制报文。网关周期性测试每条输出线路,密切监视拥塞的发生,一旦发现某条输出线路发生拥塞,立即向相应源机发送ICMP源抑制报文。⑵信源机收到源抑制报文后,按一定的速率降低发往某信宿的数据报传输率。⑶拥塞解除后,信源机要恢复数据报传输速率。TimeExceeded:超时•超时报文是一个差错报告报文,其类型值Type=11。•代码(Code)字段的值表示超时的原因。•Code=0:在传输中超时——仅为路由器使用•Code=1:在重组中超时——仅为目的主机使用ParameterProblem:参数问题•参数问题报文是一个差错报告报文,其类型值Type=12。•代码(Code)字段的值反映了丢弃该数据报的原因,指针(Pointer)字段的值准确指明了出现错误的位置。•Code=0:表示原始数据报报头的某个字节中出现错误,此时指针字段的值指向出现错误的地方。•Code=1:标书路由器或目的主机需要特定的选项,但原始数据报并未提供此选项。在此种情况下不使用指针。Redirect:重定向•重定向报文是一个比较特殊的差错报告报文。发送重定向报文的路由器不会丢弃数据报,而是把数据报转发给正确的路由器。•代码(Code)字段的值给出了四种不同类型的重定向服务。•Code=0:对网络重定向•Code=1:对主机重定向•Code=2:对服务类型和网络重定向•Code=3:对服务类型和主机重定向EchoRequest/Reply•回送请求和回送应答是一对查询报文,用于测试两个机器(主机或路由器)之间能否实现通信。•类型字段Type=8表示这是回送请求(EchoRequest)报文;Type=0表示这是回送应答(EchoReply)报文。•该报文可确定两个机器在IP级是否能够通信•该报文可测试某个主机是否可达,通常是调用PING命令来实现。PING命令使用回送请求和回送应答,并具有指定请求的时间间隔和发送请求的次数。TimestampandTimestampReply•时间戳请求和时间戳应答一对查询报文,用于确定IP数据报在源端和目的端之间往返所需要的时间,也可用作源端和目的端机器的时钟同步。•类型字段Type=13表示这是时间戳请求报文;Type=14表示这是时间戳应答报文。•时间戳以通用时间(UniversalTime,UT)的午夜起测量时间,ms为单位,理论值86400000=24*60*60*1000时间戳请求和时间戳应答报文可测量数据报从源端到目的端之间往返所需的时间•发送时间=接收时间戳的值-原始时间戳的值•接收时间=分组返回的时间-发送时间戳的值•往返时间=发送时间+接收时间•注意:只有当源端时钟和目的时钟是同步的,发送时间和接收时间的值才是准确的。•若知道单向传输时间(通常是往返时间的一半),则可以对源端时钟和目的时钟进行同步,计算公式为:时间差=接收时间戳的值-(原始时间戳的值+单向传输时间)=发送时间-1/2×往返时间例•源主机发送时间戳请求给目的主机,并于4:23:07am收到时间戳应答。假设原始时间戳、接收时间戳以及发送时间戳的值分别为15780000,15782000,15784400,求发送时间、接受时间和往返时间。源主机和目的主机的时间差是多少?解:4:23:07am的UT值即返回时间值=15787000发送时间=接收时间戳的值-原始时间戳的值=2000接收时间=分组返回的时间-发送时间戳的值=2600往返时间=发送时间+接收时间=4600时间差=发送时间-1/2×往返时间=2000-2300=-300AddressMaskRequest/Reply•地址掩码请求和地址掩码应答是一对查询报文,用于获得一个主机所在网络的子网掩码。•类型字段Type=17表示这是地址掩码请求(AddressMaskRequest)报文;Type=18表示这是地址掩码应答(AddressMaskReply)报文。RouterAdvertisementandSolicitations•路由器通告和路由器请求是一对查询报文,用于主机与路由器之间交换信息。•路由器请求报文的格式如下:路由器通告报文的格式•收到路由器请求报文的路由器,会创建一个路由器通告报文,并在网络上广播。•路由器通告报文的格式如下:InformationRequest/Reply•信息请求和信息应答是一对查询报文,用于主机查找所连接网络的地址。•信息请求和信息应答报文的作用类似于反向地址解析协议(RARP),使主机能够得到自己的IP地址。此报文使用得很少,已被RARP和BOOTP协议取代。ICMP小结•IP协议是一种不可靠的、无连接的协议,不具备差错报告和差错纠正机制,它必须依赖于ICMP协议来报告处理一个IP数据报传输过程中的错误并提供管理和状态信息•ICMP即网际控制报文协议,是IP协议的一部分。当数据报在传输过程中发生错误时,主机或者路由器的ICMP模块将被触发,并产生一个ICMP报文•ICMP报文有两大类:差错报告报文和查询报文。其中,差错报告报文包括:目的不可达、源主机消亡、超时、参数问题、重定向。查询报文包括:回应请求和应答、信息请求和应答(已弃用)、时间戳和时间戳应答、地址掩码请求和应答、路由器通告和请求•ICMP报文封装成IP数据报的形式传送。ICMP报文包括1字节的类

1 / 47
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功