1.ICMP是网络层协议,没有端口号,端口号是应用层协议才有的

2.ICMP协议的作用:

  网络探测与回馈机制

    1)网络探测

    2)路由跟踪

      *windows:tracert IP地址

      *linux或路由器:traceroute IP地址

    3)错误反馈

3.ICMP协议的封装格式:

ICMP头

数据(长度取决与类型)

 

  

   ICMP头:固定4个字节,包含类型字段、代码和检验和三个部分,这个值取决于ICMP报文类型

    *类型字段

icmp echo 端口号 icmp 0端口_字段

终点不可达:当路由器或主机不能应答数据报时,向源点发送终点不可达报文;通常有目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达等

源点抑制:当路由器或主机由于拥塞而丢弃数据报时,向源点发送源点抑制报文,使源点发送数据报的速率放慢

改变路由:路由器把改变路由报文发给主机,让主机知道下次将数据报发送给另一个路由

超时:当路由器收到一个IP数据报时,若发现目的地址不是自己,会将TTL减一再发出去,当TTL减为0时(收到时TTL=1)丢弃该包,并将超时的报文发送给源点;另外,如果终点在规定的时间内不能收到一个数据报的全部数据片时,也会将已经收到的数据片全部丢弃并向源点发送超时的报文。

参数问题:当路由器或目的主机收到的数据报的首部中有字段的值不正确时,丢弃该数据报并向源点发送参数问题的报文

回送请求或应答:主机向目标发送ICMP回送请求报文,目标收到该请求报文后必须给源主机一个应答报文。一般用来测试目标是否可达,常用的就是ping命令。

时间戳请求和应答:主机向目标发送ICMP时间戳请求报文,目标回送ICMP时间戳应答报文(包含一个32位字段,代表从1900年1月1日起到现在共有多少秒)。用来进行时间同步和测量时间。