DHCP之对169.254.0.0/16网段的一点解释

做实验的后突然间忘了DHCP snooping 的相关内容,就翻开笔记看了看,注意到一个以前不曾注意的细节。所以说记笔记和复习是很有必要的。

DHCP的前身是boootp,这个很重要,因为在使用wireshark抓包的时候就需要写bootp。DHCP的服务端的端口号是UDP 67,客户端的端口是UDP68。

当一台没有IP地址的主机接入到了网络中时,如果设置的时DHCP自动获取地址,就会向网络中发送DHCP请求获得IP地址,源IP为0.0.0.0,目的IP为255.255.255.255,源MAC地址正常,目的Mac地址为全F的广播包。

当客户端为 windows主机时,网卡配置为 DHCP获得地址时,就开始向网络中请求地址,先发送一个广播包,等待 1 秒之后,如果没有服务器应答,就发送第二个广播包,如果 9 秒后没有收到应答,则发送第三个广播包,等 13 秒,还没有应答,最后再发送一个包,等待16 秒后,最终在四个广播包没有应答的情况下,默认是放弃请求,为网卡自动配上一个私有 IP 地址,地址段为169.254.0.0/16,网络状态为“受限制或无连接”,169.254.0.0/16这个地址段就是local link address,就是链路本地地址。想要看到这个地址,就需要你的设备支持链路本地地址。

这个地址用于当DHCP服务器故障,或者DHCP超时,不致于设备没有IP而造成连接不上。LLA是本地链路的地址,是在本地网络通讯的,不通过路由器转发,因此网关为0.0.0.0。它的掩码是255.255.0.0。LLA在RFC3927中有详细的描述,它分为三个阶段:

首先:在开始Local link时,需要将自已的IP和掩码网关都设为0,并随机生成一个IP,网段在169.254.1.0到169.254.254.255,RFC3927中建议使用MAC来生成IP地址,这样可以使每个设备生成的IP都不一样,将设备同时探测同一个IP的可能性降到了最低。

其次,发送ARP探测包,选择合适的IP地址:将目的IP地址指向要探测的IP,这里假设该IP为A;如果网络中,IP A被绑定,则占用该IP的主机会回应,设备在收到的ARP回应中,如果发现源IP是A,则表示冲突;当然,还有一种情况,可能有其它的设备也在探测这个IP,那么,在这种情况下,选择放弃该IP,重新开始配置。

最后,探测包发完了,并且在规定的时间内没有收到来自源IP为A的主机回应,则认为该IP没有被占用,于是设置本机IP为A,RFC3927 2.5节中描述,地址冲突的检测并不局限于地址选择阶段,在任何时候,如果设备收到一个ARP,其中源IP地址和本机IP一致,但MAC不一致,都将认为这是一个冲突。

这是一个很简单的实验,就使用cisco packet tracer模拟这个实验。
DHCP之对169.254.0.0/16网段的一点解释_第1张图片
将两台PC的网卡设置成DHCP获取地址,但是不配置DHCP服务器,PC会自动获取一个地址。

PC2的地址是169.254.100.56/16,PC3的地址是169.254.64.101/16。

在PC2上ping PC3,可以通。

DHCP之对169.254.0.0/16网段的一点解释_第2张图片
这个点在我学习DHCP的时候忽略了,现在发现了,写出来复习复习。

你可能感兴趣的:(#,tcp/ip协议分析与应用,dhcp)