ICMP Redirect只发给主机

为什么ICMP Redirect只发给主机?难道仅仅是协议规定吗?非也!要知道标准的IP路由是单向将数据包向前逐跳推进的,通过路由查找能找到的是下一跳,而无法简单的方式找到路径的上一跳,除非进行额外的反向路径查找,但是并不是标准规定必须的。如果要发送ICMP Redirect,能得到的信息只有IP报头中的那一堆东西,如果要发送ICMP Redirect给上一跳路由器,怎么知道谁是上一跳路由器呢?因此ICMP Redrect只判断数据报的源IP和下一跳IP是不是一个网段作为一个必要条件,如果是,说明数据报的源就是ICMP Redirect的目标,因此它就是一台主机了。
        实际上,并不能说ICMP Redirect只发给主机,试想如果上一跳路由器对数据包做了NAPT会怎么样呢?然而如果你把NAT路由器当成了一个代理,那也就无所谓称谓了。

 

posted @ 2013-06-09 21:13  爱生活,爱编程  阅读(537)  评论(0编辑  收藏  举报