局域网中主机间通信

局域网中处于同一网段中的主机通信

假如:主机 A 要和主机 B 通信,主机 A 知道主机 B 的IP地址。知道IP地址是通信的前提。首先,要通进行通信,IP地址和MAC地址是必不可少的,IP地址已经知道了,那么主机 A 必须要知道主机 B 的MAC地址,先在ARP表中查看有无该IP地址,如果有,就找出对应的硬件MAC地址,如果没有,主机 A 广播发送ARP请求来获取目的MAC地址,说 who is 192.168.1.102 ?

  当IP地址是192.168.1.102的主机 B 收到后,会回复主机 A ,说 “我是192.168.1.102,我的MAC地址是:xx-xx-xx-xx-xx-xx(ARP应答)。这样一来,主机 A 就知道主机 B 的MAC地址了,当然,由于主机 A 在广播发送的ARP报文时,主机 A 的MAC地址被作为源MAC地址而封装在MAC帧中,所以主机 B 收到广播报文后也会知道主机 A 的MAC地址,这时,主机 A 的源IP地址、目的IP地址、源MAC地址和目的MAC地址都能确定了,就能够进行通信了。这也就是平时说的同一网段中的主机相互通信。

不同网段间主机通信

这里的不同网段,指的是不在同一子网下。

假如:主机 A 要和主机 D 进行通信,那么同样的,主机 A 如果广播发送 ARP 请求,询问192.168.1.22在哪里,很显然,主机 A 和主机 D 不在同一个网段内,路由器默认不转发广播报文,那么主机 D 就收不到 ARP 请求,也就无法回应主机 A,主机 A 也就无从获取主机 D 的MAC地址。

  其实,主机 A 会首先检查目的IP地址是否与自己在同一网段,如果在,就直接广播ARP请求来获取目的主机的MAC地址,如果不在同一网段,又配置有网关地址的话,那么主机 A 就通过 ARP 请求,询问192.168.0.1(网关)在哪里,网关收到后就会回应主机 A ,把网关的MAC地址告诉主机 A ,当获取到网关的MAC地址后,把网关的MAC地址作为MAC帧中的目的MAC地址,然后就把数据丢给网关 192.168.0.1 ,网关根据路由表,转发给下一个路由器,再由下一个路由器交付给主机 D 所在的网络,即网关,网关再通过ARP,找到目的主机 D ,完成数据交付。

 

posted @ 2018-07-22 19:06  shelmean  阅读(3536)  评论(1编辑  收藏  举报