热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux作DHCP服务器之一

文章标题:Linux作DHCP服务器之一。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  一、DHCP概述
  
  1.采用DHCP的必要性
  
  在TCP/IP网络上,每台工作站要能存取网络上的资源之前,都必须进行基本的网络配置,一些主要参数诸如IP地址,子网掩码,缺省网关,DNS等必不可少,还可能需要一些附加的信息如IP管理策略之类。对于一个稍微大点的网络而言,网络的管理和维护的任务是相当繁重的。一台计算机从一个子网转移到另一个子网,就要重新对系统进行配置。对于普通水平的工作站用户是不能赋予他们配置自己的工作站网络的权限,而且也没有这个必要。如果一个没有相应技术水平的用户出于好奇或想学习一下的目的错误地更改了工作站的网络配置,造成网络故障,后果不言而喻。因此,需要有一种机制来让TCP/IP的配置和管理从用户端转移到网络管理端,实现IP的集中式管理。解决方案就是用DHCP。
  
  v2.DHCP的主要功能
  
  DHCP的全称是动态主机配置协议(Dynamic Host Configuration Protocol),由IETF(Internet 网络工程师任务小组)设计,详尽的协议内容在RFC文档rfc2131和rfc1541里。目的就是为了减轻TCP/IP网络的规划、管理和维护的负担,解决IP地址空间缺乏问题。运行DHCP的服务器把TCP/IP网络设置集中起来,动态处理工作站IP地址的配置,用DHCP租约和预置的IP地址相联系,DHCP租约提供了自动在TCP/IP网络上安全地分配和租用IP地址的机制,实现IP地址的集中式管理,基本上不需要网络管理人员的人为干预。而且,DHCP本身被设计成BOOTP(自举协议)的扩展,支持需要网络配置信息的无盘工作站,对需要固定IP的系统也提供了相应支持。
  
  二、DHCP的工作原理
  
  1.几个DHCP名词
  
    在介绍DHCP工作原理以前,先解释这几个名词的含义:
  
    DHCP客户:DHCP客户是一通过DHCP来获得网络配置参数的Internet主机,通常就是普通用户的工作站。
  
    DHCP服务器:DHCP服务器是提供网络设置参数给DHCP客户的Internet主机。
  
    DHCP/BOOTP 中继代理:在DHCP客户和服务器之间转发 DHCP 消息的主机或路由器。
  
    DHCP是基于客户机/服务器模型设计的,DHCP客户和DHCP服务器之间通过收发DHCP消息进行通讯。
  
  DHCP 消息的格式与BOOTP消息大部分相同, 这样设计可以增强BOOTP服务器工具,同时为BOOTP和DHCP两种客户服务。另外,BOOTP的中继代理可用来转发跨子网的DHCP请求。
  
  各段描述如下
  
  括号里的数字代表这个段以8位组为单位的大小,除options外,其余的段的长度都是固定的,options段的长度至少是312个8位组。如op(1代表这个段的长度为一个8位组 op 是消息操作代码,值为1 代表BOOTREQUEST(自举请求)值为2 代表BOOTREPLY(自举响应)
  
  在DHCP客户和DHCP服务器对话期间,op段被DHCP客户设置为BOOTREQUEST(1), 被DHCP服务器设置为 BOOTREPLY(2)。
  
  htype 是硬件地址类型
  
  hlen 是硬件地址长度
  
  hops DHCP客户置这项为零,中继代理要用
  
  xid DHCP客户在寻求时产生的一个随机数, 它提供了对所有后续的DHCP消息中的客户请求和服务器响应的一
  
  种联合。
  
  ciaddr 客户机用来请求一个特定的IP地址, 这个地址以前曾经分配给该客户机,希望保留。
  
  yiaddr 由DHCP服务器填写,包含它提供给某一DHCP客户的IP地址。
  
  siaddr 服务器的主机地址
  
  giaddr 中继代理的IP地址
  
  chaddr DHCP客户硬件地址
  
  sname 服务器主机名
  
  file 启动文件名
  
  2.1 options 选项
  
  在获得IP地址前,DHCP客户用 htype, hlen 和 chaddr 段表明它的硬件地址, 这个值由向客户硬件地址作出响应的服务器和中继代理利用。 以前BOOTP协议中的两个没有用到的8位组的flags段在DHCP消息里有了定义。这个段的高位比特用于表明客户机能不能在IP地址没有被配置前接
  收Unicast 回应, 剩下的低位比特保留且必须置为零。 hops 和 secs 段在初始化过程中被中继代理有选择地利用。 sname 和 file 域可以被BOOTP或无盘站利用。
  
  2.2 关于 options 选项
  
  选项附加在DHCP消息的固定长度段之后, 为了与BOOTP工具兼容, 选项段的前四个8位组包含了
  RFC1497中定义的magic COOKIEs,余下的段就都是DHCP 选项。在RFC1533里定义了DHCP的所有的选项
  的格式。大多数选项用于标志网络传输设置值, 例如子网掩码 (mask)、 DNS 服 务 器 地 址 等其
  他选项被DHCP协议利用, 且在大多数消息中是必需的。
  
  2.3 DHCP 选项的编码格式
  
  Code  Length value
  
  26    2   m1 m2
  
  
  
  选项可以固定长度或可变长度,所有的选项都以一个8位组标识码开始,这个标识码用来标识选项。不带数据的固定长度选项就只由一个标识码构成。而且只有选项0和255是固定长度,其它的选项都可变长度的,为了标明选项数据的长度,在标识码后面是一个长度8位组,这个长度8位组的值不包含标识码和长度码本身。
  
  例如,DHCP选项里的子网掩码选项如下定义
  
  Code  Length Subnet Mask
  
  1    4   m1 m2 m3 m4
  
  
  标识码是1,长度是4个8位组,随后的4个8位组就是子网掩码
  
  
  DHCP消息类型选项的标识码是53,长度是1个8位组,值是从1到7,分别代表不同的DHCP消息类型。
  
  
  Code  Length  Type
  
  53   1    1-7
  
   
  
  值  消息类型
  1  DHCPDISCOVER
  2  DHCPOFFER
  3  DHCPREQUEST
  4  DHCPDECLINE
  5  DHCPACK
  6  DHCPNAK
  7  DHCPRELEASE
  
  
  
  最后一项选项是零长度的End(选项 255), 表明这是选项的结束以便DHCP客户处理。 采用选项编码的好处是不论选项有多长,DHCP客户都可以正确接收,即使是它不认识的选项(不见得所有的DHCP客户程序都完全遵循RFC标准)。
  
  不论是DHCP客户还是DHCP服务器,都是通过按DHCP消息格式要求来填写各个段形成具体的DHCP消息,DHCP用的传输协议的非面向连接的UDP(用户数据报协议),从DHCP客户发出的DHCP消息送往DHCP服务器的端口67,DHCP服务器发给客户的DHCP消息送往DHCP客户的端口68,由于在取得服务器赋予的IP之前,DHCP客户并没有自己的IP,所以包含DHCP消息的UDP数据报的IP头的源地址段是0.0.0.0,目的地址则是255.255.255.255。
推荐阅读
  • UDP千兆以太网FPGA_verilog实现(四、代码前期准备UDP和IP协议构建)
    UDP:userDatagramprotocol用户数据报协议无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC76 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • Linux防火墙配置—允许转发
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
author-avatar
Eva---LiuJ
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有