作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系。

DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址、DNS域名服务器地址等。一台电脑只要接上网,就可以通过DHCP协议获得相关配置,从而顺利的畅游网络。

网络配置

电脑刚刚接上网络时,像一个走入一家新餐厅的食客,不免会有很多疑惑:

“我该坐在哪里?”

“我怎么点菜?”

“我该如何结账?”

初入大饭店

如果顾客的问题长时间得不到解答,那么餐厅很可能失去这位客人。于是,餐厅往往会雇一些服务员。他们可以把客人引导到空闲的座位,并告诉顾客如何点餐、如何结账等。同样,在网络通信中,一台电脑需要设置自己的IP地址等网络参数。可对于电脑用户来说,这些设置太过复杂。幸好,DHCP协议可以解决这一让人头痛的问题。

DHCP协议全称为“动态主机设置协议”(Dynamic Host Configuration Protocol)。通常来说,普通电脑中都内置有DHCP客户端模块。电脑接上网络后,DHCP客户端发现新连通的网络,会在该网络上找DHCP服务器。DHCP服务器将给电脑提供合理的网络配置,并把设置信息传回本机。所谓的DHCP服务器,其实就是一些运行有DHCP服务器端软件的特殊电脑。他们像等候在网络上的服务员,为新来的顾客排忧解难。本机和DHCP服务器之间的通信,都是通过DHCP协议进行的。

其实在网络诞生初期,就有了用一台服务器为网络上的电脑配置参数的做法。最早的一个协议叫BOOTP(Bootstrap Protocol),主要用于开机配置。计算机开机时需要很多配置参数。对于没有磁盘的计算机来说,它无法获得这些参数,但可以通过BOOTP从网络上的其他设备上获得。DHCP大体上继承了BOOTP的工作方式,但在细节上进行了改进。我们将在以后看到。

地址分配

服务员最重要的任务是为客人找座位。类似的,DHCP服务器的首要任务是分配IP地址。分配的IP地址要符合以下原则:

  1. 地址合法,即对应该局域网的IP地址和子网掩码。
  2. 地址空闲,同一网络下没有其他设备使用该地址。

DHCP服务器上存有一个地址池,里面是可用的IP地址,相当于服务员手中的空闲桌号列表。当新客人出现时,DHCP服务器就会从地址池中取出一个IP地址分配给客人。此外,服务器还会说明IP地址的占用时间,也就是租期:

“先生,请注意您的用餐时间为1个小时”

当然,主机使用网络的时间可能超过租期。如果主机在租期到时都没有联系DHCP服务器,那么DHCP服务器会收回IP地址,再分配给其他主机。可如果主机想继续使用IP地址,就要在中途申请延长租期。收到申请的DHCP服务器通常会答应主机的请求,允许它继续使用现有IP地址。但少数情况下,服务器会要求主机更换IP地址。如果主机联系不上DHCP服务器,那么它必须立即停止使用IP地址,重启寻找DHCP服务器的过程。

有了动态分配,DHCP服务器不但简化了网络配置过程,还可以有效利用IP地址资源。例如一个咖啡馆的Wifi路由允许200台设备接入。咖啡馆每天进出的客人很多。如果每个客人都要求一个不一样的IP地址的话,所需地址会远远超过200台。而通过动态的方式,200个IP地址不断回收使用,完全可以满足客人的需要。有时,DHCP服务器会预留一些地址给特定MAC地址的设备使用。这就好像餐厅给贵宾预留座位,不允许其他客人坐。这样的地址通常会分配给打印机、传真机等特殊设备。由于IP地址固定,用户可以方便的通过IP地址找到它们。

通信过程

DHCP协议的底层是UDP协议。我们知道,网络上的点对点沟通需要有IP地址。但新接入网络的客户机正是想通过DHCP通信来获得IP地址。这简直成了“鸡生蛋、蛋生鸡”的死胡同。幸好,除了点对点通信,UDP协议还允许广播通信。把UDP数据包发送到网络的广播地址,网络上的每个设备都能收到。因此,DHCP通信主要靠这种广播的形式进行。

