总结:
(1) ICMP协议,属于IP协议的一部分,被用来传递IP层的差错报文。其中比较常见有echo,echo-reply,icmp redirection(重定向),类型代码分别是0,8,5。Echo(回显请求),echo-reply(回显答复)被用的最多的地方就是ping程序;ICMP报文重定向一般是用来让具有路由信息匮乏的主机逐步完善路由表,引导主机数据流的流向。下面主要说的是报文主机重定向。
(2) ICMP报文重定向一般是用来让具有路由信息匮乏的主机逐步完善路由表,它可以让主机默认的路由器优化主机的路由选择。我们先说说IP路由选择搜索路由表的顺序:首先搜索匹配的主机路由;然后搜索匹配的网络路由。最后实在没有匹配的路由条目后,使用默认路由;一般情况下,主机开始可使用的路由很少,可能就使用到一条,就是默认路由。下面再举一个例子来说明ICMP报文重定向是如何工作的:当一个主机(PC1)发送一个ip报文到非本地子网,主机判断这个ip报文是发到外网的(使用逻辑与),然后发给它的默认路由器(R1),路由器(R1)(这里说的路由器可以是一台开启ip转发功能的机器)打开ip报头,发现目的ip地址是发往外网,搜索路由表,发现通往下一跳路由器(R2)才是目的地址的真正网关,接口(比如eth0)可以通往。这时ICMP报文重定向就被触发,默认路由器发送ICMP重定向报文给主机,通知主机添加一条路由,告诉主机:你要去XX(目的地址),以后你把报文发给R2就好了。这里需要强调的重点(1)是ICMP重定向报文的触发条件是:主机的默认路由器接收主机IP报文的接口和IP转发接口必须是同一接口(即例子中eth0),也就是说默认路由器R1的eth0,PC,R2必须同属一个逻辑子网。(2)是ICMP报文重定向必须只能由主机的默认路由器发送给主机。我们使用抓包工具可以查看到ICMP重定向报文的类型是5,代码是0。这个0仅代表ICMP报文主机重定向。
(1) ICMP协议,属于IP协议的一部分,被用来传递IP层的差错报文。其中比较常见有echo,echo-reply,icmp redirection(重定向),类型代码分别是0,8,5。Echo(回显请求),echo-reply(回显答复)被用的最多的地方就是ping程序;ICMP报文重定向一般是用来让具有路由信息匮乏的主机逐步完善路由表,引导主机数据流的流向。下面主要说的是报文主机重定向。
(2) ICMP报文重定向一般是用来让具有路由信息匮乏的主机逐步完善路由表,它可以让主机默认的路由器优化主机的路由选择。我们先说说IP路由选择搜索路由表的顺序:首先搜索匹配的主机路由;然后搜索匹配的网络路由。最后实在没有匹配的路由条目后,使用默认路由;一般情况下,主机开始可使用的路由很少,可能就使用到一条,就是默认路由。下面再举一个例子来说明ICMP报文重定向是如何工作的:当一个主机(PC1)发送一个ip报文到非本地子网,主机判断这个ip报文是发到外网的(使用逻辑与),然后发给它的默认路由器(R1),路由器(R1)(这里说的路由器可以是一台开启ip转发功能的机器)打开ip报头,发现目的ip地址是发往外网,搜索路由表,发现通往下一跳路由器(R2)才是目的地址的真正网关,接口(比如eth0)可以通往。这时ICMP报文重定向就被触发,默认路由器发送ICMP重定向报文给主机,通知主机添加一条路由,告诉主机:你要去XX(目的地址),以后你把报文发给R2就好了。这里需要强调的重点(1)是ICMP重定向报文的触发条件是:主机的默认路由器接收主机IP报文的接口和IP转发接口必须是同一接口(即例子中eth0),也就是说默认路由器R1的eth0,PC,R2必须同属一个逻辑子网。(2)是ICMP报文重定向必须只能由主机的默认路由器发送给主机。我们使用抓包工具可以查看到ICMP重定向报文的类型是5,代码是0。这个0仅代表ICMP报文主机重定向。