DHCP动态分配过程中的一个小问题
本帖最后由 magic_os 于 2011-3-18 16:31 编辑--各路看官大家好~又到了路见不平拔刀相助的环节了~!! 咳~那个..俺废话就不多说了~介于以前有朋友说这样的问题很矫情..俺予以肯定..但是问题还是要问的..--欢迎大家说俺问题很矫情...好了 问题是这样的..
-------------------------------------------------------------------------------------------------
先放上TOPO
这个TOPO中R3为DHCP服务器动态给C1(桥接到某台虚拟机的网卡上了)、R2分配IP
配置地方我就不说了..问题不在这里..问题是我在C1到R1和R1到R2这两条线路上分别抓DHCP包发现
C1到R1如下:
R1到R2如下:
我的问题是~在DHCP Discover后~
为什么R3给PC分配IP的时候 是先PING了一下那个预分配的IP(而不是用ARP去广播查看这个预分配的IP是否被占用)
而给R2分配IP的时候是用ARP去广播看这个预分配的IP是否被占用
为什么会有这个区别?
这个地方我要补充一下...我发现在C1(windows系统)上刚启动自动获取IP的时候是和R1到R2捕获的第二部一样的(发送了ARP广播)
我想再测试一下 所以就在C1上使用ipconfig /release 释放了第一次获取的那个IP,并且再使用ipconfig /renew重新来获取~
第二次获取时 就出现了DHCP直接ICMP报文那个预分配IP地址的情况了~
为什么重新获取的时候会这样?
还希望知道的老师们朋友们不吝赐教...!非常感谢~!-82-
--我打算去好好研究研究那个TCPIP卷一..我发现第二次PC发起DHCP请求的时候 DHCP Discover 的那个包包里面既然是携带了上次租约过的地址的..应该和这个有关系~
所以DHCP服务器直接ping了两一下这个IP...555这中间绝对有一个知识点我没有接上... DHCP在给PC第一次分配和第二次分配ip时不是都是DHCP先ping那个预分配地址吗?
感觉这个问题有点深度,期待老师来解答 本帖最后由 magic_os 于 2011-3-18 18:30 编辑
经过我两个多小时的慢慢研究--我终于发现..原来我将DHCP的某一部分理解的不透彻
其实通过几次抓包试验后发现
其实 这个PING包 是在 DHCP上面有对应的ARP记录的时候 才会出现的
也就是说..PC的那个缓存机制 让那个DHCP Discover包携带了上一次租约过的一个IP 再次请求DHCP服务器重新租给它 .. 结果 如果DHCP 服务器R3上面存在PC MAC的ARP缓存..就直接用PC的MAC地址封装+上这个IP ping一下 看看主机PC是不是存活的(这个是不是这样理解?)然后就直接提供PC请求的那个IP了~
换句话说如果此时R3上没有PC MAC缓存那么 就会在接到 DHCP discover之后 发起一个ARP 请求PC发过来的DHCP discover包中对应的IP地址(也就是PC)的MAC
其实最后确认租约IP是否在网络上使用是Client端来操作的 Client端会发起一个ARP看看是否有回应来决定是否使用这个IP 我一直理解为DHCP服务器端刚开始就发了ARP来确定是否提供那个IP..
不知道这个理解对不对--我自己也晕了 说不定今天睡一觉 明天就通了... 回复 3 # JasonWhite 的帖子
不是哦~ 大致我算是看出来了..只是理论还没有跟上试验..我自己也解释不清楚 楼主太厉害了!楼主,I*老*虎*U!
我是不是太肉麻了!雏鹰部落我来了!
感情lz这是提问提着,提着问题自己解决了!
学技术需要这种钻研和实践的精神(这就是传说中的BOOTCAMP精神!) LZ现在这个问题是解决了? -woniu2--woniu2- 回复 8 # 明天¤晴天℃ 的帖子
确实是自己解决了 ~ 试验中发现了三种可能~
应该说那个回应ping包的属于第二种~就是在知道对方MAC地址以及对方发送的DHCP discover包包里面有携带上次的租约信息并且请求再租约的时候 就会这样了.
........这个是我的毛病 我老喜欢遇到问题就先帖出来..然后同时我自己也在做这个试验..其实我是想和大家一起探讨这个问题~
这样对解决问题的进度很有帮助~ 后来做着做着就发现这个是在可以控制的范围了~~就这样了 ~呵呵
谢谢上面几位朋友的关注~!
回复 7 # 雪候鸟 的帖子
--恩恩~!这是一种精神~
页:
[1]
2