第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
linux 配置网络IP地址:
使用 net-tools:
sudo ifconfig eth1 10.0.0.1/24
sudo ifconfig eth1 up
使用iprouter2:
sudo ip addr add 10.0.0.1/24 dev eth1
sudo ip link set up eth1
例如,旁边的机器都是 192.168.1.x,我非得配置一个 16.158.23.6,会出现什么现象呢?
源ip是16.158.23.6,目的ip是192.168.1.6,网关ip是和192.168.1.6同组的ip,假设是192.168.1.17。那么数据包发出的时候,操作系统会检查发现源ip和目标ip不是一组的,所以不用ARP喊人,因为操作系统觉得现在喊了肯定也不知道目的ip的mac地址是多少(实际上当场喊还真可以知道目的mac,因为真在旁边)。操作系统以为要出城了,就想把包发给网关。然而!网关地址和源ip也不在一个局域网里,那就开始套娃了:我想出城,就要先去找网关,我想找网关,网关和我不在一个地方,我就要先出城…… 而如果我把电脑的网关也改成16.158.23.54之类的,那操作系统就会用ARP喊人了,喊半天并没有人理会,因为附近没有ip是16.158.23.54的网关,自然没人会回复你它的mac地址,你也没法找到这个假想的网关.
Linux 默认的逻辑是,如果这是一个跨网段的调用,它便不会直接将包发送到网络上,而是企图将包发送到网关。
不同系统的配置文件格式不同,但是无非就是 CIDR、子网掩码、广播地址和网关地址。
动态主机配置协议(Dynamic Host Configuration Protocol),简称 DHCP。
解析 DHCP 的工作方式:
当一台机器新加入一个网络的时候,肯定一脸懵,啥情况都不知道,只知道自己的 MAC 地址。怎么办?先吼一句,我来啦,有人吗?这时候的沟通基本靠“吼”。这一步,我们称为 DHCP Discover。新来的机器使用 IP 地址 0.0.0.0 发送了一个广播包,目的 IP 地址为 255.255.255.255。广播包封装了 UDP,UDP 封装了 BOOTP。其实 DHCP 是 BOOTP 的增强版,但是如果你去抓包的话,很可能看到的名称还是 BOOTP 协议。
UDP 通过组播的方式来进行局域网内通读将本机信息发送出去,
1、广播地址:一种是直接广播地址,一种是受限广播地址
2、受限广播地址是32位全1的IP地址(255.255.255.255)
3、直接广播地址是网络号+全1主机号
4、在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中
DHCP Discover
DHCP Offer 的格式
DHCP Server
DHCP Offer 的格式
IP 地址的收回和续租
客户机会在租期过去 50% 的时候,直接向为其提供 IP 地址的 DHCP Server 发送 DHCP request 消息包。客户机接收到该服务器回应的 DHCP ACK 消息包,会根据包中所提供的新的租期以及其他已经更新的 TCP/IP 参数,更新自己的配置。
DHCP协议是来给客户机租用IP地址的,DHCP协议中包含 dhcp discover、dhcp offer、dhcp server 、dhcp ack 续租、回收 在4个阶段都是通过限制性广播地址进行通信
预启动执行环境(PXE)
启动 BIOS。这是一个特别小的小系统,只能干特别小的一件事情。其实就是读取硬盘的 MBR 启动扇区,将 GRUB 启动起来;然后将权力交给 GRUB,GRUB 加载内核、加载作为根文件系统的 initramfs 文件;然后将权力交给内核;最后内核启动,初始化整个操作系统。那我们安装操作系统的过程,只能插在 BIOS 启动之后了。因为没安装系统之前,连启动扇区都没有。因而这个过程叫做预启动执行环境(Pre-boot Execution Environment),简称 PXE。
PXE能用的关键,就是DHCP 不仅能提供IP,还可以提供一些初始化最初的一些文件,方便这个新机器做一些事情,比如安装系统。 过程中还需要有一个支持新机器需下载的地方,就是TFTP服务器,去下载linux相关信息等。
现在一般电脑的网卡几乎都支持PXE启动, PXE client 就在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行。 安装完成后,将提示重新引导计算机。这个时候,在重新引导的过程中将BIOS修改回从硬盘启动就可以了。 2,进入BIOS设置页面,有一项PXE Boot to LAN,若设置为Enabled则表示计算机从网络启动,从PXE服务端下载配置文件和操作系统内核进行启动;若设置为Disabled则表示从本地启动,启动动BIOS后,会去寻找启动扇区,如果没有安装操作系统,就会找不到启动扇区,这个时候就启动不起来。
最新文章
- asp.net core 部署 提示DataProtectionServices 错误
- 「Ionic」设置开发环境
- ActionErrors和ActionError
- 关于thenao.scan() fn函数参数的说明
- 重构13天 抽取方法对象(Extract Method Object)
- [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
- java中String的常用方法
- unity中的欧拉角
- CentOS7下通过rpm方式安装MySQL及插入中文问题解决 [原创]
- Oracle 动态视图4 V$SESSION_WAIT &; V$SESSION_EVENT
- apk反编译(5)用apktool重新生成一个未签名的apk
- Android UI——分享一个登录缓冲界面
- careercup-树与图 4.6
- Delphi 编写的Web Service
- Tomcat安装阿里云免费证书
- 编hadoop-1.X源代码
- Nopcommerce架构浅谈之架构层次
- [Q]AdobePDF打印机“仅依靠系统字体”问题
- 201521123074 《Java程序设计》第8周学习总结
- Maven合并多个war包的工程需要用到的插件