DHCP与PXE:IP是怎么来的,又是怎么没的?

如何配置 IP 地址?
那如何配置呢?如果有相关的知识和积累,你可以用命令行自己配置一个地址。可以使用 ifconfig,也
可以使用 ip addr。设置好了以后,用这两个命令,将网卡 up 一下,就可以开始工作了。
使用 net-tools:
$ sudo ifconfig eth1 10.0.0.1/24
$ sudo ifconfig eth1 up
使用 iproute2:
$ 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,会出现什么现象呢?
不会出现任何现象,就是包发不出去呗。为什么发不出去呢?我来举例说明。
192.168.1.6 就在你这台机器的旁边,甚至是在同一个交换机上,而你把机器的地址设为了
16.158.23.6。在这台机器上,你企图去 ping192.168.1.6,你觉得只要将包发出去,同一个交换机的另
一台机器马上就能收到,对不对?
可是 Linux 系统不是这样的,它没你想得那么智能。你用肉眼看到那台机器就在旁边,它则需要根据自
己的逻辑进行处理。
还记得我们在第二节说过的原则吗?只要是在网络上跑的包,都是完整的,可以有下层没上层,绝对不
可能有上层没下层。
所以,你看着它有自己的源 IP 地址 16.158.23.6,也有目标 IP 地址 192.168.1.6,但是包发不出去,这
是因为 MAC 层还没填。
自己的 MAC 地址自己知道,这个容易。但是目标 MAC 填什么呢?是不是填 192.168.1.6 这台机器的
MAC 地址呢?
当然不是。Linux 首先会判断,要去的这个地址和我是一个网段的吗,或者和我的一个网卡是同一网段
的吗?只有是一个网段的,它才会发送 ARP 请求,获取 MAC 地址。如果发现不是呢?
Linux 默认的逻辑是,如果这是一个跨网段的调用,它便不会直接将包发送到网络上,而是企图将包发
送到网关。
如果你配置了网关的话,Linux 会获取网关的 MAC 地址,然后将包发出去。对于 192.168.1.6 这台机器
来讲,虽然路过它家门的这个包,目标 IP 是它,但是无奈 MAC 地址不是它的,所以它的网卡是不会把
包收进去的。
如果没有配置网关呢?那包压根就发不出去。
如果将网关配置为 192.168.1.6 呢?不可能,Linux 不会让你配置成功的,因为网关要和当前的网络至
少一个网卡是同一个网段的,怎么可能 16.158.23.6 的网关是 192.168.1.6 呢?
所以,当你需要手动配置一台机器的网络 IP 时,一定要好好问问你的网络管理员。如果在机房里面,要
去网络管理员那里申请,让他给你分配一段正确的 IP 地址。当然,真正配置的时候,一定不是直接用命
令配置的,而是放在一个配置文件里面。不同系统的配置文件格式不同,但是无非就是 CIDR、子网掩
码、广播地址和网关地址。
动态主机配置协议(DHCP)
原来配置 IP 有这么多门道儿啊。你可能会问了,配置了 IP 之后一般不能变的,配置一个服务端的机器
还可以,但是如果是客户端的机器呢?我抱着一台笔记本电脑在公司里走来走去,或者白天来晚上走,
每次使用都要配置 IP 地址,那可怎么办?还有人事、行政等非技术人员,如果公司所有的电脑都需要 IT
人员配置,肯定忙不过来啊。
因此,我们需要有一个自动配置的协议,也就是称动态主机配置协议(Dynamic Host Configuration
Protocol),简称DHCP。
有了这个协议,网络管理员就轻松多了。他只需要配置一段共享的 IP 地址。每一台新接入的机器都通过
DHCP 协议,来这个共享的 IP 地址里申请,然后自动配置好就可以了。等人走了,或者用完了,还回
去,这样其他的机器也能用。
所以说,如果是数据中心里面的服务器,IP 一旦配置好,基本不会变,这就相当于买房自己装修。
DHCP 的方式就相当于租房。你不用装修,都是帮你配置好的。你暂时用一下,用完退租就可以了。
解析 DHCP 的工作方式
当一台机器新加入一个网络的时候,肯定一脸懵,啥情况都不知道,只知道自己的 MAC 地址。怎么
办?先吼一句,我来啦,有人吗?这时候的沟通基本靠“吼”。这一步,我们称为DHCP Discover。
新来的机器使用 IP 地址 0.0.0.0 发送了一个广播包,目的 IP 地址为 255.255.255.255。广播包封装在
UDP 里面,UDP 封装在 BOOTP 里面。其实 DHCP 是 BOOTP 的增强版,但是如果你去抓包的话,很
可能看到的名称还是 BOOTP 协议。
在这个广播包里面,新人大声喊:我是新来的(Boot request),我的 MAC 地址是这个,我还没有
IP,谁能给租给我个 IP 地址!
**DHCP 协议主要是用来给客户租用 IP 地址,和房产中介很像,要商谈、签约、续租,广播还不
能“抢单”;
DHCP 协议能给客户推荐“装修队”PXE,能够安装操作系统,这个在云计算领域大有用处**

你可能感兴趣的:(网络传输协议)