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

下载本文档

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

文档简介

第5章差错与控制报文协议5.1因特网控制报文协议

5.2ICMP报文格式与类型

5.3ICMP差错报告

5.4ICMP控制报文

5.5ICMP请求与应答报文对

5.6ICMP报文封装

IP层的差错控制的特点IP层解决的主要是信宿机不可达的问题,由于信宿机本身不可达,使得信宿机无法参与控制,所以通达端到端的方式来解决不太现实。IP层仅仅涉及与路径和可达相关的差错问题,而不解决数据本身的差错问题。IP层的差错与控制由一个独立的协议ICMP完成,IP协议不负责完成差错与控制功能。控制是建立在对信息了解的基础上的,在ICMP中控制方可以通过主动和被动两种方式了解信息。5.1因特网控制报文协议(ICMP)ICMP协议设计的最初目的主要是用于IP层的差错报告,由路由器或信宿以一对一的模式向信源报告传输错误的原因。随着网络的发展,检测和控制功能逐渐被引入到ICMP协议中,使得ICMP协议不仅用于传输差错报告,而且大量用于传输控制报文。ICMP与IP协议位于同一个层次(IP层),但ICMP报文是封装在IP数据报的数据部分进行传输的。ICMP协议是IP协议的补充,用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。返回5.2ICMP报文格式与类型ICMP报文由首部和数据段组成。首部为定长的8个字节,前4个字节是通用部分,后4个字节随报文类型的不同有所差异。ICMP报文的一般格式如图所示。ICMP报文虽然细分为很多类,但总的来看可以分为如图所示的三大类:差错报告、控制报文和请求应答报文。返回5.3ICMP差错报告ICMP差错报告的数据区包含出错数据报的首部及该数据报的前64位数据,这些信息有助于信源或管理人员发现错误原因。ICMP差错报告具有以下特点:1)只报告差错,但不负责纠正错误,纠错工作留给高层协议去处理。2)发现出错的设备只向信源报告差错。3)差错报告作为一般数据传输,不享受特别优先权和可靠性。4)产生ICMP差错报告的同时,会丢弃出错的IP数据报。形成ICMP差错报告时有以下例外:1)ICMP差错报文本身不会再产生ICMP差错报告。2)分片报文的非第一个分片不会产生ICMP差错报告。3)组播地址报文不会产生ICMP差错报告。4)特殊地址和的报文不会产生ICMP差错报告。5.3.1信宿不可达报告

