您的位置:首页 > 理论基础 > 计算机网络

DHCP2:为什么叫做动态主机配置,而不是动态网络配置

2016-02-25 14:10 651 查看
最近在回答知乎一个问题的时候,想了下标题所述的问题。即DHCP协议实际上是配置了一些网络的参数,比如IP地址,网关地址,域名,DNS服务器这些,都是与网络有关的,所以命名的时候直接叫做动态网络配置协议不是更好吗,为什么要叫做动态主机配置文件呢?

在知乎上原问题为“为什么 DHCP 不基于 RARP 协议,而要基于 UDP 协议?”,这个问题的前半个问题倒是能够引发一些思考,即DHCP为什么不是基于RARP协议的,因为从功能设计上而言,DHCP和RARP的确有很多相似的地方,最简单我们可以认为,都是用来进行IP地址和MAC地址的交互的协议,而且从目的上,都可以称之为获取IP地址。这个问题个人认为,实际上应该是由于DHCP基于BOOTP,而BOOTP是在RARP的思路或者基础上扩展很多的一个协议,只不过到当下,很多扩展都是用处不大的,仅仅回归到一些有关网络配置的部分,还是主要有价值的。

原回答如下,最近比较忙,所以先贴下,之后整理

“其实这个问题我更觉得是因为DHCP是基于BOOTP的,而且不止是思想,而是整个数据包格式就是基于BOOTP的,同时BOOTP是基于UDP的。若BOOTP是参考RARP的话(注:BOOTP的RFC951是晚于RARP的RFC903一年的,所以有可能是参考或者基于的关系,但是没有考证过),那么BOOTP不仅仅是简单扩展IP分配这个功能,相比DHCP,BOOTP能够完成的功能更多(不过也有缺陷),不过到后期,很多功能发现都是没有太大用处所以都删除了,简化了一些并且优化了一些就称为了DHCP协议。有关BOOTP的功能,貌似在《深入理解计算机网络》里面写的还算不错,在599页,其中叙述到“服务器反馈给客户端的found帧中包含的主要信息有客户端的IP地址,服务器的IP地址,硬件类型,网关IP地址,站点MAC地址和启动映像名。站点根据Found帧中的信息获得分配的IP地址信息,然后通过TFTP服务器下载启动映像文件,并将此文件在站点内存模拟成磁盘,从这个模拟磁盘启动”,实际上除了这个,在found帧中,应该还可以附加启动配置文件,实际上打开一个DHCP的帧,可以发现这个帧还是满长的,比如一个DHCP
discover帧有622字节(二层帧),其实里面很多东西在当下看来都没什么用处(即与分配IP地址无关),比如最后的一段Padding部分(若用wireshark查看就是padding,若用omnipeek查看则是data部分),这一块就是配置启动文件的,而现在看来貌似没感觉到用处。所以BOOTP若认为是RARP的扩展,那么也是扩展很多内容了,即分配IP仅仅是部分的内容,不过BOOTP也有一个很大的缺点就在于,其是需要人工先在BOOTP中设置对应客户端的MAC地址的,然后客户端的请求才会被服务器所处理(即没有实现匹配的结果,则不处理),之后在DHCP中则是相应引入了租约时间这个概念,从而不用手动输入。所以以上所述,主要是由于BOOTP是基于UDP协议的,其功能不仅仅是IP地址分配,故又因为DHCP是基于BOOTP进行设计的,所以DHCP也直接基于UDP协议了,只是为什么DHCP不考虑直接基于RARP,而是基于BOOTP可能是由于历史原因造成,因为从DHCP中其数据包格式都是基本和BOOTP差不多,从而初始设计也应该是基于BOOTP的应用场景的,所以DHCP才叫做动态主机配置,而不是IP配置或者网络配置,故DHCP初始包含的功能也和BOOTP一样,只不过到了现在而言,这些功能都是累赘了。”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: