为什么和书上说的不一样呢?

看《whireshark网络分析就这么简单》第一节从一道面试题开始说起,我用packet tracer进行模拟,但是实验结果和书上的不同。书上说在执行ARP回复时并不考虑子网。即第4步B收到ARP请求时应该回复,而不是丢弃。为什么我模拟的时候显示丢弃呢?错在哪呢?是packet tracer模拟和现实还是有区别的么?

详细实验过程:
主机A和B同属于同一子网,但是B的子网掩码配错了(255.255.255.0 -> 255.255.255.224),使得B认为与A不属于同一子网,A还是认为与B属于同一子网。
B ping A

  1. B首先使用ARP获得网关的MAC地址,然后向网关发包。
  2. 网关接收到了之后,转发给了A。
  3. A接收之后,使用ARP来获取B的MAC地址。
  4. 当B接收到ARP请求后,说ARP请求好和接收端口不在同一网络,丢弃了该帧,如下图所示。

img

网络拓扑:

img

内核里arp_ignore 的值,决定回arp reply的规则
在收到解析本机IP地址的ARP请求后,此值定义了发送回复报文的几种不同模式:
0 - (默认值)只要请求的目标IP地址为本机地址,不管其配置在哪个接口上, 都回复其arp reply。
1 - 只有在请求的目标IP地址所在接口,与接收此请求报文的接口相同时回复。
2 - 除满足1的条件外,还要求发送arp请求的源IP地址所在网段为接收接口的IP地址所在网段的子网。
3 - 仅回复目标IP地址类型(scope)为global与link的请求,不对类型为host的请求回复。 另外,不要求目标IP位于数据包接收的接口上。
4 - 7 保留
8 - 不回复对本地地址的请求。
丢弃,应该是值为2,应答是0或者1.