第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后,会去寻找启动扇区,如果没有安装操作系统,就会找不到启动扇区,这个时候就启动不起来。

最新文章

  1. asp.net core 部署 提示DataProtectionServices 错误
  2. 「Ionic」设置开发环境
  3. ActionErrors和ActionError
  4. 关于thenao.scan() fn函数参数的说明
  5. 重构13天 抽取方法对象(Extract Method Object)
  6. [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
  7. java中String的常用方法
  8. unity中的欧拉角
  9. CentOS7下通过rpm方式安装MySQL及插入中文问题解决 [原创]
  10. Oracle 动态视图4 V$SESSION_WAIT & V$SESSION_EVENT
  11. apk反编译(5)用apktool重新生成一个未签名的apk
  12. Android UI——分享一个登录缓冲界面
  13. careercup-树与图 4.6
  14. Delphi 编写的Web Service
  15. Tomcat安装阿里云免费证书
  16. 编hadoop-1.X源代码
  17. Nopcommerce架构浅谈之架构层次
  18. [Q]AdobePDF打印机“仅依靠系统字体”问题
  19. 201521123074 《Java程序设计》第8周学习总结
  20. Maven合并多个war包的工程需要用到的插件

热门文章

  1. shell脚本 3 流程控制
  2. JDBC_12_JDBC事务
  3. Pytorch系列:(一)常用基础操作
  4. 基于MATLAB的手写公式识别(4)
  5. Powershell免杀
  6. 03- Linux目录与文件进阶操作
  7. ESXI的使用
  8. Linux中的DHCP服务
  9. 【译】android的审计和hacking工具
  10. Windows PE导出表编程3(暴力覆盖导出函数)