DHCP通信分为四步:

  1. Discovery:客户机发广播,搜寻DHCP服务器。
  2. Offer:DHCP服务器发出邀请,提供一个可用的IP地址。
  3. Request:客户机正式请求使用该IP地址。
  4. Acknowledge:DHCP服务器确认,并提供其他配置参数。

每一步的通信内容都放在一个符合DHCP格式的数据包中。数据包中可以包括客户机IP地址、服务器IP地址、客户的硬件MAC编号等字段,还能附加多条网络设置参数。当某些信息未知时,如客户机的IP地址,相应的字段可以填成0。

我们可以再次用餐厅来类比通信过程:

客人老张大喊:“服务员,我是老张,给我找张桌子呗?”

服务员小美回喊:“我是服务员小美。老张你坐3号桌行吗?”

老张觉得3号桌不错,又喊了一嗓子,“这桌子行,老张我就坐在这里了啊。”

小美回复,“成啊。记得用餐时间是一个小时哟。”

服务员小美

经过这一系列的DHCP通信,客户机获得了自己的IP地址,也记下了租期时间。为了防止DHCP服务器不靠谱,客户机通常还会探测一下网络,以免该IP已经被其他设备占用。除了租期,DHCP服务器最终确认中,还可能加上其他网络配置信息,如DNS服务器地址、网络出口地址等。客户机可以选择接受,也可以拒绝DHCP服务器的“好意”,自行设置这些参数。

DHCP攻击

一定程度上说,DHCP服务器是个活雷锋,为网络上的其他设备提供公共服务,免得设备之间私自打架。人们也越来越信赖这个活雷锋,只管接上网线、连上Wifi,让DHCP服务器处理配置之类的杂事。无形中,DHCP服务器掌握了很大的公共权力。一些黑客攻击手法开始瞄准DHCP服务器。

针对DHCP的一种攻击办法是从服务器那里骗IP地址。攻击者的电脑可以不断发出DHCP请求,冒充成新入网的客户机。于是,DHCP服务器的地址池被耗干,无法分配地址给后来的用户。后来的用户再也没法使用网络服务。攻击者很可能会继续下连环套。攻击者占有了大量IP地址,可以装扮成新的DHCP服务器,把自己骗来的IP地址分配给网络上的新用户。

等等,好像有什么不对攻击者搞瘫一台DHCP服务器,就为了过一下cosplay的瘾?

假扮小美,很容易被外表迷惑

当然不是。DHCP服务器还能提供其他网络设置参数。攻击者可以让自己成为DNS服务器或者网络出口。于是,客户机的域名解析和外网通信,必须经过攻击者的电脑。这个时候,攻击者的权限就很大了。他可以偷听通信、伪装成客户机、假扮成某个域名的网站。比如说,攻击者就可以篡改域名解析,让你在访问www.cnblogs.com/vamei时,实际上访问的是攻击者提供的一个网页。当你在这个网页上输入用户名和密码时,你的信息就完全泄露给了攻击者。

DHCP攻击让人防不胜防。DHCP协议在设计中并没有考虑到安全性的问题,所以很难从软件上杜绝DHCP攻击。某些品牌的交换机上,可以指定特定端口给合法的DHCP服务器,以免其他人伪装。当然,最重要的保护方式,还是防止攻击者连入局域网。

总结

DHCP服务器可以动态的分配IP地址,还可以提供其他网络设置参数。客户机和服务器经过四步来完成DHCP通信。

欢迎继续阅读“协议森林”系列

