计算机之前是如何实现互相通信的呢?
正文
首先,计算机之间通信人为设定一个准则,这个准则是什么呢?
如果两台计算机在一个相同网段,不需要辅助设备(网关)的帮助,可以直接通信。
如果两台计算机在不同网段,一定需要辅助设备(网关)的接力帮助,实现间接通信。
上文一下子出现很多陌生名词,需要解释:
相同网段
计算机A如果想和计算机B通信,用自己的网络掩码的二进制长度,遮掩自己的IP地址,IP地址被遮住的数字即为自己的网段。
用相同的方法,计算B的网段,如果A、B网段相同,则为相同网段。
不同网段
否则为不同网段。
网关
网关专门是为不同网段通信设计的硬件设备,它的存在使得不同网段通信成为可能,充当网关的硬件设备,通常有路由器、三层交换机、防火墙。
直接通信
尽管A、B知道对方和自己在一个网段,但是对方的硬件网卡地址(MAC地址)却不知道,为了实现通信,还需要知道对方的MAC地址,怎么办?
广播通信(一对多)
使用MAC = 0x FF.FF.FF.FF.FF.FF 先询问一下B的MAC,B能收到这个广播吗?可以的!B回复一下自己的MAC地址,A自然就知道了,然后A与B就可以点对点单播(一对一)通信了。
ARP协议
实现广播通信的协议是ARP协议,地址解析协议,为了解析对方计算机的IP、MAC的一个协议。
间接通信
既然网络设计之初,不同网段主机之间的通信需要网关中转,那就必须服从这个准则。
计算机A需要把自己和计算机B通信的IP报文发给网关,这里的所谓发给网关,是二层/数据链路层/以太帧头的目的MAC地址是网关的,这里是关键,理解了这点就理解了这个问题!
这个小菜一碟,因为计算机A与自己的网关在相同网段,使用广播通信,可以发现网关的MAC地址,就可以把IP报文发给自己的网关了。
网关收到这个IP报文,获得了IP报文中的目的IP,查询自己的路由表,发现主机B与自己另外一个接口在相同网段,于是通过广播通信获得主机B的MAC地址,然后就把IP报文以点对点(一对一)单播方式发给主机B,这样IP报文就到达了主机B。
主机B发出的返程IP报文,同样的原理,可以到达主机A。
所以主机A、B不会有对方的MAC地址,只会有自己网关的MAC地址。