网络之IP的来源------DHCP协议
我们可以通过ifconfig或者ip addr来获取到IP的相关信息。
那么IP是怎么来的呢?
首先,我们肯定可以自己设置IP,那么IP可以随便设置吗?肯定可以设置的,但是如果设置一个和默认网关不是一个网络号码段的IP中,则本机器发出去的包,在局域网内的其他机器无法收到而已。
虽然我们可以设置自己的IP,但是如果每增加一台机器进来,都需要网络管理员手动配置,那会多么的麻烦。所以这个时候就有了DHCP——动态主机配置协议。
第一步:当新机器进来的时候,它需要IP,这个时候就大吼一声,这一步称之为:DHCP DISCOVER 发送报文如下:
这个时候,新机器只知道自己的MAC地址,0.0.0.0作为自己IP,广播IP为255.255.255.255,广播MAC:ff:ff:ff:ff:ff:ff:ff
第二步:这个时候作为DHCP SERVER收到这个包后,会根据网络包中的MAC地址判断,该MAC地址是不是一台新机器(MAC地址作为一台计算机的唯一标识),如果是的话,则会为其分配一个ip,但这个时候新机器还没有被分配到IP,所以依然把255.255.255.255作为广播地址,将包发出去,目标MAC为新机器的MAC地址。这个过程称之为:DHCP OFFER
第三步:新机器收到该网络包,会接受该网络包。并向网络发出一个DHCP REQUEST,里面包含:客户端的MAC地址,租用的IP,提供IP的DHCP SERVER的地址,并且会告诉:我将使用那个DHCP SERVER为我分配的IP,并请求撤销其他DHCP SERVER为我分配的IP,以供其他新机器使用。
由于DHCP SERVER还没有进行确认所以这个时候新机器依然使用的是0.0.0.0作为源IP。
第四步:DHCP SERVER收到该请求后,会将MAC地址以及分配的IP地址进行缓存。并回应一个网络包:DHCP ACK,表明已
确认客户端的选择。 同时为其他所有机器广播:这个新机器的IP。
DHCP除了可以分配IP外,还有一个作用:安装系统。
操作系统的启动,首先是BIOS。这是一个特别小的系统,主要:读取硬盘的MBR启动扇区,将GRUB启动起来,GRUB加载内核、作为根系统的initramfs文件,然后初始化整个系统。所以我们安装系统必须在BIOS系统后,不然连启动扇区都不存在。这个过程称之为PXE,预启动执行环境。
PXE协议分为启动端和服务端。
由于还没有操作系统,这个时候客户端存在于BIOS系统,当计算机启动的时候,会将客户端加载于内存中。这个时候,客户端要访问服务端,必须要有自己的ip。DHCP会为其分配一个IP地址。那么客户端如何获取服务端的IP地址。这些信息都在DHCP SERVER的配置。主要参数为:next-server的配置,代表可以使用PXE。
首先:客户端发送请求后,除了得到自己的IP地址,还可以得到服务端的IP。
其次:客户端去服务端下载文件,所以服务端还必须有一个下载服务器TFTP。下载的时候使用的是TFTP协议,下载完成后,TFTP会将文件传给客户端。
然后:客户端收到该文件,开始执行该文件。并且这个文件会向TFTP服务器请求计算机的配置信息prelinux.cfg.TFTP服务器会给客户端返回一个配置文件:内核在哪里,initramfs文件在哪里
最后:启动linux的内核。
整个工作流程如下图: