DHCP 运作的原理

1.DHCP 服务器的用途

要设定好一个网络的环境,使计算机可以顺利的连上 Internet ,那么你的计算机里面一定要有底下几个网络的参数才行,分别是:

IP, netmask, network, broadcast, gateway, DNS IP

其中,那个 IP, netmask, network, broadcast 与 gateway 都可以在 /etc/sysconfig/network-scripts/ifcfg-eth[0-n] 这档案里面设定,DNS 服务器的地址则是在 /etc/resolv.conf 里头设定。只要这几个项目设定正确,那么计算机应该就没问题的可以上网了!

DHCP (Dynamic Host Configuration Protocol) 服务器最主要的工作,就是在进行上面的第三个方案,也就是自动的将网络参数正确的分配给网域中的每部计算机, 让客户端的计算机可以在开机的时候就立即自动的设定好网络的参数值,这些参数值可以包括了 IP、netmask、network、gateway 与 DNS 的地址等等。

2.DHCP 协议的运作方式

你必需要知道的是,DHCP 通常是用于局域网络内的一个通讯协议,他主要藉由客户端传送广播封包给整个物理网段内的所有主机, 若局域网络内有 DHCP 服务器时,才会响应客户端的 IP 参数要求。所以DHCP 服务器与客户端是应该要在同一个物理网段内的。 至于整个 DHCP 封包在服务器与客户端的来来回回情况有点像底下这样:

DHCP 封包在服务器与客户端的传递情况

户端取得 IP 参数的程序可以简化如下:

  1. 客户端:利用广播封包发送搜索 DHCP 服务器的封包:

    若客户端网络设定使用 DHCP 协议取得 IP (在 Windows 内为『自动取得 IP』),则当客户端开机或者是重新启动网络卡时, 客户端主机会发送出搜寻 DHCP 服务器的 UDP 封包给所有物理网段内的计算机。此封包的目标 IP 会是 255.255.255.255, 所以一般主机接收到这个封包后会直接予以丢弃,但若局域网络内有 DHCP 服务器时,则会开始进行后续行为。
     
  2. 服务器端:提供客户端网络相关的租约以供选择:

    DHCP 服务器在接收到这个客户端的要求后,会针对这个客户端的硬件地址 (MAC) 与本身的设定数据来进行下列工作:
     
    • 到服务器的登录文件中寻找该用户之前是否曾经用过某个 IP ,若有且该 IP 目前无人使用,则提供此 IP 给客户端;
    • 若配置文件针对该 MAC 提供额外的固定 IP (static IP) 时,则提供该固定 IP 给客户端;
    • 若不符合上述两个条件,则随机取用目前没有被使用的 IP 参数给客户端,并记录下来。

    总之,服务器端会针对客户端的要求提供一组网络参数租约给客户端选择,由于此时客户端尚未有 IP ,因此服务器端响应的封包信息中, 主要是针对客户端的 MAC 来给予回应。此时服务器端会保留这个租约然后开始等待客户端的回应。
     
  3. 客户端:决定选择的 DHCP 服务器提供的网络参数租约并回报服务器:

    由于局域网络内可能并非仅有一部 DHCP 服务器,但客户端仅能接受一组网络参数的租约。 因此客户端必需要选择是否要认可该服务器提供的相关网络参数的租约。当决定好使用此服务器的网络参数租约后, 客户端便开始使用这组网络参数来设定自己的网络环境。此外,客户端也会发送一个广播封包给所有物理网段内的主机, 告知已经接受该服务器的租约。此时若有第二台以上的 DHCP 服务器,则这些没有被接受的服务器会收回该 IP 租约。至于被接受的 DHCP 服务器会继续进行底下的动作。
     
  4. 服务器端:记录该次租约行为并回报客户端已确认的响应封包信息:

    当服务器端收到客户端的确认选择后,服务器会回传确认的响应封包,并且告知客户端这个网络参数租约的期限, 并且开始租约计时喔!那么该次租约何时会到期而被解约 :
     
    • 客户端脱机:不论是关闭网络接口 (ifdown)、重新启动 (reboot)、关机 (shutdown) 等行为,皆算是脱机状态,这个时候 Server 端就会将该 IP 回收,并放到 Server 自己的备用区中,等待未来的使用;
       
    • 客户端租约到期:前面提到 DHCP server 端发放的 IP 有使用的期限,客户端使用这个 IP 到达期限规定的时间,而且没有重新提出 DHCP 的申请时,就需要将 IP 缴回去!这个时候就会造成断线。但用户也可以再向 DHCP 服务器要求再次分配 IP 啰。

以上就是 DHCP 这个协议在 Server 端与 Client 端的运作状态,由上面这个运作状态来看,我们可以晓得,只要 Server 端设定没有问题,加上 Server 与 Client 在硬件联机上面确定是 OK 的,那么 Client 就可以直接藉由 Server 来取得上网的网络参数。关于上述的流程还是有一些需要额外说明的啦:

(1)DHCP 服务器给予客户端的 IP 参数为固定或动态:

在上面的步骤里面,注意到第二步骤了吗?就是服务器会去比较客户端的 MAC 硬件地址,并判断该 MAC 是否需要给予一个固定的 IP 呢!所以啦,我们可以设定 DHCP 服务器给予客户端的 IP 参数主要有两种:

  • 固定 (Static) IP:

    只要那个客户端计算机的网络卡不换掉,那么 MAC 肯定就不会改变,由于 DHCP 可以根据 MAC 来给予固定的 IP 参数租约,所以该计算机每次都能以一个固定的 IP 连上 Internet !这种情况比较适合当这部客户端计算机需要用来做为提供区域内的一些网络服务的主机之用 (所以 IP 要固定)。那么如何在 Linux 上面知道网络卡的 MAC 呢?有很多的方式,最简单的方式就是使用 ifconfig 及 arp 来进行:
    # 1. 观察自己的 MAC 可用 ifconfig:
    [root@www ~]# ifconfig | grep HW
    eth0      Link encap:Ethernet  HWaddr 08:00:27:71:85:BD
    eth1      Link encap:Ethernet  HWaddr 08:00:27:2A:30:14
    # 因为鸟哥有两张网卡,所以有两个硬件地址喔!
    
    # 2. 观察别人的 MAC 可用 ping 配合 arp
    [root@www ~]# ping -c 3 192.168.1.254
    [root@www ~]# arp -n
    Address        HWtype  HWaddress           Flags Mask   Iface
    192.168.1.254  ether   00:0c:6e:85:d5:69   C            eth0
    
  • 动态 (dynamic) IP:

    Client 端每次连上 DHCP 服务器所取得的 IP 都不是固定的!都直接经由 DHCP 所随机由尚未被使用的 IP 中提供!

除非你的局域网络内的计算机有可能用来做为主机之用,所以必需要设定成为固定 IP ,否则使用动态 IP 的设定比较简单,而且使用上面具有较佳的弹性。

(2)关于租约所造成的问题与租约期限:

如果我们观察上面 DHCP 运作模式的第四个步骤,你会发现最后 DHCP 服务器还会给予一个租约期限! 干嘛还要这样的一个期限呢?其实设定期限还是有个优点啦!最大的优点就是可以避免 IP 被某些使用者一直占用着,但该使用者却是 Idle (发呆) 的状态!

既然有租约时间,那么是否代表我用 DHCP 取得的 IP 就得要『手动』的在某个时间点去重新取得新的 IP 呢?不需要的啦!因为目前的 DHCP 客户端程序大多会主动的依据租约时间去重新申请 IP (renew) 的!也就是说在租约到期前你的 DHCP 客户端程序就已经又重新申请更新租约时间了。所以除非 DHCP 主机挂点, 否则你所取得的 IP 应该是可以一直使用下去的!

(3)多部 DHCP 服务器在同一物理网段的情况

