我无法理解将 ip 数据包发送到同一 LAN 上的另一台主机的步骤。我读过的大多数在线资源和与我交谈过的人都说主机使用子网掩码和目标 ip 来确定它们是否在同一个子网上。我知道这是如何工作的,但我对此有一些疑问。
为了确定它是否在同一个子网上,主机进入路由表,遍历每个条目,并对条目的掩码和感兴趣的目标地址执行按位与。然后将该结果与同一路由表条目的目标字段进行比较。在整个过程中匹配最多的位被确定为最佳匹配。找到最佳匹配后,它使用条目的接口字段发送数据报。如果最佳匹配条目的网关字段等于发送主机的 IP,那么这会告诉主机感兴趣的目的地位于同一子网上。然后使用 ARP 查找目标 IP 的 MAC(如果它不在 ARP 表中)并开始通信。
它是否正确?这就是它在 TCP/IP 中的描述方式。但是,当我与其他人交谈并在某些地方在线阅读时,有些人表现得好像主机只是对目标地址与主机的子网掩码进行按位与运算,因为这决定了它是否在同一个子网上,然后继续ARP。该过程根本不涉及路由表。
我对 TCP/IP 中作者的解释是否正确,或者我列出的第二种方法是否正确?