一、ICMP
查询报文或差错报文
ICMP它传递差错报文以及其他需要注意的信息
ICMP报文是在IP数据报内部被传输的
所有报文的前4个字节(类型、代码、校验和)都是一样的,类型字段可以有15个值,描述特定类型的ICMP报文,某些ICMP报文还使用代码字段的值进一步描述不同的条件
校验和字段覆盖整个ICMP报文
当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8个字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来
IP首部:源IP地址为发送差错报文的接口IP,目的IP地址为原报文的源IP地址
ICMP首部:类型,代码,校验和。
产生差错的数据报IP首部:造成数据错误的IP头部
UDP首部:造成数据错误的端口号
ICMP差错报文
下面各种情况不会导致产生ICMP差错报文:
1.ICMP差错报文不会再产生ICMP差错报文
2.目的地址是广播地址或多播地址的IP数据报
3.作为链路层广播的数据报
4.不是IP分片的第一片,只有第一片才会有四层信息,其它片里面没有端口号。
5.源地址不是单个主机的数据报。源地址不能为零地址、环回地址、广播地址、多播地址
这些规则是为了防止过去允许ICMP差错报文对广播的响应所带来的广播风暴。
不同类型由报文中的类型字段和代码字段来共同决定
TYPE | CODE | Description | Query | Error |
---|---|---|---|---|
0 | 0 | Echo Reply——回显应答(Ping应答) | o | |
3 | 0 | Network Unreachable——网络不可达 | o | |
3 | 1 | Host Unreachable——主机不可达 | o | |
3 | 2 | Protocol Unreachable——协议不可达 | o | |
3 | 3 | Port Unreachable——端口不可达 | o | |
3 | 4 | Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特 | o | |
3 | 5 | Source routing failed——源站选路失败 | o | |
3 | 6 | Destination network unknown——目的网络未知 | o | |
3 | 7 | Destination host unknown——目的主机未知 | o | |
3 | 8 | Source host isolated (obsolete)——源主机被隔离(作废不用 | o | |
3 | 9 | Destination network administratively prohibited——目的网络被强制禁止 | o | |
3 | 10 | Destination host administratively prohibited——目的主机被强制禁止 | o | |
3 | 11 | Network unreachable for TOS——由于服务类型TOS,网络不可达 | o | |
3 | 12 | Host unreachable for TOS——由于服务类型TOS,主机不可达 | o | |
3 | 13 | Communication administratively prohibited by filtering——由于过滤,通信被强制禁止 | o | |
3 | 14 | Host precedence violation——主机越权 | o | |
3 | 15 | Precedence cutoff in effect——优先中止生效 | o | |
4 | 0 | Source quench——源端被关闭(基本流控制) | ||
5 | 0 | Redirect for network——对网络重定向 | ||
5 | 1 | Redirect for host——对主机重定向 | ||
5 | 2 | Redirect for TOS and network——对服务类型和网络重定向 | ||
5 | 3 | Redirect for TOS and host——对服务类型和主机重定向 | ||
8 | 0 | Echo request——回显请求(Ping请求) | o | |
9 | 0 | Router advertisement——路由器通告 | ||
10 | 0 | Route solicitation——路由器请求 | ||
11 | 0 | TTL equals 0 during transit——传输期间生存时间为0 | o | |
11 | 1 | TTL equals 0 during reassembly——在数据报组装期间生存时间为0 | o | |
12 | 0 | IP header bad (catchall error)——坏的IP首部(包括各种差错 | o | |
12 | 1 | Required options missing——缺少必需的选项 | o | |
13 | 0 | Timestamp request (obsolete)——时间戳请求(作废不用) | o | |
14 | Timestamp reply (obsolete)——时间戳应答(作废不用) | o | ||
15 | 0 | Information request (obsolete)——信息请求(作废不用) | o | |
16 | 0 | Information reply (obsolete)——信息应答(作废不用) | o | |
17 | 0 | Address mask request——地址掩码请求 | o | |
18 | 0 | Address mask reply——地址掩码应答 |