资源预览内容
第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
第9页 / 共47页
第10页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第五讲 ICMP和IGMP协议1主要内容理解ICMP协议的概念与作用掌握ICMP报文的格式与封装格式掌握ICMP各种报文类型的作用理解IGMP协议的概念与作用掌握IGMP报文的格式与封装过程掌握IGMP四种操作的过程熟悉延迟响应策略25.1 ICMP协议协议ICMP协议即网际控制报文协议(Internet Control Message Protocol,ICMP),运行于IP协议之上,但通常被认为是IP协议的一部分。其中文实际含义是是“差错与控制协议”。ICMP协议的主要功能是: 1.传输差错信息 2. 传输控制信息 3ICMP协议协议ICMP在网络层中的位置如下:ICMP协议提供了一种机制,用于反映IP数据报处理时产生的错误信息并提供管理和状态信息。 当数据报在传输过程中发生错误,比如通信线路出错、网关或主机处理器出错、IP数据报不能传输(比如信宿机不可到达、TTL时间到等)、系统拥塞等 ,主机或者路由器的ICMP模块将被触发,并产生一个ICMP报文,向信源机发送该ICMP报文,报告出错情况,以便信源机采取相应的纠正措施 。 4ICMP协议协议ICMP协议不能提高IP协议的可靠性ICMP协议不能保证所有的数据报一定可以成功地达到目的主机ICMP报文只是报告IP数据报处理时产生地错误信息,无法报告ICMP数据单元本身地错误。5CMP协议与协议与IP协议的关系协议的关系 ICMP报文也是封装在IP数据报的数据部分中进行传输的,如下图ICMP数据的封装所示。包含ICMP报文的IP数据报报头“协议”域指出数据区内容为ICMP报文。ICMP软件只是作为IP软件的一个模块而存在。 6ICMP作为单独的一层吗?虽然ICMP报文由IP数据报传输,但我们并不把ICMP看作比IP更高层的协议。事实上,ICMP报文的信宿总是信宿机上的IP软件,。IP软件一旦接收到差错或控制报文,立即交给ICMP模块进行处理。在这种意义上,我们也可以把ICMP看作不同机器的IP软件间相互通信的机制。 在协议层次结构中,ICMP的差错和控制信息传输在概念上并不构成一个独立的层次,它不是一种具有普遍意义的传输机制,不是上层协议赖以存在的基础,而只解决了Internet中的一类特殊问题,所以不能独立出来。 7ICMP报文的格式 ICMP报文包括8个字节的报头和长度可变的数据部分。对于不同的报文类型,报头的格式一般是不相同的,但是前3个字段对所有的ICMP报文都是一样的。8ICMP报文的类型 类型(Type)字段,长度是1字节,用于定义报文类型。 ICMP报文有两大类:差错报告报文和查询报文。或称源抑制或称源抑制 即信宿不可到达即信宿不可到达 关于出错的报文关于出错的报文 关于控制的报文关于控制的报文 9ICMP报文的其余字段代码(Code)字段,长度是1字节,表示发送这个特定报文类型的原因。 校验和(Checksum)字段,长度是2字节,用于数据报传输过程中的差错控制。ICMP地校验和计算与IP报头的校验和类似,都是采用反码算术运算。报头其余部分的内容因不同报文类型而不同。如果标识了“Unused”,则此字段必须为0,保留为以后使用。数据字段内容因不同报文类型而不同,提供了ICMP差错和状态报告信息。10ICMP报文以IP数据报的形式传送携带了ICMP报文的IP数据报,其报头的主要设置如下:Version:值为4,表示ipv4的版本IHL:参考IP数据报格式Service Type:通常TOS的值都设为0Total Length、Identification、Flags、Fragment Offset:参考IP数据报格式TTL:参考IP数据报格式,通常由路由器预先设定一个恰当的初值Protocol:值为1,表示这个是ICMP报文Header Checksum:参考IP数据报格式Source Address:发现错误的主机或路由器的IP地址Destination Address:接收ICMP报文的主机或路由器的IP地址11基于WinPcap3.1的ethereal0.99捕获的一帧数据WinPcap3.1下载地址http:/www.winpcap.org/install/default.htm ethereal0.99下载地址http:/www.ethereal.com/download.html12协议数据分析目的站点的MAC地址源主机的MAC地址,表明该帧来自该主机协议类型值为0X0800,表示上层使用的是IP数据报13该帧数据的IP头部分14该帧数据的IP数据部分即ICMP报文数据15Destination Unreachable目的不可达报文是一个差错报告报文,其类型值Type=3,供路由器和目的主机使用。 代码(Code)字段的值表示该数据报出错的原因 16Code字段值含义码值意义0网络不可到达表示路由器找不到目的网络1主机不可到达表示路由器找不到目的,可能目的主机已关闭2协议不可到达表示数据报中指定的高层协议不可用3端口不可到达表示数据报要交付的应用程序(进程)未运行4需分片但DF置“1”表示数据报被设置为不可分割5源寻找路由失败6信宿网络未知7信宿主机未知8源主机被隔离9与信宿网络的通信被禁止10与信宿主机的通信被禁止11对请求的服务类型,网络不可到达12对请求的服务类型,主机不可到达13过滤的通信管理禁止表示对该主机的访问被禁止14违反主机优先级15优先级中止生效17Source Quench:源主机消亡或称源抑制 源主机消亡报文是一个差错报告报文,其类型值Type=4,代码Code=0,用于要求减慢数据报传输的速度。 18拥塞控制拥塞控制拥塞是无连接传输机制面临的重要问题,由于网关不预先为数据报分配缓冲区,可能出现大量数据报涌入同一网关的情况,当大量数据报涌入网关时,网关可能被“淹没”,这就是所谓拥塞(congestion)。归纳起来,造成拥塞的原因有两种:网关的处理速度太慢,不能完成数据报排队、表格刷新等日常工作;网关输入数据的速率大于输出线路的容量,比如许多数据同时通过同一网关转发就可能导致拥塞。拥塞的原因在于没有足够的网关缓冲区 19拥塞控制与流量控制 流量控制要解决的是点对点传输速率的匹配问题。比如在有直接物理连接的两台机器之间,假如发方发送数据的速率大于收方接收数据的速率,必然导致传输错误。这种问题就是流量控制要解决的。流量控制是局部的,而拥塞控制是全局性质的。拥塞可能出现在一个网关,也可能出现在几个网关甚至全部网关,无论如何,拥塞都可能影响整个网络的数据传输,并且拥塞的解决可能要由全部机器共同参与 20解决拥塞控制的方法是采用“源抑制”(source quench)技术 所谓源抑制就是抑制信源机发出数据报的速率 网关发现拥塞,发出ICMP源抑制报文。网关周期性测试每条输出线路,密切监视拥塞的发生,一旦发现某条输出线路发生拥塞,立即向相应源机发送ICMP源抑制报文。 信源机收到源抑制报文后,按一定的速率降低发往某信宿的数据报传输率。 拥塞解除后,信源机要恢复数据报传输速率。 21Time Exceeded:超时 超时报文是一个差错报告报文,其类型值Type=11。 代码(Code)字段的值表示超时的原因。Code0:在传输中超时仅为路由器使用Code1:在重组中超时仅为目的主机使用22Parameter Problem:参数问题 参数问题报文是一个差错报告报文,其类型值Type=12 。代码(Code)字段的值反映了丢弃该数据报的原因,指针(Pointer)字段的值准确指明了出现错误的位置 。Code0:表示原始数据报报头的某个字节中出现错误,此时指针字段的值指向出现错误的地方。Code1:标书路由器或目的主机需要特定的选项,但原始数据报并未提供此选项。在此种情况下不使用指针。23Redirect:重定向 重定向报文是一个比较特殊的差错报告报文。发送重定向报文的路由器不会丢弃数据报,而是把数据报转发给正确的路由器。代码(Code)字段的值给出了四种不同类型的重定向服务。Code0:对网络重定向Code1:对主机重定向Code2:对服务类型和网络重定向Code3:对服务类型和主机重定向24Echo Request/Reply回送请求和回送应答是一对查询报文,用于测试两个机器(主机或路由器)之间能否实现通信。类型字段Type=8表示这是回送请求(Echo Request)报文;Type=0表示这是回送应答(Echo Reply)报文。该报文可确定两个机器在IP级是否能够通信该报文可测试某个主机是否可达,通常是调用PING命令来实现。PING命令使用回送请求和回送应答,并具有指定请求的时间间隔和发送请求的次数。 25Timestamp and Timestamp Reply 时间戳请求和时间戳应答一对查询报文,用于确定IP数据报在源端和目的端之间往返所需要的时间,也可用作源端和目的端机器的时钟同步。 类型字段Type=13表示这是时间戳请求报文;Type=14表示这是时间戳应答报文。时间戳以通用时间(Universal Time,UT)的午夜起测量时间,ms为单位,理论值86400000=24*60*60*100026时间戳请求和时间戳应答报文可测量数据报从源端到目的端之间往返所需的时间发送时间=接收时间戳的值原始时间戳的值接收时间分组返回的时间发送时间戳的值往返时间发送时间接收时间注意:只有当源端时钟和目的时钟是同步的,发送时间和接收时间的值才是准确的。若知道单向传输时间(通常是往返时间的一半),则可以对源端时钟和目的时钟进行同步,计算公式为:时间差接收时间戳的值(原始时间戳的值单向传输时间)=发送时间1/2往返时间27例源主机发送时间戳请求给目的主机,并于4:23:07am收到时间戳应答。假设原始时间戳、接收时间戳以及发送时间戳的值分别为15780000,15782000,15784400,求发送时间、接受时间和往返时间。源主机和目的主机的时间差是多少?解: 4:23:07am的UT值即返回时间值15787000 发送时间接收时间戳的值原始时间戳的值2000 接收时间分组返回的时间发送时间戳的值2600 往返时间发送时间接收时间4600 时间差发送时间1/2往返时间20002300 30028Address Mask Request/Reply 地址掩码请求和地址掩码应答是一对查询报文,用于获得一个主机所在网络的子网掩码。类型字段Type=17表示这是地址掩码请求(Address Mask Request)报文;Type=18表示这是地址掩码应答(Address Mask Reply)报文。29Router Advertisement and Solicitations 路由器通告和路由器请求是一对查询报文,用于主机与路由器之间交换信息。路由器请求报文的格式如下: 30路由器通告报文的格式收到路由器请求报文的路由器,会创建一个路由器通告报文,并在网络上广播。 路由器通告报文的格式如下:31Information Request/Reply 信息请求和信息应答是一对查询报文,用于主机查找所连接网络的地址。 信息请求和信息应答报文的作用类似于反向地址解析协议(RARP),使主机能够得到自己的IP地址。此报文使用得很少,已被RARP和BOOTP协议取代。32ICMP小结IP协议是一种不可靠的、无连接的协议,不具备差错报告和差错纠正机制,它必须依赖于ICMP协议来报告处理一个IP数据报传输过程中的错误并提供管理和状态信息ICMP即网际控制报文协议,是IP协议的一部分。当数据报在传输过程中发生错误时,主机或者路由器的ICMP模块将被触发,并产生一个ICMP报文ICMP报文有两大类:差错报告报文和查询报文。其中,差错报告报文包括:目的不可达、源主机消亡、超时、参数问题、重定向。查询报文包括:回应请求和应答、信息请求和应答(已弃用)、时间戳和时间戳应答、地址掩码请求和应答、路由器通告和请求ICMP报文封装成IP数据报的形式传送。ICMP报文包括1字节的类型字段、1字节的代码字段、2字节的校验和字段和长度可变的数据字段335.2 IGMP协议协议IGMP协议即网际组管理协议(Internet Group Management Protocol)是与多播通信相关的一个必要的但不是充分的协议。IGMP负责管理多播组成员关系,它把连接在网络上的主机的成员关系状态信息传送给多播路由器。34IGMP在网络层中的位置IGMP在网络层中的位置如下:IGMP协议对于多播通信是必需的,帮助多播路由器创建和更新多播组的成员关系状态表。 35IGMP报文报文IGMP已经有了两个版本。我们讨论当前的版本IGMPv2。IGMP报文有三种报文类型:查询报文(通用或特殊)、成员关系报告和退出报告。36IGMPv2报文的格式第一个字段是类型字段,长度是1个字节,用于定义IGMP报文的类型。查询报文的类型值为0X11,成员关系报告的类型值为0X16,退出报告的类型值为0X17。第二个字段是最大响应时间字段,长度是1个字节,用于定义查询报文必须在多长时间内得到应答,以十分之一秒为计算单位。 第四个字段是组地址字段,长度是4字节,定义了一个D类多播地址。 37IGMP报文的封装IGMP报文也被封装成IP数据报的形式传送。IGMP报文本身被封装在IP数据报的数据区,而这个IP数据报又被封装在帧数据中。在报头中的协议(Protocol)字段设置成2,表示这是一个IGMP报文。 38IGMP操作操作IGMP工作在本地范围。连接到本地网络上的多播路由器有一个组多播地址表,里面至少有一个忠实成员(多播组)。多播组是基于进程而创建的。在一个给定接口上的多播组中的成员关系是动态的,它随时因为进程加入和离开该多播组而变化。39加入一个多播组主机或路由器都可以加入一个多播组。每一个主机创建一个成员关系表,表中包含所有至少含有一个进程的多播组以及多播组中的进程数。当第一个进程加入一个多播组时,主机就发送一个成员关系报告报文。 40退出一个多播组 当主机发现在一个特定的多播组中没有感兴趣的进程时,它就发送退出报告。同样地,当路由器发现在一个特定的多播组中没有连接在它的接口上感兴趣的网络,它就发送退出这个组的报告。 41删除一个多播组 当多播路由器收到退出报告时,并不立即从组多播地址表中删除该组。为了确定是否还有其他主机或路由器仍然对这个组感兴趣,多播路由器会发送一个特殊的查询报文。 42网络上的所有主机或路由器都可以收到这个查询报文。如果有主机或路由器对这个组感兴趣,那么它们将响应一个成员关系报告。 43如果在规定的响应时间内没有主机或路由器给出感兴趣的应答,那么多播路由器就认为在这个网络上没有成员对这个组感兴趣,因此就从组多播地址表中删除这个组。 44查询成员关系 IGMP为每一个局域网指定一个路由器作为查询路由器。查询路由器周期性地发送通用查询报文。在查询报文中,组地址被设为0.0.0.0,表示查询成员关系是面向主机所属的所有多播组。45如果有主机或路由器对这个组感兴趣,那么它们将响应一个成员关系报告。 为了避免不必要的通信量,IGMP使用延迟响应的策略。延迟响应主要用于有多个主机或路由器对同一个多播组感兴趣的情况。 46IGMP小结IGMP协议即网际组管理协议,是与多播通信相关的一个必要的但不是充分的协议。IGMP负责管理多播组成员关系,它把连接在网络上的主机的成员关系状态信息传送给多播路由器IGMP已经有了两个版本,当前的版本是IGMPv2IGMP报文有三种报文类型:查询报文(通用或特殊)、成员关系报告和退出报告IGMP报文也被封装成IP数据报的形式传送。在报头中的协议字段设置成2,表示这是一个IGMP报文IGMP在本地工作,主要有四种操作:加入一个多播组、退出一个多播组、删除一个多播组和查询成员关系。在查询成员关系时,为了避免不必要的通信量,IGMP使用延迟响应的策略。47
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号