1.ICMP是网络层协议,没有端口号,端口号是应用层协议才有的
2.ICMP协议的作用:
网络探测与回馈机制
1)网络探测
2)路由跟踪
*windows:tracert IP地址
*linux或路由器:traceroute IP地址
3)错误反馈
3.ICMP协议的封装格式:
ICMP头 | 数据(长度取决与类型) |
ICMP头:固定4个字节,包含类型字段、代码和检验和三个部分,这个值取决于ICMP报文类型
*类型字段
终点不可达:当路由器或主机不能应答数据报时,向源点发送终点不可达报文;通常有目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达等
源点抑制:当路由器或主机由于拥塞而丢弃数据报时,向源点发送源点抑制报文,使源点发送数据报的速率放慢
改变路由:路由器把改变路由报文发给主机,让主机知道下次将数据报发送给另一个路由
超时:当路由器收到一个IP数据报时,若发现目的地址不是自己,会将TTL减一再发出去,当TTL减为0时(收到时TTL=1)丢弃该包,并将超时的报文发送给源点;另外,如果终点在规定的时间内不能收到一个数据报的全部数据片时,也会将已经收到的数据片全部丢弃并向源点发送超时的报文。
参数问题:当路由器或目的主机收到的数据报的首部中有字段的值不正确时,丢弃该数据报并向源点发送参数问题的报文
回送请求或应答:主机向目标发送ICMP回送请求报文,目标收到该请求报文后必须给源主机一个应答报文。一般用来测试目标是否可达,常用的就是ping命令。
时间戳请求和应答:主机向目标发送ICMP时间戳请求报文,目标回送ICMP时间戳应答报文(包含一个32位字段,代表从1900年1月1日起到现在共有多少秒)。用来进行时间同步和测量时间。