本机系统里维护着一张对应表,记录同一个网络内每个地址对应哪块网卡。这张表不是配置出来的,是设备之间通信时一点点积累起来的。发出的数据先查这张表,查到就直接发,查不到就向整个网络问一次,谁应了就记下来。表里的条目有有效期,过期自动清掉。代理IP的转发不依赖这张表,两件事各管一段。
条目是怎么来的
一条记录的产生只有两种途径:本机主动问来的,或者对方主动发过来的。本机去问的时候,回应会被记下来;对方主动发过来的时候,发送方那一侧的对应关系也会被顺手记下。任何一次通信都会刷新对应条目的有效期,长期不说话的条目会先过期被清掉。设备重新接入网络时,这份表会先清空再重新积累,所以刚开机那几秒里的第一次通信通常要多问一次,速度看起来会慢一点。
- 先查表 按目标地址找对应的网卡,找到就直接发
- 查不到就广播 向整个网络问一次,谁持有谁回应
- 记下回应 把回应者记进表里,下次直接用
- 到期清理 长期没有通信的条目自动失效
表里的条目数量有上限,设备特别多的网络里可能出现挤占,表现为通信偶尔绕一圈。这种情况不常见,遇到时先看网络规模。
这张表什么时候会不准
地址换过之后,旧的那条对应关系不会立刻消失,要等到过期才清掉。这段时间里如果按旧条目发送,数据会送不到。设备换到另一个网络时,这份表会整体重建,旧条目跟着失效。代理IP的转发不查这张表,但如果转发设备和本机处在同一个网络里,两边看到的对应关系必须一致,否则会出现发得出去、回不来的情况。
这台表和地址冲突有什么关系
地址被两台设备同时使用时,这张表里的对应关系会来回变化,谁先回应就记谁。这是冲突现象里最直接的证据,也是排查时的观察点。代理IP环境下设备多,这张表的条目也更多,冲突时看到的变化比小网络里频繁。
表里的条目是通信时积累的,不是配置出来的。
长期没有通信的条目会先过期,不用手工清理。
这张表只在本网络内有效,出了边界换成另一套流程。表里条目来回变,先怀疑地址冲突。