当路由器无法根据路由表转发IP数据报时或主机无法向上层协议和端口提交IP数据报时,将丢弃当前的数据报,并产生信宿不可达差错报告,向信源报告出错。信宿不可达报文如图所示。信宿不可达报文可能由路由器产生,也可能由信宿机产生。产生信宿不可达报文的原因的16种可能:类型报文代码描述3信宿不可达0网络不可达1主机不可达2协议不可达3端口不可达4数据报无法分片5源路由失败6信宿网络未知7信宿主机未知8源主机被隔离9与信宿网络的通信被禁止10与信宿主机的通信被禁止11对特定的服务类型(TOS)网络不可达12对特定的服务类型(TOS)主机不可达13因管理者设置过滤而使主机不可达14因非法的优先权而使主机不可达15因报文的优先级低于网络设置的最小优先级而使主机不可达5.3.2数据报超时报告在数据报的传输过程中,首部的TTL值用于防止数据报因路由表的问题而无休止地在网络中传输。当TTL值为0时,路由器会丢弃当前的数据报,并产生一个ICMP数据报超时报告。另外。在信宿进行分片重组时会启动重组定时器,一旦重组定时器超时,信宿就会丢弃当前正在重组的数据报,然后产生一个ICMP数据报超时报告,并向信源发送该超时报告。数据报超时报告的报文格式与信宿不可达报告的报文格式相同,只是类型和代码值不同。数据报超时报告的类型和代码的含义如表所示。类型值11表示是数据报超时报文,代码“0”表示TTL超时,代码“1”表示分片重组超时。类型报文代码描述11超时0路由TTL超时1分片重组超时5.3.3数据报参数错报告数据报参数错报告是由数据报首部字段值不明确或空缺而引起的差错报告。一旦路由器或信宿机发现错误的数据报首部和错误的数据报选项参数时,便抛弃该数据报,并向信源发送差错报告报文。数据报参数错报文的格式如图6-4所示。类型12表明数据报参数错代码“0”表示数据报首部中的某个字段的值有错或不明确,这时ICMP报文首部的指针指向数据报中有问题的字节;代码“1”表示数据报首部中缺少某一选项所必须具有的部分参数,此时的ICMP报文没有指针字段。表6-3给出了数据报参数错报告的类型。代码为“0”的参数错只能报告一个出错参数代码为“1”的参数错只能报告缺少参数,不能说明缺少哪个参数。类型报文代码描述12参数错0IP首部参数错1缺少选项所要求的部分返回5.4ICMP控制报文ICMP控制报文包括源抑制报文和重定向报文源抑制报文——用于拥塞控制重定向报文——用于路径控制下表给出了这两类报文的类型和作用描述。类型作用代码描述4拥塞控制0源抑制报文5路径控制0网络重定向1主机重定向2基于服务类型的网络重定向3基于服务类型的主机重定向5.4.1源抑制报文IP协议采用的是无连接数据报方式进行传输发送方事先并不了解中间的路由器和信宿的处理能力和缓冲区大小在数据报传输过程中没有采用任何流量控制机制 当大量的数据报进入路由器或信宿时,会造成缓冲区溢出,即出现拥塞(Congestion)。ICMP利用源抑制的方法来进行拥塞控制。通过源抑制来减缓信源发出数据报的速率。源抑制报文的格式如图6-5所示。源抑制包括三个阶段:发现拥塞阶段、解决拥塞阶段和恢复阶段。在发现拥塞阶段,路由器对缓冲区进行监测,一旦发现拥塞,立即向相应的信源发送ICMP源抑制报文。该信源收到源抑制报文后,便知道拥塞已经发生,而且所发送的数据报已经丢掉。在解决拥塞阶段,信源根据收到的源抑制报文中所带的原数据报的首部信息决定对去往某一特定信宿的信息流进行抑制。通常信源在收到源抑制报文后,按一定的规则降低发往某信宿的数据报传输率。拥塞解除后,信源逐渐恢复数据报传输速率。在拥塞控制中以下几点值得关注:1)虽然对于每个因拥塞而丢弃的数据报都产生ICMP源抑制报文,但信源只按照自己的时间段进行响应。2)拥塞的解除由信源依据是否有进一步的源抑制报文到达来进行判断。3)拥塞可能是由多个源共同行为的结果,由于各个信源的发送速率相差较大,源抑制的效果未必很好。5.4.2重定向报文因特网上的路由器和主机中都存有一个路由表,路由表决定了去往目的地的下一跳路由器的地址。路由器上的路由表能够及时地反映网络结构的变化,这一特点由路由器之间定期交换路由信息加以保证。主机因为不能保证全天开机,所以主机中的路由表不能及时反映网络结构的变化情况。另外,由于因特网上的主机数量远大于路由器的数量,主机如果参与路由信息的交换,势必带来大量的通信开销。因此主机中的路由表不通过路由协议进行更新。但主机所在的网络可能和多个路由器相连,主机在发送信息时也要根据其路由表来选择下一跳路由器,为了解决主机路由表的刷新问题,ICMP提供了重定向机制。主机路由表所给出的下一跳路由器可能并非去往信宿的最佳下一跳路由器,当主机的下一跳路由器收到数据报后,该路由器根据它的路由表判断本路由器是否是去往信宿的最佳选择,如果不是,该路由器仍然会向信宿网络转发该数据报,但在转发的同时会产生一个ICMP重定向报文,通知信源修改它的路由表,重定向报文中将给出信源最佳下一跳路由器的IP地址。主机A根据重定向报文修改路由表的例子。ICMP重定向报文的格式如图所示。代码从0到3分别代表不同的重定向方式,具体含义由前面的表6-4给出。主机开机后在ICMP重定向机制的作用下,经过不断积累逐渐充实和完善其路由表。动态且优化值得注意的是:1)ICMP产生重定向报文的时候并不丢弃原数据报。2)ICMP重定向报文由位于同一网络的路由器发送给主机,完成对主机的路由表的刷新。3)被刷新的路由表项与重定向报文数据部分指示的IP数据报首部中的信宿地址相关。内容为重定向报文中目标路由器的IP地址。