协议森林16 小美的桌号(DHCP协议)的更多相关文章

  1. DHCP协议格式、DHCP服务搭建、DHCP协商交互过程入门学习

    相关学习资料 http://www.rfc-editor.org/rfc/rfc2131.txt http://baike.baidu.com/view/7992.htm?fromtitle=DHCP ...

  2. (转)协议森林07 傀儡 (UDP协议)

    协议森林07 傀儡 (UDP协议) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经讲解了物理层.连接层和网络层.最开始的 ...

  3. 协议分析 - DHCP协议解码详解

    协议分析 - DHCP协议解码详解 [DHCP协议简介]         DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 ...

  4. DHCP协议讲解

    一.DHCP服务介绍: DHCP为动态主机配置协议,该协议能自动配置主机的IP地址.子网掩码.网关及DNS服务器等TCP/IP信息.DHCP可以降低客户机IP地址配置的复杂度和网络管理成本. DHCP ...

  5. 【转】DHCP协议详解

    协议分析 - DHCP协议解码详解 DHCP协议简介 DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作 ...

  6. 【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置

    简介 为了使用 TCP/IP 协议族,每台主机or路由器都需要一定的配置信息: IP地址 子网掩码 广播地址 路由或转发表 DNS 协议配置方法: 手动 通过使用网络服务来获得 使用一些算法来自动确定 ...

  7. 协议森林03 IP接力赛 (IP, ARP, RIP和BGP协议)

    网络层(network layer)是实现互联网的最重要的一层.正是在网络层面上,各个局域网根据IP协议相互连接,最终构成覆盖全球的Internet.更高层的协议,无论是TCP还是UDP,必须通过网络 ...

  8. 很好的 DHCP协议与dhcpcd分析【转】

    本文转载自:http://blog.csdn.net/gjsisi/article/details/18052369 第一部分 DHCP工作过程 DHCP的工作过程主要分为以下六个阶段:     发现 ...

  9. dhcp协议简介

    协议分析 - DHCP协议解码详解 DHCP协议简介 DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作 ...

随机推荐

  1. ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  2. Appium移动自动化框架

    引言:Appium 是一个移动端自动化测试开源工具,可以针对不同的平台用一套API来编写测试用例.本文对Appium自动化测试框架的功能进行了概括. 本文选自<软件自动化测试开发>. Ap ...

  3. CENTOS 6.5 平台离线安装 Apache2.4

    一.下载Apache 2.4 http://httpd.apache.org/download.cgi http://mirrors.cnnic.cn/apache//httpd/httpd-2.4. ...

  4. 快速搭建springmvc+spring data jpa工程

    一.前言 这里简单讲述一下如何快速使用springmvc和spring data jpa搭建后台开发工程,并提供了一个简单的demo作为参考. 二.创建maven工程 http://www.cnblo ...

  5. JavaScript之职责链模式

    一.概述 职责链模式(Chain of responsibility),就是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有 ...

  6. 那些年【深入.NET平台和C#编程】

    一.深入.NET框架 1..NET框架具有两个组件:CLR(公共语言运行时)和FCL(框架类库),CLR是.NET框架的基础 2.框架核心类库: System.Collections.Generic: ...

  7. SEED实验系列文章目录

    美国雪城大学SEEDLabs实验列表 SEEDLabs是一套完整的信息安全实验,涵盖本科信息安全教学中的大部分基本原理.项目组2002年由杜文亮教授创建,目前开发了30个实验,几百所大学已采用.实验楼 ...

  8. MongoDB学习笔记六—查询下

    查询内嵌文档 数据准备 > db.blog.find().pretty() { "_id" : ObjectId("585694e4c5b0525a48a441b5 ...

  9. 使用HEXO快速建站

    先安好npm,请参照:http://max.cszi.com/archives/482 打开网站:https://hexo.io/   npm install hexo-cli -g hexo ini ...

  10. UWP开发:APP之间的数据交互(以微信为例)

    目录 说明 UWP应用唤醒方式 跟微信APP交互数据 APP之间交互数据的前提 说明 我们经常看到,在手机上不需要退到桌面,APP之间就可以相互切换,并且可以传递数据.比如我在使用知乎APP的时候,需 ...