我们大家都知道,设备要上网,必须有IP,那么你们知道IP是怎么分配到设备的吗?
我们常见的IP分配方式是PPPoE、静态IP、DHCP,那么他们又有什么样的区别呢?
PPPoE是指我们常见的拨号上网,一般是由运营商给我们提供一个账号密码,然后进行ppp身份验证通过后服务器会给设备分配一个IP。
静态IP是指设备主动向服务器报备一个IP,但是不同用户可能设置相同的IP造成冲突,所以一般IP是由专门的网络管理人员给用户指定的。
DHCP,是指动态主机设置协议,也是我们今天的主角。IP是由DHCP服务器分配给设备的,由于DHCP管理有IP池,因此不会造成IP的冲突和浪费,那我们来看看DHCP的交互过程吧,我们直接先看一个我刚刚抓到的DHCP交互报文吧。
![f206aacddf2dd8f325017722daa94410.png](https://img-blog.csdnimg.cn/img_convert/f206aacddf2dd8f325017722daa94410.png)
可以看到,DHCP分为4个阶段,DHCP Discover, DHCP Offer, DHCP Request,DHCP Ack。
C->All:DHCP Discover ,这个阶段设备向当前网段广播一个Discover的消息,代表设备需要有DHCP服务器给他分配IP。
S->C:DHCP Offer,网段中有DHCP服务器愿意给设备分配一个IP,Offer报文中带有具体的IP地址,这里是192.168.123.211。
C->All:DHCP Request,这个阶段设备向当前网段广播一个Request消息,代表设备需要用这个IP,这里使用广播是因为可能在这个网段里面存在有多个DHCP服务器,让所有的服务器都知道他已经预定了一个IP了。
S->C:DHCP ACK,服务器发送一个确认消息给设备,此时设备已经可以使用该IP了。
DHCP交互过程已经讲完了,顺带说一句,上面的是标准的DHCP协议,不过有些厂家在做DHCP客户端的时候,为了提高DHCP速度,会修改标准流程,首先发送DHCP Request,这里带的IP是上一次设备关机前存有的IP,如果有服务器给他提供IP且发送Ack,那么他就可以上网了。假如没有获取到IP,那么它才会重新走标准的DHCP流程。这里能这样做是因为只要设备没有换网的情况下DHCP服务器一般都不会变,并且大部分DHCP服务器是记录了设备的Mac地址的,分配的时候同一个Mac地址一般相同。以上的优化在绝大多数情况下会提升设备获取IP的速度,但是假如换网络了,那么速度反而会降低了,这种带有期望的思想在编程中很常见。
好了,今天的极简DHCP到这里为止了,我们下回再见!