ICMP报文分类
| Type | Code | 描述 | 查询/差错 | 
|---|---|---|---|
| 0-Echo响应 | 0 | Echo响应报文 | 查询 | 
| 3-目的不可达 | 0 | 目标网络不可达报文 | 差错 | 
| 1 | 目标主机不可达报文 | 差错 | |
| 2 | 目标协议不可达报文 | 差错 | |
| 3 | 目标端口不可达报文 | 差错 | |
| 4 | 要求分段并设置DF flag标志报文 | 差错 | |
| 5 | 源路由失败报文 | 差错 | |
| 6 | 未知的目标网络报文 | 差错 | |
| 7 | 未知的目标主机报文 | 差错 | |
| 8 | 源主机隔离报文 | 差错 | |
| 9 | 禁止访问的网络报文 | 差错 | |
| 10 | 禁止访问的主机报文 | 差错 | |
| 11 | 对特定的TOS网络不可达报文 | 差错 | |
| 12 | 对特定的TOS主机不可达报文 | 差错 | |
| 13 | 由于过滤 网络流量被禁止报文 | 差错 | |
| 14 | 主机越权报文 | 差错 | |
| 15 | 优先权终止生效报文 | 差错 | |
| 5-重定向 | 0 | 重定向网络报文 | 差错 | 
| 1 | 重定向主机报文 | 差错 | |
| 2 | 基于TOS的网络重定向报文 | 差错 | |
| 3 | 基于TOS的主机重定向报文 | 差错 | |
| 8-Echo请求 | 0 | Echo请求报文 | 查询 | 
| 9-路由器通告 | 0 | 路由通告报文 | 查询 | 
| 10-路由器请求 | 0 | 路由器的发现/选择/请求报文 | 查询 | 
| 11-ICMP超时 | 0 | TTL超时报文 | 差错 | 
| 1 | 分片重组超时报文 | 差错 | |
| 12-参数问题 | 0 | IP报首部参数错误报文 | 差错 | 
| 1 | 丢失必要选项报文 | 差错 | |
| 2 | 不支持的长度报文 | 差错 | |
| 13-时间戳请求 | 0 | 时间戳请求报文 | 查询 | 
| 14-时间戳应答 | 0 | 时间戳应答报文 | 查询 | 
| 15-信息请求 | 0 | 信息请求报文 | 查询 | 
| 16-信息应答 | 0 | 信息应答报文 | 查询 | 
TOS概念
ToS即为服务类型,只有当网络设备能够支持(能够识别IP首部中的ToS字段)识别ToS字段时,这给字段设置才有意义。否则都是空谈。
先说具体字段的意义:
 Tos字段长度为8bit
 前3bit字段:
 为优选权子字段,现在已经废弃,这个字段默认值是000,大部分IP首部中的ToS字段的8bit字段中,前三个子字段默认值是000,默认填充为000。但是在一些特定的场景,例如OSPF协议中网络设备之间交互OSPF相关数据,该字段是有用的
4bit字段:
 这四个字段组合在一起,表示了该数据报对应的服务类别,这个应用层的服务类别是不同的。这里所说的服务类别,是指:
 1000 – minimize delay ** #最小延迟**
 0100 – maximize throughput #最大吞吐量
 0010 – maximize reliability #最高可靠性
 0001 – minimize monetary cost** #最小费用**
 0000 – normal service** #一般服务**
 IP首部中的ToS字段,只能表示一种服务类别,也就是:这4bit字段中,最多只能有一个bit字段为1。
看下不同应用下该4bit字段对应的值:

翻译过来就是:

最小延迟,对应于对延迟敏感的应用,如telnet和人login等。
 最大吞吐量,对应于对吞吐量要求比较高的应用,如FTP文件应用,对文件传输吞吐量有比较高的要求。
 最高可靠性,对网络传输可靠性要求高的应用,如使用SNMP的应用、路由协议等等。
 最小费用,如NNTP这种用户网络新闻等。
1bit字段:
 这个1bit末尾,没有被使用,必须强制设置为0
总结:
 该字段中,正常的IP报文,前3bit的值是000,用不上该优先权子字段;
 4bit字段中,表示的是服务类别,并且该4bit字段中,只能有一个bit字段为1;
 1bit字段中,该字段未使用但是必须强制为0。