DHCP:(Dynamic Host Configuration Protocol) 动态主机配置协议

1. DHCP是一个局域网的网络协议,采用UDP协议工作

2. DHCP作用

(1)主要应用在大型的局域网环境中,用于给局域网中的主机动态地获得网络参数信息;

(网络参数信息包括:IP地址、子网掩码、Gateway地址、DNS服务器地址等)

(2)这种集中管理、分配IP地址的方式有利于提高地址的利用率、减少冲突,网络管理员也能够利用DHCP Server对局域网内的主机进行更好的管理。

3.DHCP基本工作原理

DHCP Client和DHCP Server之间的数据传递过程如图所示:

第一步:

DHCP客户端在其局域网内广播发送DHCP Discover包,寻找该局域网内的DHCP服务器,其中:
     • 只要安装了TCP/IP协议的主机都能接受到这种广播,但只有DHCP服务器才作出回应
     • 源MAC是自己的MAC地址,目的MAC是FFFF.FFFF.FFFF的广播
     • 源IP是0.0.0.0(现在还没有IP,就用全0地址),目的IP是255.255.255.255的三层广播
     • DHCP Discover包含的内容有:客户机的MAC地址和主机名
     • DHCP Discover是UDP数据包

第二步:

DHCP服务器收到DHCP Discover后都会作出回应,根据客户端的MAC地址和自身的配置,有三种IP分配方式:
    • 若日志文件中有记录该MAC之前曾租用过某IP,且当前无人使用,则分配此IP
    • 若配置中有规定该MAC租用固定IP,则分配此IP
    • 若都没有,则从地址池中随机选取(有多个sunet时,它分配的一定是同一个局域网网段的那个)
    • 可以通过ARP广播的方式确认该IP地址是否被使用
选取IP后将此IP标记,广播一个DHCP Offer包:
    • DHCP Offer包中包含:客户机的MAC地址,提供的合法IP,子网掩码,组约期限,服务器标识等参数
    • 此时客户机还没有IP地址,所以是以广播的方式发送。

第三步:

客户端收到DHCP Offer后,选择一个Offer包(即一个网络租约信息):
    • 如果该局域网内有多个DHCP服务器,则客户端会选择它收到的第一个offer包
然后客户端会给该局域网中的所有主机发送广播包(DHCP Request):
    • 告知自己已接受的出租IP和DHCP服务器的IP。

第四步:

服务器收到Request包,服务器和客户机确认租约关系。
服务器回送dhcp ack/dhcp nack包、告知期限、开始租约计时。
( 以dhcp ack包向客户机广播出去,当客户机确认了收之后,就配置自己的IP地址(和相关网络参数),完成初始化.)

如果遇到客户端脱机或租约到期,则断线。

总结来看:

4.Linux中与DHCP相关的文件、端口

4.1 DHCP Server端

(1) /etc/dhcp/dhcpd.conf

DHCP服务器的主要配置文件

(2) /usr/sbin/dhcpd

启动整个DHCP daemon的脚本文件

(3) /var/lib/dhcpd/dhcpd.leases

记录着服务器与客户端租约建立的起始日与到期日

大致看看其中的内容:

# cat dhcpd.leases

# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.1.1-P1
lease 172.16.10.2 {
starts 3 2009/11/25 07:09:30;
ends 3 2009/11/25 09:09:30;
cltt 3 2009/11/25 07:09:30;
binding state active;
next binding state free;
hardware ethernet 00:0c:29:ef:31:b6;
}

  (4) /var/log/messages、 /var/log/boot.log

查看dhcp相关日志的两个文件

4.2 DHCP Client端

      (1) /var/lib/dhclient/dhclient-eth0.leases

记录着某网卡与dhcp服务器租约建立的起始日与到期日

大致看看其中的内容:

# cat /var/lib/dhclient/dhclient-eth0.leases 

lease {
interface "eth0";
fixed-address 10.0.10.191;
filename "pxelinux.0";
option subnet-mask 255.255.0.0;
option dhcp-lease-time 6000;
option routers 10.0.0.254;
option dhcp-message-type 5;
option dhcp-server-identifier 10.0.0.254;
option domain-name-servers 114.114.114.114,112.124.47.27;
renew 2 2016/06/21 16:10:06;
rebind 2 2016/06/21 16:54:56;
expire 2 2016/06/21 17:07:26;
}

4.3 DHCP端口

(1)Server端:67

(2)Client端:68

5. DHCP Relay(DHCP中继代理)

    如果DHCP Server和DHCP Client在同一个物理网段,则直接由这台Server给Client分配IP;

如果不在同一个物理网段,则需要DHCP Relay。Client借由DHCP中继代理服务器寻找到DHCP Server。

避免了在各个网段都设置一台DHCP Server以节约设备成本。

6. DHCP基本原理在VMware的实验

最新文章

  1. Android Duplicate files copied in APK
  2. 二、CoreAnimation之寄宿图详解
  3. Hadoop 2.6 MapReduce运行原理详解
  4. R 网页数据爬虫1
  5. java提高篇---HashTable
  6. JQuery中的事件以及动画
  7. struts2 package元素配置(转载)
  8. tornado学习精要
  9. iOS设备隐藏StateBar
  10. usaco月赛,2017.1总结
  11. (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功
  12. 关于new Date()
  13. BZOJ 2222: [Cqoi2006]猜数游戏【神奇的做法,傻逼题,猜结论】
  14. Brown Mood Median Test
  15. SQL中DATENAME函数的用法
  16. AtCoder Beginner Contest 122 解题报告
  17. centos7设置服务为开机自启动(以crond.serivce为例)
  18. 洛谷 P2629 好消息,坏消息
  19. 把一行数字(readline)读进List并以科学计数法输出(write)到文件
  20. 【CF148D】 Bag of mice (概率DP)

热门文章

  1. pig中变量
  2. Unieap3.5-禁用Form表单中的全部标签
  3. 打造一个自动检测页面是否存在XSS的小插件
  4. C# 和SQL Server 类型转换
  5. 使用NPOI操纵Excle,并输入到客户端
  6. MBR解析
  7. JS匿名函数自执行函数
  8. objective-C基本知识
  9. Regarding the %EDIT table
  10. 在Spark中使用Kryo序列化