返回5.5ICMP请求与应答报文对ICMP请求与应答报文对的出现使得因特网上的任何主机或路由器可以向其他主机或路由器发送请求并获得应答。通过ICMP请求与应答报文对,网络管理人员、用户或应用程序可以对网络进行检测,了解:设备的可达性地址掩码的设置时钟的同步等情况目的是利用这些有用的信息,对网络进行故障诊断和控制。ICMP请求与应答报文对如表6-5所示。其中的信息请求与应答报文已经不再使用。类型作用代码报文8回应请求与应答0回应请求00回应应答10路由器请求与通告0路由器请求90路由器通告13时间戳请求与应答0时间戳请求140时间戳应答15信息请求与应答(已不用)0信息请求160信息应答17地址掩码请求与应答0地址掩码请求180地址掩码应答5.5.1回应请求与应答报文回应请求与应答报文的目的是对网络进行诊断和测试。回应请求与应答不仅可以被用来测试主机或路由器的可达性,还可以测试IP协议的工作情况。TCP/IP网络系统所提供的ping命令大多是利用ICMP回应请求与应答报文来实现的,该命令通常用于测试信宿的可到达性。ICMP回应请求与应答报文的格式如图所示。类型“8”表明是回应请求报文类型“0”表明是回应应答报文协议未对标识符和序列号字段进行正式定义,通常将标识符和序列号用于匹配请求与应答,标识符一般为发起请求进程的进程ID。回应请求与应答报文的标识符和序列号一致。5.5.2时间戳请求与应答报文因特网中的各个主机和路由器都是独立运行的,因此在时钟上存在着较大的差异,而一些分布式应用系统要求各个设备的时钟是同步的,ICMP时间戳请求与应答报文就是用于设备间进行时钟同步的报文对。用时间戳请求与应答报文进行时钟同步的基本思路是请求方主机通过获取另一主机的时间戳信息,将该信息和请求方主机的时间戳信息进行比较后,估算两者的时钟差异。请求/应答格式如图。类型13:请求报文,类型14:应答报文。初始时间戳字段用于指示请求方发出请求的时间接收时间戳字段用于指示应答方主机收到请求的时间发送时间戳字段用于指示应答方主机发送应答的时间三个时间戳字段各为32比特长,以毫秒为单位从世界时间午夜0点起计时。时间戳的计数值不能超过86400000(24小时)。请求报文:填初始时间戳,接收时间戳和发送时间戳为0。应答报文:初始时间戳直接从请求报文中复制,接收时间戳和发送时间戳由应答方主机根据自己接收和发送时的时钟填写。

为了估算请求方与应答方之间的时钟差异,首先要计算出时间戳请求和应答的往返延迟,然后据此计算出单程传输延迟,最后由两设备的时间戳和单程传输延迟计算出两台设备之间的时间差,从而实现时钟的同步。 往返延迟时间可以用下式计算:往返时间=t当前-t初始-(t发送-t接收) =t接收-t初始+t当前-t发送

假设传输请求的时延和传输应答的时延相同,那么单程时延就等于往返时间的一半。

一个时钟同步的例子:主机A发出时间戳请求时的初始时间戳为1000毫秒,主机B收到请求时的接收时间戳是1055毫秒,主机B给出应答时的发送时间戳是1057毫秒,主机A收到应答时的时间为1030毫秒。主机A可以根据这些时间戳计算出两台主机间的时间差。往返时间=t当前-t初始-(t发送-t接收) =1030-1000-(1057-1055)=28(毫秒)单程时延=28÷2=14(毫秒)时间差=t接收-(t初始+单程时延)=1055-(1000+14)=41(毫秒)由上面的计算可知:主机B的时钟比主机A的时钟快了41毫秒。

5.5.3地址掩码请求与应答报文地址掩码请求与应答报文使得一台主机可以获得另一台主机或路由器的子网掩码。如果能够获得本网络中路由器的子网掩码,也就得到了本机所属子网的掩码。无盘机通过RARP获得IP地址后,可以利用地址掩码请求来获得子网掩码。地址掩码请求与应答报文的格式如图6-11所示。类型“17”表示地址掩码请求,地址掩码请求报文的地址掩码字段为“0”。类型“18”表示地址掩码应答。5.5.4路由器请求与通告报文初始化路由表的方法:在配置文件中指定静态路由利用ICMP路由器请求和通告报文来获得路由器的IP地址。 通过路由器请求和通告报文还可以知道路由器是否处于活动状态。 主机在引导以后通过广播或组播发出路由器请求报文。一台或更多台路由器以路由器通告报文作为响应。即使没有路由器请求报文,路由器也可以定期广播或组播路由器通告报文。ICMP路由器请求报文和路由器通告报文的格式如图。

地址数字段指明报文所含的地址项的个数。一个地址项由一个IP地址和一个4字节的地址优先级构成。地址项大小字段指明每个路由器地址项所占32比特字的数目,一般为2。生存期字段以秒为单位指明所通告地址的有效时间。数据区是一到多个地址项。地址项中的优先级指出该IP地址作为默认路由器地址的优先等级,值越小优先级越高。若地址优先级为0,则该地址可作为默认路由器地址。优先级为0x80000000时,表明该地址不能作为默认路由器地址使用。返回5.6ICMP报文封装向下:虽然ICMP协议可以接受来自上层的请求,但并不直接封装来自上层协议的数据。ICMP协议将请求转变为ICMP报文,然后将报文封装在IP协议中进行发送。包含ICMP报文的IP数据报首部的协议字段为“1”。向上:IP软件一旦接收到差错或控制报文,立即交给ICMP模块进行处理。ICMP模块可以形成应答报文,也可以交给上层的应用程序或协议去处理。5.7Windows环境下的ping命令