或许你曾经发现过一件事情,那就是当我的网域里面有两部以上的 DHCP 服务器时, 到底哪一部服务器会提供我的这部客户端计算机所发出的 DHCP 要求? 因为在网络上面,很多时候都是『先抢先赢』的, DHCP 的回应也是如此!当 Server1 先响应时,你使用的就是 Server1 所提供的网络参数内容,如果是 Server2 先响应,你就是使用 Server2 的参数来设定你的客户端 PC !不过,前提之下当然是这些计算机的『物理联机』都是在一起的。

3.何时需要架设 DHCP 服务器

(1)使用 DHCP 的几个时机

在某些情况之下,倒是强烈的建议架设 DHCP 主机的!例如:

  • 具有相当多行动装置的场合:
    例如你的公司内部很多笔记本电脑使用的场合!因为这种笔电本身就是移动性的装置, 如果每到一个地方都要去问人家『喂!你这边的网络参数是什么?』还得要担心是否会跟人家的 IP 相冲突等等的问题!这个时候,DHCP 可就是你的救星啰!
     
  • 区域内计算机数量相当的多时:
    另外一个情况就是你所负责的网域内计算机数量相当庞大时, 大到你没有办法一个一个的进行说明来设定他们自己的网络参数,这个时候为了省麻烦,还是架设 DHCP 来的方便吶!况且,维护一部你熟悉的 DHCP 主机,要比造访几十个不懂计算机的人要简单的多哩!

(2)不建议使用 DHCP 主机的时机

虽然 DHCP 有很多好处,但是你有没有发现一个步骤怪怪的呀!回头看一下那个步骤一, 客户端在开机的时候会主动的发送讯息给网域上的所有机器,这个时候,如果网域上就是没有 DHCP 主机呢?很抱歉,那么你的这部客户端计算机,『仍然会持续的发送讯息!』 真正的时间与次数不晓得会有多久,不过,肯定会超过 30 秒以上, 甚至可以达到一分钟以上!哇!那么这段时间你能干嘛?呵呵!除了等、还是等! 所以啰,如果计算机数不多,还是使用手动的方式来设定一下就好了!方便嘛!

  • 在你网域内的计算机,有很多机器其实是做为主机的用途,很少用户需求,那么似乎就没有必要架设 DHCP ;
  • 更极端的情况是,像一般家里,只有 3 ~ 4 部计算机,这个时候,架设 DHCP 只能拿来练练功力,事实上,并没有多大的效益;
  • 当你管理的网域当中,大多网络卡都属于老旧的型号,并不支持 DHCP 的协议时;
  • 很多用户的信息知识都很高,那么也没有需要架设 DHCP 啦。

4.dhcp的GNS3实验

server的配置

R1#conf t

R1(config)#interface fastEthernet 0/0

R1(config-if)#ip address 192.168.1.1 255.255.255.0

R1(config-if)#no shut

R1(config-if)#exit

R1(config)#ip dhcp pool net1

R1(dhcp-config)#network 192.168.1.0

R1(dhcp-config)#dns-server 8.8.8.8

R1(dhcp-config)#default-router 192.168.1.1

R1(dhcp-config)#exit

PC

PC-1> dhcp ?

ip dhcp [OPTION]
  Attempt to obtain IPv4 address, mask, gateway and DNS via DHCP
  OPTION:
    -d         Show DHCP packet decode
    -r         Renew DHCP lease
    -x         Release DHCP lease

PC-1> ip dhcp
DDORA IP 192.168.1.2/24 GW 192.168.1.1

PC-1> show

NAME   IP/MASK              GATEWAY           MAC                LPORT  RHOST:PORT
PC-1   192.168.1.2/24       192.168.1.1       00:50:79:66:68:00  10000  127.0.0.1:10001
       fe80::250:79ff:fe66:6800/64

PC-1> ip dhcp -r
DORA IP 192.168.1.2/24 GW 192.168.1.1

PC-1> ip dhcp -x

4-8抓包是获取动态ip地址

14-17是更新ip地址

25是释放ip地址

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值