一、DHCP的作用

  我们先来看一下什么是DHCP,DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数,简单来说,就是在DHCP服务器上有一个数据库,存放着IP地址、网关、DNS等参数。当客户端请求使用时,服务器则负责将相应的参数分配给客户端。以避免客户端手动指定IP地址等。。特别是在一些大规模的网络中。客户端数目较多,使用DHCP可以方便对这些机器进行管理,为客户机提供TCP/IP参数配置,如IP地址、网关地址和DNS服务器等,不仅效率高,而且不存在IP地址冲突的情况。现在的无线路由器默认都带有DHCP功能,也就是说一个无线路由器同时也是一个DHCP服务器。

二、DHCP的工作过程:

  那么客户端是怎么从DHCP服务器(也就是我们的无线路由器或无线AP)上获得地址的呢?

▲DHCP工作过程

  1.DHCP DISCOVER: 寻找服务器

  当DHCP客户端第一次登录网络的时候或者是开机时,此计算机发现本机上没有任何IP地址设定,就会向网络广播去寻找DHCP服务器。该数据包的来源地址会为0.0.0.0,而目的地址则为255.255.255.255。

  2. DHCP OFFER分配IP地址

  当无线设备监听到客户端发出的寻找服务器的数据包后,它会从那些还没有分配出的IP地址里,选择最前面的的空闲IP,给客户端一个分配IP地址,但这里仅仅是分配,客户端还没有真正应用上。

  3. DHCP REQUEST 请求使用

  客户端收到无线设备发送回来的分配IP地址数据包,客户端会向网络发送一个ARP数据包,确认网络中没有其他机器使用该IP地址,如果已经有,则重复发送步骤1中的动作;如果没有,则接受该IP地址,并发送一个Dhcprequest数据包给无线路由器,也就是DHCP服务器,请求使用此地址。

  4. DHCP ACK IP地址分配确认

  当无线设备接收到客户端的Dhcprequest数据包之后,会向客户端发出一个DHCPACK回应,以确认IP地址的正式生效,也就结束了一个完整的DHCP工作过程。

  当此过程完成之后,DHCP客户端再重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCPdiscover发现信息来请求新的IP地址。

  但DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

-------------------------------------------------------------------------------------------------------------------------------------------------------

一、功能描述
    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址,Gateway地址,DNS服务器地址等信息,并能够提升地址的使用率。DHCP协议使用UDP协议工作,采用C/S模型,主机地址的动态分配任务由网络主机驱动。
 
二、申请IP工作过程
    1.DHCP客户机初始化TCP/IP,通过 UDP端口67 向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。该广播包中的源IP地址为0.0.0.0, 目标IP地址为255.255.255.255,包中还包含客户机的MAC地址和计算机名。
    2.DHCP服务器都会通过UDP端口68给客户机 回应一个DHCPOFFER广播包,提供一个IP地址,该广播包的源IP地址为DHCP服务器IP,目标IP地址为255.255.255.255,包中还包含提供的IP地址,子网掩码及租期等信息。
    3.客户选择IP租用报文,客户机从不止一台DHCP服务器接收到提供之后,会选择第一个收到的DHCPOFFER包,并向网络中广播一个 DHCPREQUEST消息包,表明自己已经接受了一个DHCP服务器提供的IP地址。该广播包中包含所接受的IP地址和服务器的IP地址,所有其他的DHCP服务器撤消它们的提供以便将IP地址提供给下一次IP租用请求。
    4.DHCP服务器发出IP租用确认报文,被客户机选择的DHCP服务器在收到DHCPREQUEST广播后,会广播返回给客户机一个DHCPACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。客户配置成功后发出的公告报文,客户机在收到DHCPACK包,会使用该广播包中的信息来配置自己的TCP/IP,则租用过程完成,客户机可以在网络中通信。