在网络中ping是一个十分强大的TCP/IP工具。它主要的作用是用来检测网络的连通情况和分析网络速度。ping命令的语法格式ping命令的完整的语法格式如下:ping[-t][-a][-ncount][-lsize][-f][-iTTL][-vTOS][-rcount][-scount][[-jhost-list]|[-khost-list]][-wtimeout]<目标地址(IP或主机名)>2.Ping的参数介绍如下图所示,从命令格式中可以看出它的复杂程序,Ping命令后面是它的执行参数,下面对其参数作详细的介绍。调用帮助

不带参数的ping命令TimeToLiveTTL值:TimeToLive,表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。可以通过Ping返回的TTL值大小,粗略地判断目标系统类型是Windows系列还是UNIX/Linux系列。TTL值:100~130ms之间,Windows系统240~255ms之间,UNIX/Linux系统//TTL的值在对方的主机里是可以修改的,Windows系列的系统可以通过修改注册表以下键值实现:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

"DefaultTTL"=dword:000000ff

-t:不间断地Ping指定计算机,直到管理员中断。

使用CTRL+C停止

-lsize:发送size指定大小的到目标主机的数据包。在默认的情况下Windows的ping发送的数据包大小为32byt,最大能发送65500byt。当一次发送的数据包大于或等于65532byt时,将可能导致接收方计算机当机。这个参数配合其它参数以后危害非常强大,比如攻击者可以结合-t参数实施DOS攻击。例如:ping-l65500-t8//-t:连续对IP地址执行ping命令,直到被用户以Ctrl+C中断响应时间明显变慢-a:将地址解析为计算机名(NetBios名)。

例如:ping–a35和ping35的不同NetBios名NetBIOS:

是NetworkBasicInput/OutputSystem的简称,一般指用于局域网通信的一套API(应用程序编程接口)。在win32环境中,针对每个可用的LANA编号,每个进程都会为其维持一张NETBIOS名字表。

-ncount:发送count指定的Echo数据包数。

//在默认情况下,ping将发送四个数据包。例如:ping-n100-rcount:在“记录路由”字段中记录传出和返回数据包的路由,探测经过的路由个数,但最多只能跟踪到9个路由。图3-4参数-r的使用-scount:count指定的跃点数的时间戳。此参数和-r差不多,只是这个参数几乎不记录数据包返回所经过的路由,最多也只记录4个。-jhost-list利用computer-list指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP允许的最大数量为9。-khost-list利用computer-list指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP允许的最大数量为9。-wtimeout指定超时间隔,单位为毫秒。

思考题HowtoImplementPing?5.7跟踪网络连接的Tracert命令

Tracert(跟踪路由)命令是路由跟踪实用程序,用于确定IP数据包访问目标所采取的路径。Tracert命令用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由1.使用格式tracert[-d][-hmaximum_hops][-jhost-list][-wtimeout]target_name2.参数介绍-d:指定不将地址解析为计算机名。-hmaximum_hops:指定搜索目标的最大跃点数。-jhost-list:指定沿computer-list的稀疏源路由。-wtimeout:每次应答等待timeout指定的微秒数。target_name:目标计算机的名称。C:\>tracert

Tracingrouteto[3]

overamaximumof30hops:

125ms26ms22ms21.[]

256ms49ms53ms18.[1]

346ms55ms46ms18.[25]

466ms70ms65ms18.[01]

561ms*64ms29

652ms49ms49ms2

765ms67ms72ms21

834ms38ms34ms4

968ms*78ms8

1087ms88ms85ms[3]

Tracecomplete.不带参数的tracert命令问题:有了IP记录路由选项和Ping命令,为何还需要Traceroute?(1)不是所有的路由器都支持记录路由选项(2)Ping记录下来的地址翻了一番(一来一回)(3)IP首部中记录路由选项空间有限2、traceroute工作原理

ICMP超时报文+IP首部的TTL(1)发送IP数据报,TTL=1,则到达第一个路由器后TTL=0,该路由器向源端发送ICMP超时报文,该报文封装在IP数据报中,源端收到该报文后提取IP首部的IP地址字段,则记录了第一个路由器。(2)发送IP数据报,TTL=2,记录第二个路由器。……问题:如何判断何时到达目的主机?1.利用端口不可达报文(1)源端发送的IP报文封装了UDP报文,其端口为65535,同时IP首部按照Tracert的原理构造。(2)途中的路由器回应ICMP超时报文。(3)目的主机回应端口不可达报文。(4)源端根据返回的报文类型判断是否到达目的端。2.利用ICMPECHO和ECHOREPLY报文问题:如果目标不活动怎么办?R1R2SDR3TTL=1ICMP超时TTL=2ICMP超时本章要点ICMP协议是IP协议的补充,用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。

温馨提示

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

评论

0/150

提交评论