TCP/IP - ICMP协议

阅读数:125 评论数:0

跳转到新版页面

分类

网络/通信

正文

当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能做到安全的原因。ICMP数据包由8bit的错误类型和8bit的代码和16bit的校验和组成。而前 16bit就组成了ICMP所要传递的信息。

尽管在大多数情况下,错误的包传送应该给出ICMP报文,但是在特殊情况下,是不产生ICMP错误报文的。如下:

(1)ICMP差错报文不会产生ICMP差错报文(防止ICMP的无限产生和传送)

(2)目的地址是广播地址或多播地址的IP数据报。

(3)作为链路层广播的数据报。

(4)不是IP分片的第一片。

(5)源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地 址或多播地址。

ICMP协议大致分为两类,一种是查询报文,一种是差错报文。其中查询报文有以下几种用途:

(1)ping查询

(2)子网掩码查询

(3)时间戳查询

ICMP应用:

(1)ping

ping这个单词源自声纳定位,原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。

(2)traceroute

Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。

Traceroute的原理是非常非常的有意思,它受到目的主机的IP后,首先给目的主机发送一个TTL=1(还记得TTL是什么吗?)的UDP(后面就 知道UDP是什么了)数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。

有人要问,我怎么知道UDP到没到达目的主机呢?这就涉及一个技巧的问题,TCP和UDP协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较 小的端口,比如说80,比如说23,等等。而traceroute发送的是端口号>30000(真变态)的UDP报,所以到达目的主机的时候,目的 主机只能发送一个端口不可达的ICMP数据报给主机。主机接到这个报告以后就知道,主机到了。

(3)ICMP的IP重定向报文

当IP包在某一个地方转向的时候,都回给发送IP报的源主机一个ICMP重定向报文,而源主机就可以利用这个信息来更新自己的路由表,这样,随着网络通信的逐渐增多,路由表也就越来越完备,数据转发的速度也会越来越快。我们需要注意的是:

  1. 重定向报文只能由路由器发出
  2. 重定向报文为主机所用,而不是为路由器所用

 




相关推荐

一、ping 1、ttl 在网络通信中,TTL(Time To Live,生存时间)是一个在 IP 数据包头部的字段,用来防止数据包在网络中无限循环。TTL 的作用是限制数据包在网络中传输的最大跳数(

1、交换机 在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的总线和内部交换矩阵。交换机的所有的端口都挂接在这

1、RIP 路由信息协议(RoutingInformationProtocol,RIP)是一种使用最广泛的内部网关协议(IGP)。(IGP)是在内部网络上使用的路由协议(在少数

数据链路层有三个目的: 为IP模块发送和 接收IP数据报。 为ARP模块发送ARP请求和接收ARP应答。 为RARP发送RARP请

IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。 1、协议头</h2

静态选路,简要地说就是在配置接口的时候,以默认的方式生成路由表项。并通过route来增加表项,或者通过ICMP报文来更新表项(通常在默认方式出错的情况下)。 而如果上诉三种方法都不能满足,那么我

与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议。 1、协议头 (1)端口号 <p

1、广播 广播是主机针对某一个网络上的所有主机发送数据包。这个网络可能是网络,可能是子网,还可能是所有的子网。如果是网络,例如A类网址的广播就是 netid.255.255.2

DNS的全称是Domain Name System。它负责把FQDN(就是以"."分隔结尾的名字)翻译成一个IP。最初的DNS系统使用的是一个巨大的hosts.txt文件,可是一段时间以后,开发

一、概述 三层网络架构设计的网络有三个层次:核心层(网络的高速交换)、汇聚层(提供基于策略的连接)、接入层(将终端接入网络)。 接入层交换机、汇聚层交换机、核心交换机并非是交换机的分类和属性,只是由其