DHCP(Dynamic Host Configuration Protoco,动态主机配置协议)通常被应用在大型的局域网络环境中

作用:动态的给局域网主机分配ip地址,网关、DNS等,可以将手动地址配置量,自动分配解决地址冲突问题。

什么意思?我们说电脑上网需要三个要素,分别是IP、网关、DNS三个要素。而刚刚插上的电脑没有IP网关和DNS,这时候我们可以通过DHCP这个协议让它去获取到三个要素,这样就可以实现上网。那么DHCP是怎样去获取到这些地址呢?我们先看一下DHCP的报文类型,报文就像网络协议的语言一样,有了语言才能交流工作。

DCHP一共有六种报文类型,我们平常只用到了四种。

DHCP Discover:客户端用来寻找

DHCP服务器:广播

DHCP Offer:DHCP服务器用来响应,此报文携带了IP地址等配置信息(单播)

DCHP Request:客户端请求地址续租,重启之后也会发,用于确认分配的信息(广播)(续租单播)

DHCP Ack:服务器对request报文的确认响应(单播)

DHCP NAK:服务器对request报文的拒绝响应

DCHP Release:客户端要释放地址时用来通知服务器

那么电脑是如何使用这些报文去获取IP地址的呢 ?

DHCP的工作过程:

DHCP的工作过程大概可分为四步:

1.客户端发广播寻找DHCP服务器

2.DHCP服务器单播回复客户端Offer

3.客户端广播请求这个ip,发广播一方面是为了请求这个地址,另一个方面也是告诉其他的dhcp服务器自己有地址用了

4.服务器发送ACK包

经过以上四个步骤之后客户端就获得了IP地址等信息,客户端在获得IP地址之后发送GARP检测IP地址有没有冲突

举个例子来说:

​以上图为例子:

1.主机a是刚刚接入网络中的一台主机,在主机a接入之后,就会广播发送Discover包,寻找网络中的DHCP服务器

2.当dhcp服务器收到a的discover包之后,会单播回复给a一个offer包,里面包含着一个ip地址和一些配置信息比如,网关,租期,dns等

3.当主机a收到这个offer包之后确认要使用,就广播发送request请求这个IP地址,发广播的原因可能网络中还有其他的DHCP服务器,告诉他们自己有了IP地址

4.当dhcp服务器收到a的request之后单播发送一个ACK,a收到ack之后就开始使用这个IP地址

以上就是DHCP的工作过程,我们看到从主机寻找到获取地址一共只用到了四种数据包,那么其他两种数据包是在那种情况下被用到的呢?这就扯到了DHCP协议的一个小细节,叫做租期。

DHCP的租期

DHCP服务器给客户端分配到的地址,就会有一个默认的租期为一天,也就是说过了这个租期之后DHCP服务器就会把这个地址收回,客户端就无法使用这个ip进行上网了。租期范围内客户端通过三个定时器来实现续租和释放IP地址

1.租期更新

​以上图为例,主机a从DHCP服务器获取得到了一个IP地址,ip租约期限到达50%时,主机a会单播发送dhcp request包,来申请延长ip地址的租期,服务器向主机a发送确认报文,给主机a一个新的租期

2.租期重绑定

​以上图为例,在主机a在租期达到87.5%时,还没收到服务器的响应报文,会认为dhcp服务器不可用,广播重新发送request申请重绑定。网络上任何一台DHCP服务器都可以应答ack或者nak。

如果收到ack回复主机复位自己的租期为一天,重新更新计时器。如果收到了NAK,客户端会立即停用现有IP,重新申请ip地址。

3.租期失效

以上图为例,在ip租期到达之后,如果没有收到服务器回应,就会发送release报文,释放这个IP地址

客户端不再使用分配地址也会发release,来释放改地址释放之后客户端重新发送discover

此时我们思考一个问题,客户端在请求地址的时候发送一个广播包,我们都知道广播包是无法跨越三层设备的,如果这时候dhcp服务器与客户主机不在同一个网段应该怎么做?

​以上图为例,可以看到电脑和服务器不在同一个网段,还想从dhcp服务器获得地址,这时候就用到了dhcp中继

dhcp中继的作用是可以让路由器转发dhcp的数据报文,这样就可以实现客户端和服务器在不同网段也能获得地址