DHCP(动态主机配置协议)工作流程的更多相关文章

  1. 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识

    第25章      DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...

  2. <TCP/IP>DHCP动态主机配置协议

    坚持是一种好习惯 大家都知道,为了上网我们是需要提交一些配置信息的,如IP地址,子网掩码,DNS服务器等,这些是一个主机能够在Internet上运行并给用户提供常用服务(比如web和Email)的基本 ...

  3. DHCP动态主机配置协议

    1.DHCP简述 某组织一旦获得了一个地址,它就可以为本组织内的主机与路由器接口逐个分配IP地址.系统管理通常可以手工配置路由器中的IP地址(静态分配).但这项任务目前通常更多是使用动态主机配置协议( ...

  4. 动态主机配置协议DHCP

    一.什么是DHCP DHCP,动态主机配置协议,提供一种称为“即插即用连网”的机制,允许一台计算机加入新的网络和获取IP地址而不用手工配置. 二.DHCP工作原理和工作流程 DHCP服务器被动打开UD ...

  5. 【网络协议】动态主机配置协议DHCP

    动态主机配置协议DHCP 当某组织获得一块地址后,就可以为本组织内的主机或者路由器分配IP地址.这个分配工作可以由系统管理员手动通过网络管理工具来完成.也可以由动态主机配置协议(Dynamic Hos ...

  6. 计算机网络之动态主机配置协议DHCP

    为了将软件协议做成通用的和便于移植,协议软件的编写者不会把所有细节都固定在源代码中,而是把协议软件参数化,这就使得在很多台计算机上使用同一个经过编译的二进制代码成为可能. 一台计算机和另一台计算机的区 ...

  7. DHCP:动态主机配置协议

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP ...

  8. 第9章 应用层(2)_动态主机配置协议(DHCP)

    2. 动态主机配置协议(DHCP) 2.1 静态地址和动态地址的应用场景 (1)静态地址应用场景 ①IP地址不经常更改的设备(如服务器地址) ②使用有规律的IP地址以便于管理(如学校机房为方便教师管理 ...

  9. 动态主机配置协议-DHCP

    一.DHCP 概述 当局域网中有大量的PC时.如果我们逐个为每台PC去手动配置IP.那这就是一个吃力也未必讨好的办法 累死你 而DHCP 刚好可以解决这个问题.DHCP全称(动态主机配置协议).使用的 ...

随机推荐

  1. 1036: [ZJOI2008]树的统计Count (树链剖分)

    1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3401  Solved: 1418[Submit] ...

  2. Tiny microcontroller hosts dual dc/dc-boost converters

    Batteries are the typical power sources for portable-system applications, and it is not unusual thes ...

  3. Eclipse配置Struts2问题:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

    我的解决方案 一开始,我是依照某本教材,配置了User Libraries(名为struts-2.2.3, 可供多个项目多次使用), 然后直接把struts-2.2.3引入过来(这个包不会真正的放在项 ...

  4. (转)媒体格式分析之flv -- 基于FFMPEG

    本来是应该先写一个媒体文件格式的简单讲解的,还没来得及写,以后再写.今天就先根据ffmpeg的flv.c的flv_demux这个结构体来讲解一下当前比较流行的媒体格式flv. FLV 是FLASH V ...

  5. linux创建swap分区

    创建交换分区 root@zabbix-server:~# mkdir /swap root@zabbix-server:~# cd /swap/ root@zabbix-server:/swap# l ...

  6. 关于MORMOT跨平台

    关于MORMOT跨平台 MORMOT服务端程序,支持Win32 / Win64.还有LINUX,通过FPC. 但是你能够写一个客户端在所有DELPHI支持的平台,要使用 cross-platform ...

  7. infor系统日常问题解决笔记

    1.问题:结算单核准时候显示订单XXX的状态为已修改. 解决方法:在采购订单状态栏重新核准订单,采购订单状态不影响发票核准,结算后不允许再新增采购订单行,否则仍然会提示采购订单状态为已修改,且无法进行 ...

  8. sharememory.c

    //进程通信,共享存储区 #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #i ...

  9. HDU 4901 The Romantic Hero 题解——S.B.S.

    The Romantic Hero Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  10. @Spring MVC 中几种获取request和response的方式

    1.最简单方式:处理方法入参 例如: @RequestMapping("/test") @ResponseBody public void saveTest(HttpServlet ...