虚拟机(VM)和 docker 容器都是在计算机上创建隔离环境的技术,可以理解为他们都是搭建在物理主机上的一个个相互隔离的主机,这是一种主机虚拟化的想法,也正是因为这种技术的出现才实现了我们可以容易的拥有一个属于自己的主机也就是云主机。我们可以从像阿里云、腾讯云等很多云服务的提供商那里购买一个虚拟主机作为我们的云服务器。那么这个虚拟主机没有自己的网卡那它到底是怎么接入互联网的呢?其实也不难猜,肯定是使用宿主机的硬件设施。那它的ip又是怎么确定的?
1、虚拟机的网络连接
虚拟机模拟了整个计算机系统,包括网络接口。它们通常通过以下几种方式连接网络:
1.1 桥接模式(Bridged Mode)
在这种模式下,虚拟机直接连接到物理网络,就像物理机一样。虚拟机有自己的IP地址,通常通过物理网络的DHCP服务器获得。DHCP 是一个网络协议,说白了就是一种约定,计算机网络中有很多这种约定,如果你想要上网就得按照我的约定来,比如我们写了一个后端接口,前端请求接口返回数据,这个返回的数据是什么格式需要前端和后端的小伙伴约定好,这个就可以叫做我们这个 web app中的协议,像tcp,ip等也是如此约定的,总之一群大神负责制定规则,不同的网卡厂商去实现这个规则。这个DHCP 就是规定动态分配IP的协议 而DHCP服务器就是实现了这个协议的设备通常是路由器
。回到正题,在桥接模式下虚拟机拥有了独立的ip这样它就能够像任何其他物理设备一样访问网络资源。虚拟机使用宿主机的物理网络接口卡连接到网络。虽然虚拟机共享宿主机的物理网络接口,但它在网络上表现为一个独立的设备。这块可能有疑问,一个网卡为什么会有多个ip地址,大学里面学的计算机网络全都还给老师了,ip是网络层的概念,而网卡是硬件是物理层和链路层的事,网卡有一个全球唯一的地址就是 MAC地址用来标记这个网卡的唯一性,而ip地址在这里你可以理解为是MAC地址别名 这里可能不太准确,这么说是方便理解,既然是别名当然可以有多个了
。