差错控制报文_第1页
差错控制报文_第2页
差错控制报文_第3页
差错控制报文_第4页
差错控制报文_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章差错控制报文ICMPInternetControlMessageProtocol(RFC792)标准RFC792InternetControlMessageProtocol,1981RFC1256ICMPRouterDiscoveryMessages,19912/1/20232页9.1引言IP协议(网际协议)只有一种报文格式--IP报文;功能:传递上层数据;缺乏:应付可能出现差错的能力。(哪些差错?)ICMP协议IP的辅助协议,所有TCP/IP协议都必须实现;为IP提供差错报告机制;同时为其它层(TCP/UDP、应用)提供辅助功能。2/1/20233ICMP的位置IGMPICMPIPARPRARP网际协议层ICMP报文IP数据IP首部帧数据帧首部帧尾部2/1/202349.2EffectsofICMPReportIPtransmissionerrorWhenevertheIPpacketwillbediscarded,theICMPdatagramisgenerated.CooperationamongHostsandGatewaysProblemsWhatactionshouldbetaken,IftheerroriscausedbyICMPdatagram?WheretheICMPwillreport?WhatactionshouldbetakenifaentityreceivedaICMPthatreportaerror?2/1/202359.3EncapsulationofICMP45TOSTotalLength1234500TTL1HCSSourceIPAddressDestinationIPAddressICMPdatagramEncapsulatedintodataareaofIPpacketICMPdatagramisdirectlysenttospecifieddest-IPSameunreliableasIPtransmission2/1/202369.3EncapsulationofICMPWhenerroroccurinIPentity,IPentitywillrequesttheICMPentitytosendanICMPdatagramtoreporttheerror.UpperlayerwillalsorequestICMPentitytosendanICMPdatagramtodosomethingICMP网络层IP协议1功能调用协议接口TCP/UDPx2/1/202379.4ICMP报文格式Type:ICMP的类型Code:类型的进一步信息CheckSum:报文校验码数据区:报文数据信息081631TypeCodeCheckSumICMP数据区ICMP报文一般格式2/1/20238类型代码-----(见教材P90)TypeDescription0EchoResponse3DestinationUnreachable4SourceQuench5Redirection8EchoRequest9RouterAdvertisement10RouterSolicitation11DatagramTimeout(TTL=0)12DatagramParameterError13TimestampRequest14TimestampResponse15InformationRequest(outofdate)16InformationResponse(outofdate)17AddressMaskRequest18AddressMaskResponse可达性测试报告无法找到目的抑制源站发送路由已发生改变路由器间协调过长路由报文格式错对时、时间同步掩码维护2/1/202399.5ICMP产生与处理测试可达性:Echo路由问题:目的站不可达、路由重定向路由器间协调:通告、请求拥塞控制:源站抑制过长路由、报文格式错时间同步掩码维护2/1/2023109.5.1可达性测试测试是否可达目的站的有效工具。IPICMPPing应用TCPUDPIPICMP请求/响应0or80校验和报文标识符(整数)顺序号可选数据2/1/2023119.5.2目的站不可达不可达有多种可能性IP在投递数据报,出现无法投递时,则丢弃报文,并产生ICMP报文,通知源站Code部分指出出错原因IP报文首部和IP数据供源站分析出错的情况3(0-12)校验和0x00000000IP报文首部+IP数据前64bit2/1/202312不可达出错原因CodeDescription0网络不可达:如路由出现暂时中断1主机不可达:如主机或线路出现暂时故障2协议不可达:目的站中未建立指定的SAP3端口不可达:TCP、UDP未建立的Port号4分片问题:报文不分片,但遇到小的MTU5源路由失败:严格源路由不连续,等6目的网络未知:选路表中无此路由项7目的主机未知:如发现目的IP是主机号全0的地址8源主机被隔离9与目的网络的通信被禁止10与目的主机的通信被禁止11使用给定的服务类型,则网络不可达:如低时延12使用给定的服务类型,则主机不可达:如高吞吐量2/1/2023139.5.3拥塞和数据流控制拥塞的原因机器产生的数据量可能比网络快不适当的路由使流量过分集中,超过信道容量源抑制报文控制拥塞40校验和0x00000000IP报文首部+IP数据前64bit源抑制报文2/1/202314拥塞处理发送队列可以缓解短暂的突发数据否则,只能丢弃报文,产生源抑制ICMP报文只能通知源站(why?)通知哪些源站?丢弃算法?(QoS)源站如何处理?减缓发送速率何时恢复发送速率?逐步增加拥塞控制能力弱,或不起作用(如路由问题造成)2/1/2023159.5.4路由改变请求路由器发现不良路由如:从同一接口接收和转发IP报文拓扑结构改变造成(临时或永久)通知源站作处理(当前路由器无法处理,why?)主机对该请求可能无能为力RRHICMPRRHICMPR图A:主机利用ICMP修改选路表图B:主机无能为力的路由2/1/202316redirection报文格式Code:Causeofredirection路由器IP地址:IP选路应重定向到该地址50~3校验和路由器IP地址IP报文首部+IP数据前64bitCodeDescription1对主机的重定向报文2对网络和服务类型的重定向报文3对主机和服务类型的重定向报文2/1/2023179.5.5报告TTL=0TTL=0的可能源站初设的TTL过小路由过长路由存在环路Code0=TTL减到0;1=分片组装超时Tracert利用小的TTL和该报文实现路由跟踪110~1校验和0x00000000IP报文首部+IP数据前64bit2/1/2023189.5.6时间同步请求得到其它机器的时间,以保持时间同步无时钟的机器通过向其它站点请求获得当前时间由应用层使用的报文域Type:13=Req;14=Resp时间单位:ms;时间起点:格林尼治由于路径、传输,难以得到非常精确的时间13or140校验和报文标识(整数)序号发起时间:报文发送时间接收时间:收到报文的时间发送时间:回送响应的时间2/1/2023199.5.7获取子网掩码向路由器获取本地子网的掩码信息Type:17=Req;18=Resp应用供IP协议软件使用主机知道路由器地址时,可以向路由器发送请求不知道路由器时,可广播发送,路由器作应答17or180校验和报文标识(整数)序号地址掩码2/1/2023209.5.8参数问题IP报文格式出错引起的ICMP报告Code=0时,指针指出IP报文中第几个字节出问题Code=1时报告IP报文缺少要求的选项120~1校验和指针0IP报文首部+IP数据前64bit2/1/2023219.6ICMP报文类型小结种类TypeDescription差错报告报文3DestinationUnreachable4SourceQuench5Redirection11DatagramTimeout(TTL=0)12DatagramParameterError查询报文8or0EchoRequestorResponse10or9RouterSolicitationorAdvertisement13or14TimestampRequestorResponse15or16InformationRequestorResponse(outofdate)17or18AddressMaskRequestorResponse2/1/2023229.6ICMP报文类型小结(续)ICMP报文查询回送请求或回答地址掩码请求或回答时间戳请求或回答路由器询问或通告差错报告终点不可达源站抑制时间超时参数问题改变路由不产生差错报文的情况:1)携带差错报文的数据报;2)非分段数据报的第一个分段;3)具有多播地址的数据报;4)具有特殊地址的数据报(如:或)。2/1/202323ICMP9.7ICMP软件包ICMP如何处理发送和接收ICMP报文?给出ICMP软件包:输入模块和输出模块。输入模块输出模块ICMP分组(所有类型)ICMP分组(回答和通告)ICMP分组(请求、询问和差错)请求(从IP来)发送差错报文IP高层差错报文的结果发送给几个协议回答报文发送给请求它们的进程请求(从应用程序来)发送查询请求(从UDP或TCP来)发送差错报文2/1/2023249.7.1输入模块(伪码)接收:从IP层来的ICMP分组1.若(这个类型是三种请求类型中的任何一种)1.创建回答报文;2.发送这个回答报文。2.若(这个类型是路由器询问报文)1.若(这个站是路由器)2.创建路由器通告报文;3)发送个能通行报文。3.若(这个类型是三种回答报文中的一种或路由器通告报文)1.在分组的数据部分提取出信息;2.把提取出的信息交付给请求它的进程。4.若(这个类型定义改变路由报文)1.修改路由表。5.若(这个类型定义差错报文而不是改变路由报文)1.把情况通知适当的源协议。6.返回。如何用流程图表示?如何用C语言实现?2/1/2023259.7.2输出模块(伪码)接收:一个请求1.若(这个请求定义了差错报文) 1.若(这个要求是禁止的) 1.返回。 2.若(这个类型定义了改变路由报文) 1.若(这个站不是路由器) 1.返回。 3.使用这个类型、代码和IP分组创建差错报文。2.若(这个要求定义了请求或询问报文) 1.创建请求或询问报文。3.发送这个报文。4.返回。2/1/202326本章小结1.Internet控制报文协议(ICMP)发送5种类型的差错报告报文和4对查询报文,用于支持不可靠的和无连接的网际协议(IP)。2.ICMP封装成IP数据报。3.当数据报无法交付时,就用目的端不可达差错报文发送给源主机。4.源端抑制差错报文是用来减轻拥塞程度的。5.超时报文通知源主机:1)生存时间字段的值已下降到零,或2)在预定的时间内报文中的一些分段未能到达。6.参数问题报文通知主机,在数据报的首部字段中出了问题。7.发送改变路由报文可使主机中的路由表更加有效。8.回送请求和应答报文用来测试两个系统之间的连通性。9.时间戳请求和应答报文能够确定两个系统之间的往返时间或两个系统之间的时间差。10.地址掩码请求和应答报文用来得到子网掩码。11.路由器询问和通告报文允许主机更新其路由表。12.ICMP检验和的计算要用到ICMP报文的首部和数据字段。13.分组Internet搜寻器(ping)是一种应用程序,它使用ICMP的服务来测试主机的可达性。14.简单的ICMP设计包括输入模块和输出模块。输入模块处理到来的ICMP分组,而输出模块处理对ICMP服务的要求。2/1/202327作业----(见教材P99)1.设计一个使用ICMP时间戳报文同步时钟的算法。2.学会使用ping、route和tracert(ortraceroute)命令。会不会出现ping或tracert超时,但http可以访问的情况?解释原因。3.路由器给ICMP报文的优先级是否应该比给正常通信量和高?为什么?4.没有哪个ICMP报文允许机器通知源站:传输错误造成到达的数据报被破坏了。解释原因。5.ICMP差错报文是否应该包含一个指明它们何时发送的时间戳?为什么?6.试着ping一个网络广播地址。有多少计算回答了?阅读协议文档,判断对广播的请求做出回答究竟是必须的、推荐的、不推荐的还是禁止的?2/1/202328编程练习1.ICMP软件包通常使用#define常量来说明不同报文类型的不同代码。试完成下面的表示本章中所有不同代码的语句:#define DU_NUR0/*目的端不可达,网络不可达*/#define DU_HUR3/*目的端不可达,主机不可达*/……2.ICMP软件包通常使用struct来说明分组首部的格式。但是,首部的最后4个字节对不同类型报文是特定的。解决这个问题的一种方法是在struct里面使用union语句。试完成下面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论