在traceroute中,当接收到*时,可能意味着路由器由于各种原因没有响应--要么路由器忙于处理其他数据包,要么ICMP被阻塞。我认为很少有is在Internet上配置一些路由器来过滤ICMP,因为ICMP流量是所有Internet流量中最不优先的。
但过了一段时间,我才能到达下一跳和目的地--当一个中间路由器忙着的时候,这怎么可能?这是否意味着当源接收到*时,源将TTL增加1,并发送跟踪探测包,而繁忙的中间路由器只会减少该数据包的TTL并将该数据包转发到下一跳路由器?
发布于 2020-12-16 22:00:05
但过了一段时间,我才能到达下一跳和目的地--当一个中间路由器忙着的时候,这怎么可能?
中间路由器忙于转发数据包,而来自不同路由器的数据包只是一个数据包,因此它被转发。路由器的主要工作是尽可能快地转发数据包。优先级列表中的低优先级是生成ICMP消息,当它有时间时它会这样做,但是如果它忙于转发数据包,它可能会将其推迟到该路由器的traceroute超时为止。
当路由器是中间路由器时,它不是生成ICMP错误消息,而是简单地转发包含由不同路由器生成的ICMP错误消息的数据包。中间路由器只知道它正在转发数据包(其主要任务),而不知道数据包包含什么。
发布于 2020-12-18 07:01:25
现代路由器在硬件中处理包转发(为了最大的速度和效率)。在处理控制流量时,即在CPU (软件)中,向路由器本身发送的通信量。考虑到的原因很少(也许还有更多),路由器不会响应ICMP消息。ICMP处理是禁用的(对于安全漏洞而言)--这会使某个人更难在该路由器上发起DDOS攻击。ICMP的处理优先级很低--路由器宁愿先处理OSPF/BGP来维护连接,而不是这个低优先级的任务。
https://networkengineering.stackexchange.com/questions/20081
复制相似问题