不同IP地址的主机之间是如何互相寻址?
2021-11-25

假设这两台IP地址不同的主机分别为A和B。

A主机中如果使用名称访问B主机必须先使用DNS,将B的名称解析为IP,然后A主机一以自己的IP为源地址,B的IP为目标地址封装IP数据包,同时使用A自己的网卡接口的子网掩码和B的IP进行与运算,如果B和自己在相同网络机载接口直接发送出去。

但接口在发送时还需要将IP数据包封装成数据帧,这需要两台主机的MAC地址。如果A知道B的MAC,则直接使用B 的MAC作为数据帧中的目的地址,如果不知道则向网络中发送ARP广播,将B的IP解析为MAC。

得到B的MAC地址后完成数据帧的封装,将数据帧用高低不同的电平值表示发送到物理线路中就可以了。这是同一子网中A向B的单向通信过程。

不同子网的通信过程中,DNS的名称解析是一样的。在数据包当中封装的源IP是A,目标IP是B,这个也一样。但是当A主机使用接口掩码和B的IP进行与运算后会发现两个IP不在同一子网,这是A会将这个数据包发送给本网络的网关(通常是本网的路由器),由网关来转发。

另外,在封装数据帧时,主机需要知道B的MAC地址,向外广播要求解析B的MAC,但B不在本网络,所以只能有网关的ARP代理功能实现,但A主机得到的并不是B的MAC地址,而是网关的MAC地址,所以A在数据帧中封装目的地址为本地网关。

接下来从接口发送出去,当数据到达网关,网关会读取数据包中的目的IP,并根据目的IP进行转发,在转发时数据包中的目的IP不变,但数据帧中的源MAC地址和目的MAC地址都会发生变化。

源MAC地址变为网关的发送接口的MAC地址,而目的地址可能是B主机的MAC或是下一个路由器的接口MAC。这就是不同子网的单向通信过程。

B向A的通信和此过程是一样的。

大家都在看
本站系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容!本站文章版权归原作者所有,内容为作者个人观点。本站只提供参考并不构成任何投资及应用建议。本站拥有对此声明的最终解释权。