TCP/IP之DHCP协议

首先,我们考虑一个主机如何获取IP地址?

有两种获取方法,一种是静态配置,就是从网络管理员获取一个给定的IP地址,也叫硬编码,还有一种就是动态配置IP地址,这就是我们即将要讲的DHCP协议,动态主机配置协议。

静态配置

硬编码。

image.png

硬编码,就是像windows系统中选择给定的IP地址,我们需要指定IP地址,子网掩码和默认网关。默认网关是什么呢?默认网关就是属于这个子网的所有主机,如果将来要离开这个子网,就会被统一转发给这个默认网关指定的IP,我们可以认为它是一个转发路由。如果有多个默认网关,则可以选择其中一个就可以了。

image.png

DHCP协议

  • 从服务器动态获取:
    • IP地址
    • 子网掩码
    • 默认网关地址
    • DNS服务器名称与IP地址

  • “ 即插即用”

  • 允许地址重用

  • 支持在用地址续租

  • 支持移动用户加入网络

DHCP协议交换信息的基本步骤

  • 主机广播 “ DHCP discover” (发现报文)
  • DHCP服务器利用 “ DHCP offer” (提供报文) 进行响应
  • 主机请求IP地址: “ DHCP request” (请求报文)
  • DHCP服务器分配IP地址: “ DHCP ack” (确认报文)

DHCP工作过程示例:

image.png
  • DHCP discover
    客户端源地址四个0表示本机,端口号68和服务器的67都是DHCP指定的。发送一个广播报文。在这个网络中的所有主机包括服务器都会收到这个发现报文,但是只有DHCP服务器才会对其进行响应。

  • DHCP offer
    我们看到服务器的提供报文里,也是通过广播地址发送的,这很容易理解,因为这个是时候请求主机还没有IP地址,所以需要进行广播,请求主机才能够收到,提供报文会将所分配的IP地址加在报文里,图中的223.1.2.4。那么主机如何知道这是它请求的服务器发来的提供报文呢,通过transaction ID来确认。

  • DHCP request
    这里有一个问题,就是为什么主机发送依然是采取广播的方式,实际上这里的作用是,因为整个网络中,不止一个DHCP服务器,所以采取广播的方式,同时也在告诉其他的dhcp服务器,我现在已经确定了我所需要请求的dhcp服务器了,你们别给我发消息了。

  • DHCP ack
    服务器收到请求后,会发送确认报文,主机收到之后,就确认可以使用223.1.2.4作为它的IP地址了。

我们可以看到实际上dhcp之间的信息交换,可以分为两块,一块是主机线广播确认找到提供IP的dhcp服务器,然后再从确认的dhcp服务器收取IP地址。

DHCP协议在应用层实现

  • 请求报文封装到UDP数据报中
  • IP广播
  • 链路层广播(e.g. 以太网广播)
image.png
  • DHCP服务器构造ACK报文
  • 包括分配给客户的IP地址、子网掩码、默认网关、 DNS服务器地址
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,115评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,167评论 6 174
  • 前言 写这篇文章的缘由是客户提出的一个问题:客户使用公司的Wi-Fi产品的App,有两个设备出现了问题,点击App...
    Noskthing阅读 3,016评论 2 23
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,663评论 2 56
  • Android 开发中需要处理图片的地方很多,但如何针对 Android 平台的特性,将图片这件不简单的事情,做到...
    _qisen阅读 986评论 0 5