当两台计算机用一根网线、集线器or交换机连接时,并且配置同一个网段地址(192.168.0.x/24)时,他们是如何进行通信的呐?
为了讲这个问题,我们以Windows为例,笔者的系统是Windows 10。首先得提一下NetBISO(Network Basic Input/Output System,网络基本输入输出系统),具体在这里可以找到,如下图所示。
这个NetBISO呐有一个协议叫做NBNS(NetBIOS名称服务器),它在基于 NetBIOS 名称访问的网络上提供主机名和IP地址映射方法。就是这位在代替我们的DNS做局域网的主机名解析,把主机名解析成我们的IP地址。
那么仅有IP地址能通信吗?当然不行,还得知道对方的Mac地址才可以。这样才可以进行数据链路层数据帧的封装,MAC地址是怎么知道的呐?当然得靠我们的ARP协议,主机gbx和主机gbc要通信时,gbx向gbc发一个ARP request(who is 192.168.0.3,please tell192.168.0.2 mac addr),至此我们就知道了gbc的IP和mac地址。这样就可通信了。 为了避免大家说这个没有说服力,我们通过抓包在分析一下这个过程,网络拓扑图如下所示。
gbx的IP配置
gbc的IP配置
gbx 去ping gbc的抓包
图中貌似没有体现主机名gbc到IP地址的解析,只有IP到MAC地址的解析,这是因为模拟器有限制,没办法,笔者也是很郁闷。这里顺便附上一张别人用两台真机的测试图。
|