Introduction to Computer Networking学习笔记(二十九):DHCP

原贴地址:https://blog.csdn.net/djl806943371/article/details/89981808

这一节主要讲Dynamic Host Configuration Protocol (DHCP)动态主机配置协议。说实话看这节课,感受到了嘲讽...Philips说他95年上大学的时候在用固定IP、子网掩码、网关、DNS,然而交大现在还是这样啊哈哈哈。

言归正传,固定的IP、子网掩码、网关、DNS有很大缺点。比如换到其他网络就没用了,并且权限是有期限的通常是以年为单位,这意味着到期jiu一个访客也需要分配一个一年期的配置之后进行回收。所以现代已经很少使用了,改而采用DHCP。从宏观上看,DHCP是如何实现的呢?当一台机器加入一个新的网络时,会有四次信息交换,最后还会有一个释放操作。具体来说,首先加入新网络的机器广播发送一条消息,discover(寻找)DHCP server并索要配置信息;网络中的DHCP server(可能不止一台)收到消息后会分配一个配置并offer(提供)client;client可能收到了好几个offer,从中选择一个,并对发送这个offer的DHCP server发送一个request(正式请求);DHCP server收到之后发送一个ack(最终确认并生效);这个配置租约快要到期时client会re-request,通常情况下会继续分配给你;如果机器要提前终止使用了,则release掉。如下图:

Introduction to Computer Networking学习笔记(二十九):DHCP

如上图可以看到存在一个问题,就是获取到配置之前,client并没有自己的IP地址,那么它如何与其它host通信呢?这是靠UDP协议实现的,源端口号设置为68,目的端口号设置为67,表示这是一条DHCP请求,目的IP填写为255.255.255.255表示广播。DHCP server收到请求后回复。又因为DHCP server与client并不一定在一条link的两端,为了避免这种情况不能直接收到回复,收到DHCP请求的路由或host会继续将信息广播到所有链路,这样最终DHCP server将收到请求。一旦client收到了自己的配置信息,则拥有并初始化自己的IP地址。

利用wireshark查看整个过程:第一个discover,可以看到,链路层目的地址为ff:ff:ff:ff:ff:ff,源地址为自身MAC,网络层目的地址为255.255.255.255,源地址为0.0.0.0,传输层协议类型为UDP,源端口号68,目的端口号67,应用层为Bootstrap Protocol;

Introduction to Computer Networking学习笔记(二十九):DHCP

接下来是offer,可以看到,offer的链路层目的地址已经是我的计算机的MAC,网络层目的IP已经是分配的IP,传输层依然为UDP,应用层为Bootstrap,点开详细内容可以看到提供的IP(与目的IP一致)、子网掩码、网关、DNS地址;

Introduction to Computer Networking学习笔记(二十九):DHCP

接下来是request,可以看到依然是一条广播,但是在应用层可以找到请求的配置,即它选择的配置;

Introduction to Computer Networking学习笔记(二十九):DHCP