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 | 优先权终止生效报文 | 差错 | |
4-源点抑制 | 0 | 源点抑制 | 差错 |
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 | 信息应答报文 | 查询(舍弃) |
17-地址请求 | 0 | 地址子网请求报文 | 查询(舍弃) |
18-地址应答 | 0 | 地址子网应答报文 | 查询(舍弃) |
ARP代理
如果ARP请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理ARP功能的设备就可以回答该请求,这个过程称作代理ARP(Proxy ARP)。
代理ARP功能屏蔽了分离的物理网络这一事实,使用户使用起来,好像在同一个物理网络上。
代理ARP分为普通代理ARP和本地代理ARP,二者的应用场景有所区别:
1,普通代理ARP的应用环境为:想要互通的主机分别连接到设备的不同三层接口上,且这些主机不在同一个广播域中。
2,本地代理ARP的应用环境为:想要互通的主机连接到设备的同一个三层接口上,且这些主机不在同一个广播域中。
代理ARP情况:处于同一网段内的主机,当连接到设备的不同三层接口时,可以利用设备的代
理ARP功能,通过三层转发实现互通。
本地代理ARP可以在下列三种情况下实现主机之间的三层互通:
1, 想要互通的主机分别连接到同一个VLAN中的不同二层隔离端口下;
2, 使能Super VLAN功能后,想要互通的主机属于不同的Sub VLAN;
3,使能Isolate-user-vlan功能后,想要互通的主机属于不同的Secondary VLAN。
重定向概念
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据报向它的目的地转发
何时重定向
a) 数据包的入接口和路由后的指定的出接口是同一个接口。
b) 数据包的源IP地址和该包应走的下一跳IP地址属于同一个网段。
c) 数据报非源路由的(这种情况应该比较少见了,源路由多见于Token Ring)。
d) 系统开启重定向功能。
源路由
IPv4 option 源路由选项提供了我们这个能力,我们可以决定,数据包如何被发往目的主机。
严格源路由选择让路由器必须按照IP列表中的顺序转发,如果转发下一跳不在路由器直连子网中,那么数据包将被丢弃,源主机将收到源路由失败的ICMP消息。严格源路由选项类型值为137。
松散源路由选项则对转发路径的要求宽松一些,只要求转发路径能按顺序经过选项中的IP地址列表,可以在列表中的两个IP地址之间经过其他路由器。松散源路由选项类型值为131。
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。