服务器 频道

Liunx架站之架设DHCP服务器2:DHCP运作方式

  【IT168 服务器学院】DHCP 的运作方式:

运作模式:

  那么 DHCP 是怎么运作的呢?现在假设我们的机器在同一个网域当中,也就是说, DHCP Server 与他的 Clients 都在同一个网段之内,可以透过软件广播的方式来达到相互沟通的状态。那么 Client 藉由 DHCP Server 得到 IP 的程序为:

1. Client 端计算机在开机的时候,或者是重新激活网络卡的时候,会自动的发出 DHCP Client 的需求给网域内的每部计算机:这个时候,由于发出的讯息希望每部计算机都可以接受,所以该讯息除了网络卡的硬件地址(MAC)无法改变外,需要将该讯息的来源软件地址设定为 0.0.0.0 ,而目的地址则为 255.255.255.255 (这个我们 Linux 会自动帮你设定,无须考虑这个问题!)。这个时候,网域内的其它非 DHCP 计算机,收到这个封包之后,由于该计算机没有提供 DHCP 的服务,所以就会自动的将该封包丢弃而不响应;而如果是 DHCP 主机呢?
 
2. DHCP 主机响应讯息:如果是 DHCP 主机收到这个 Client 的 DHCP 需求时,那么 DHCP 主机首先会针对该次需求的讯息所携带的 MAC 与 DHCP 主机本身的设定值去比对,如果 DHCP 主机的设定有针对该 MAC 做静态 IP (每次都给予一个固定的 IP )的提供时,则提供 Client 端相关的固定 IP 与相关的网络参数;而如果该讯息的 MAC 并不在 DHCP 主机的设定之内时,则 DHCP 主机会选取目前网域内没有使用的 IP (这个 IP 与设定值有关) 来发放给 client 端使用!此外,需要特别留意的是,在 DHCP 主机发放给 Client 端的讯息当中,会附带一个『租约期限』的讯息,以告诉 Client 端,你这个 IP 可以使用的期限有多长!
 
3. Client 端接受来自 DHCP 主机的网络参数,并设定 Client 自己的网络环境:当 Client 端接受响应的讯息之后,首先会以 ARP 封包在网域内发出讯息,以确定来自 DHCP 主机发放的 IP 并没有被占用!如果该 IP 已经被占用了,那么 Client 对于这次的 DHCP 信息将不接受,而将再次向网域内发出 DHCP 的需求广播封包;若该 IP 没有被占用,则 client 可以接受 DHCP 主机所给的网络的参数,那么这些参数将会被使用于 client 端的网络设定当中,同时, Client 端也会对 DHCP 主机发出确认封包,告诉 Server 这次的需求已经确认!而 Server 也会将该信息记录下来;
 
4. Client 端结束该 IP 的使用权:当 Client 开始使用这个 DHCP 发放的 IP 之后,有几个情况下他可能会失去这个 IP 的使用权:

o Client 端离线:不论是关闭网络接口( ifdown )、重新开机 ( reboot )、关机 ( shutdown ) 等行为,皆算是离线状态,这个时候 Server 端就会将该 IP 回收,并放到 Server 自己的备用区中,等待未来的使用;

o Client 端租约到期:前面提到 DHCP server 端发放的 IP 有使用的期限, Client 使用这个 IP 到达期限规定的时间,就需要将 IP 缴回去!这个时候就会造成断线,而 Client 也可以在向 DHCP 主机要求再次分配 IP 啰!

以上就是 DHCP 这个协议在 Server 端与 Client 端的运作状态,由上面这个运作状态来看,我们可以晓得,喝!只要 Server 端设定没有问题,加上 Server 与 Client 在硬件联机上面确定是 OK 的,那么 Client 就可以直接藉由 Server 来取得上网的网络参数,当然啦,只要我们这些管理员能够好好的、正确的管理好我们的 DHCP ,嘿嘿!那么自然上网的设定就变成一件很简单的事情啦!

IP 取得的方法:


  在上面的步骤里面,注意到第二步骤了吗?就是 DHCP 会去比较 MAC 这个硬件地址,并判断该 MAC 是否需要给予一个固定的 IP 呢!呵呵!所以啦,我们由 DHCP 主机取得的 IP 主要有两种方式:
静态 ( Static ) IP :只要那个 client 端计算机的网络卡不换掉,那么 MAC 肯定就不会改变,由于 DHCP 可以根据 MAC 来给予固定的 IP ,所以该计算机每次都能以一个固定的 IP 连上 Internet !呵呵!这种情况比较适合当这部计算机需要用来做为提供区域内的一些网络服务的主机之用。那么如何在 Linux 上面知道你的 MAC 呢?很简单啦!有很多的方式,最简单的方式就是使用 ifconfig 及 arp 来进行:



· 动态 ( dynamic ) IP:Client 端每次连上 DHCP 所取得的 IP 都不是固定的!都直接经由 DHCP 所随机由尚未被使用的 IP 中提供!

  除非你的局域网络内的计算机有可能用来做为主机之用,所以必需要存在成为固定 IP ,否则使用动态 IP 的设定比较简单,而且使用上面具有较佳的弹性。怎么说呢?假如你是一个 ISP 好了,而你只申请到 150 个 IP 来做为你的客户联机之用。那么您是否真的只能邀集到 150 的使用者?呵呵!当然不啰!我可以邀集 200 个使用者以上呢!为什么?这样想好了,我今天开了一家餐馆,里面只有 20 个座位,那么是否我一餐指只能卖给 20 个人呢?当然不是啦!因为客人是人来人往的,有人先吃有人后吃,所以同样是 20 个座位,但是可以有 40 个人来吃我的简餐,因为来的时间不一样嘛!了解了吗?呵呵!对啦!你这个 ISP 虽然只有 150 个 IP 可以发放,但是因为你的使用者并非 24 小时都挂在线上的,所以你可以将这 150 个 IP 做良好的分配,让 200 个人来『轮流使用』这 150 个 IP 哩!

  好了,那么另外一个问题,还是搞不懂,什么是『静态 IP 』与『动态 IP』呢?不都是由 DHCP 发放的吗?让我们再来谈一个小例子好了。目前(2002年末期)上网的主流是 ADSL 拨接制这种方法,其中,由于拨接制所以每次上线的 IP 都不一样!这可以想成是 DHCP 的 动态 IP 分配方式!那么如果你是使用 GIGA 的拨接制给予的固定 IP 呢?呵呵!那个方式其实还是使用拨接之后才能得到联机啦!只不过 ISP 可能经由电话号码的判断,让你每次都可以收到一个固定的 IP 而已!这样可以理解了吗?呵呵!你可以想成,拨接到 ISP 就是类似 client 端发送一个 DHCP 的需求给 DHCP 主机,而将 GIGA 想成我们 DHCP 里面的固定 IP 分配方式,而 Seednet 之类的 ISP 动态给予 IP 的,就是 DHCP 里面使用的 dynamic IP 分配方式啦!

关于租约的行为:

  怪了!如果我们观察上面 DHCP 运作模式的第二个步骤,你会发现最后面还有一个租约期限!干嘛还要这样的一个期限呢?其实设定期限还是有个优点啦!最大的优点就是可以避免该 IP 被某些使用者一直占用着,但该使用者却是 Idle ( 发呆 ) 的状态!举个例子来说,我们刚刚不是说到,我有 150 个 IP ,但是偏偏我有 200 个用户嘛!那么假设刚好例如今年的世界杯足球赛好了,每个使用者都急着上网知道消息,那么将会达到交通尖峰时段!也就是说,这 200 个人同时要来使用这 150 个 IP ,有可能吗?当然不可能!肯定会有 50 个人无法联机,因为『很抱歉!目前系统正在忙线中,请您稍后再拨!』那怎么办?这个时候租约到期的方式就很有用处啦!那几个已经联机进来很久的人,就会因为租约到期而被迫离线,这个时候那个 IP 就会被释放出来,哈哈!大家赶快抢呀!先抢到先赢喔!所以,那 50 个人 ( 包括被迫离线的那个朋友 ) 只好继续的、努力的、加油的来进行 DHCP 的要求啰!

  虽然说是优点,但是其实如果站在使用者的角度来看,还是可能会造成公愤的!凭什么大家一起交钱,我先联机进来就需要先被踢出去?~呵呵!这个在早期 Hinet 就是这点被骂的要死!为什么呢?因为他的 ADSL 拨接制,似乎真的就有这个租约到期的问题,限制的时间似乎是 24 小时的样子!所以,使用 Hinet ADSL 拨接制的朋友,每 24 小时就要忍受一次断线!我没有使用过 Hinet 的 ADSL 拨接制,网络上的朋友确实有响应这样的事情,但是我不确定现在( 2002/11/20 )Hinet 是否还是用这套设定值?这样您可以了解租约到期的行为了吗?! ^_^

0
相关文章