服务器不在工作_DHCP的工作原理相关推荐

  1. java语言的实现机制_JAVA语言之Java NIO的工作机制和实现原理介绍

    本文主要向大家介绍了JAVA语言之Java NIO的工作机制和实现原理介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 前言 本文只简单介绍NIO的原理实现和基本工作流程 I/O和 ...

  2. CDN工作过程及工作原理

    CDN(Content Delivery Network)即内容分发网络,CDN的作用是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度.本文介绍CDN的工作 ...

  3. raid0 raid1 raid5 三种工作模式的工作原理及特点

    简述raid0 raid1 raid5 三种工作模式的工作原理及特点 RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据还有一个大功能,多块盘放在一起可以有冗余(备份).RAID整合 ...

  4. 服务器维护日常需做哪些工作?

    近年来网络数据安全越来越重要,服务器维护也越来越被重视,而在维护服务器的时候一定要谨慎小心,日常维护工作要处理好,否则出现一点小的错误就会影响很大.那么,服务器维护日常需做哪些工作呢? 近年来网络数据 ...

  5. 产品工作中的金字塔原理

    本文有PMCAFF 原创作者 咸鱼 原创发布于pmcaff.com 金字塔原理是国外一个慈祥的老太太(巴巴拉·明托)提出的一个方法论,主要是帮助我们清晰的思考.表达和写作的思维方式. 一. 什么是金字 ...

  6. websocket服务器无响应,WebSocket服务器因某些原因无法正常工作(WebSocket server not working for some reasons)...

    WebSocket服务器因某些原因无法正常工作(WebSocket server not working for some reasons) 我尝试使用ws创建一个非常简单的服务器,当我运行服务器no ...

  7. 工作篇:触摸屏原理介绍

    目录 电容 一.触摸屏概述 二.常见触摸屏分类 三.触摸屏结构组成 四.电容式触摸屏 1.电容屏感应类型分类 表面式电容触摸屏: 投射式电容触摸屏: 投射式电容屏原理 2. 电容屏基本参数 3.电容触 ...

  8. svn 项目提交后在服务器里面哪里,SVN如何实现工作代码提交后实时更新到测试服务器...

    <SVN如何实现工作代码提交后实时更新到测试服务器>由会员分享,可在线阅读,更多相关<SVN如何实现工作代码提交后实时更新到测试服务器(21页珍藏版)>请在人人文库网上搜索. ...

  9. 微软RDP远程桌面连接提示:您的凭据不工作,之前用于连接(服务器IP)的凭证无法工作。请输入新凭据

    微软RDP远程桌面连接提示: 您的凭据不工作,之前用于连接(服务器IP)的凭证无法工作.请输入新凭据 请负责装机维护的电脑界朋友,参考: https://blog.csdn.net/sun157326 ...

最新文章

  1. 《Spring 5 官方文档》18. Web MVC 框架(五)
  2. PHP将XML转成数组
  3. mipi屏在内核可以显示logo但是u-boot无法显示的问题【转】
  4. oracle 递归应用(挺复杂的)
  5. ASP.NET中验证控件的使用
  6. 差分能量分析介绍(一)
  7. 用js来实现那些数据结构 第一章
  8. eclipse debug怎么用_利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)
  9. Android如何分析native代码,使用android-ndk-profiler对native代码进行性能分析
  10. java线程中的task_Java线程(四):Timer和TimerTask
  11. 看呆了!日本男粉丝凭瞳孔倒影找到偶像住所 实施猥亵...
  12. RabbitMQ和Kafka的显著差异(1)
  13. Android 逆向流程
  14. Just Pour the Water ZOJ - 2974 (矩阵快速幂)
  15. JavaScript 学习指南
  16. 湖仓一体数据平台架构
  17. matlab中用xlsread()函数在Excel中读取数据
  18. 理科生的人生感悟-02-别忘了别人的痛苦 - 丰收之歌和围墙外的稻田
  19. jar包 运行内存分配情况
  20. GPA计算器雏形--

热门文章

  1. P8U8 最中听的话,不要做每件事都考虑太多。
  2. JS中自动执行函数小结
  3. 996,别让年轻人累到不觉得累
  4. 面试题系列(10):一个大型电商网有大量的图片,加载很慢,你有哪些方法优化这些图片的加载?...
  5. c语言 swap交换函数_重审C中老生常谈的swap函数交换数值
  6. MEGA | 多序列比对及系统发育树的构建
  7. 机器学习算法 随机森林学习 之决策树
  8. 高颜值免费在线SCI绘图工具支持导出PPT格式图片和图片分享功能
  9. 微软服务器配置核查,注册表配置检查
  10. 1.7 编程基础之字符串 16 忽略大小写的字符串比较 python