服务器封包协议号,DHCP协议的租约确认和封包格式

2023-11-02

对于DHCP协议我们总是有很多内容需要介绍。在之前我们已经对概念、结构和工作流程有了一定的了解了。这里,我们将要在流程中补充一部分知识,另外在对DHCP协议的封包格式进行重点讲述。

租约确认

当 DHCP服务器接收到客户端的 DHCPrequest 之后,会向客户端发出一个 DHCPACK 响应,以确认IP租约的正式生效,也就结束了一个完整的 DHCP工作过程。

DHCP发放流程***次登录之后: 一旦 DHCP客户端成功地从服务器哪里取得 DHCP租约之后,除非其租约已经失效并且IP地址也重新设定回 0.0.0.0 ,否则就无需再发送 DHCPdiscover 信息了,而会直接使用已经租用到的IP地址向之前之 DHCP服务器发出 DHCPrequest 信息,DHCP服务器会尽量让客户端使用原来的IP地址,如果没问题的话,直接响应 DHCPack 来确认则可。如果该地址已经失效或已经被其它机器使用了,服务器则会响应一个 DHCPNACK 封包给客户端,要求其从新执行 DHCPdiscover。

至于IP的租约期限却是非常考究的,并非如我们租房子那样简单, 以 NT 为例子:DHCP工作站除了在开机的时候发出 DHCPrequest 请求之外,在租约期限一半的时候也会发出 DHCPrequest ,如果此时得不到 DHCP服务器的确认的话,工作站还可以继续使用该IP;当租约期过了87.5%时,如果客户机仍然无法与当初的DHCP服务器联系上,它将与其它DHCP服务器通信。如果网络上再没有任何DHCP协议服务器在运行时,该客户机必须停止使用该IP地址,并从发送一个Dhcpdiscover数据包开始,再一次重复整个过程。要是您想退租,可以随时送出 DHCPRELEASE 命令解约,就算您的租约在前一秒钟才获得的。

跨网络的 DHCP运作 从前面描述的过程中,我们不难发现:DHCPDISCOVER 是以广播方式进行的,其情形只能在同一网络之内进行,因为 router 是不会将广播传送出去的。但如果 DHCP服务器安设在其它的网络上面呢?由于 DHCP客户端还没有IP环境设定,所以也不知道 Router 地址,而且有些 Router 也不会将 DHCP广播封包传递出去,因此这情形下 DHCPDISCOVER 是永远没办法抵达 DHCP服务器那端的,当然也不会发生 OFFER 及其它动作了。要解决这个问题,我们可以用 DHCPAgent (或 DHCPProxy )主机来接管客户的 DHCP请求,然后将此请求传递给真正的 DHCP服务器,然后将服务器的回复传给客户。这里,Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。

若不使用 Proxy,您也可以在每一个网络之中安装 DHCP服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。当然喽,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。端视您的实际情况而定了。

DHCP协议封包格式

以下为各字段的简要说明:

OP 若是 client 送给 server 的封包,设为 1 ,反向为 2 。

HTYPE 硬件类别,Ethernet 为 1 。

HLEN 硬件地址长度, Ethernet 为 6 。

HOPS 若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0 。

TRANSACTION ID DHCPREQUEST 时产生的数值,以作 DHCPREPLY 时的依据。

SECONDS Client 端启动时间(秒)。

FLAGS 从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。

ciaddr 要是 client 端想继续使用之前取得之IP地址,则列于这里。

yiaddr 从 server 送回 client 之DHCPOFFER与 DHCPACK 封包中,此栏填写分配给 client 的IP地址。

siaddr 若 client 需要透过网络开机,从 server 送出之 DHCPOFFER、DHCPACK、DHCPNACK 封包中,此栏填写开机程序代码所在 server 之地址。

giaddr 若需跨网域进行 DHCP协议发放,此栏为 relay agent 的地址,否则为 0 。 chaddr Client 之硬件地址。 sname Server 之名称字符串,以 0x00 结尾。 file 若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。 options 允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如:Netmask、Gateway、DNS、等等)。其长度可变,同时可携带多个选项,每一选项之***个 byte 为信息代码,其后一个 byte 为该项数据长度,***为项目内容。 CODE LEN VALUE 此字段完全兼容 BOOTP,同时扩充了更多选项。其中,DHCP封包可利用编码为 0x53 之选项来设定封包类别: 项值 类别 1 DHCPDISCOVER 2DHCPOFFER3 DHCPREQUEST 4 DHCPDECLIENT 5 DHCPACK 6 DHCPNACK 7 DHCPRELEASE DHCP协议的选项非常多,有空请查阅 RFC 或相关文献,并好好理解,这里不再叙述了。

【责任编辑:佟媛微 TEL:(010)68476606】

点赞 0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务器封包协议号,DHCP协议的租约确认和封包格式 的相关文章

  • springboot实现各种参数校验

    springboot实现各种参数校验 简单使用 Java API规范 JSR303 定义了Bean校验的标准validation api 但没有提供实现 hibernate validation是对这个规范的实现 并增加了校验注解如 Ema
  • 【JavaWeb】JSP使用Session、Cookie实现购物车

    购物界面shop jsp 初始页面 添加商品后 在session中设置属性 重定向回到shop jsp 然后根据session的内容显示结果 Cookie设置setMaxAge可以延长session的寿命 清空购物车就是清除session
  • 基于以太坊的USDT(基于ERC-20协议发行)

    这种USDT存储在以太坊地址上 相对应的 每次转账 链上转账 时 需要消耗Gas 也就是ETH 目前 市场上的USDT绝大部分是基于比特币的USDT 基于以太坊的USDT份额很低 约3 基于TRON网络TRC20协议的USDT 存储在TRO
  • 当心互联网抢了你的饭碗

    两年前 供职于帕洛阿尔托研究中心 Palo Alto Research Center 的学者布莱恩 亚瑟 Brian Arthur 做出了一项惊人预测 未来二三十年 西方数字网络履行的功能最终将相当于美国 实体 经济的规模 亚瑟写道 或者
  • Qt 信号和槽学习

    使用一个按钮按下时 我们可能想要窗口的 close 函数被调用 这个操作可以通过设置回调函数实现 但回调函数不够直观 而且容易出现参数类型错误等问题 Qt中使用的代替方案是信号和槽机制 信号和槽 当特定的事件出现时 一个信号被发出 槽函数作
  • 探索Java8——Lambda方法引用

    管中窥豹 方法引用让你可以重复使用现有的方法定义 并像Lambda一样传递它们 在一些情况下 比起使用Lambda表达式 它们似乎更易读 感觉也更自然 inventory sort Apple a1 Apple a2 gt a1 getWe
  • 数字孪生万亿市场显现,缺的不止是硬件落地

    数字孪生是从真实世界到虚拟世界的1 1映射 它通过控制虚拟世界中的生产过程和生产设备 模拟现实世界中的工业生产 更加注重 从虚拟到真实 工业元宇宙所反映的虚拟世界不仅具有现实世界的映射 而且具有现实世界中尚未实现甚至无法实现的体验和互动 这
  • Python实现发送邮件

    SMTP模块发送普通邮件 import smtplib from email mime text import MIMEText from email header import Header 发送方邮箱 msg from 授权码 pass
  • 实习周记1:跨vlan通信

    跨vlan通信 1 拓扑图 2 要求 不同vlan的两台pc通过二层交换机实现二层互通 3 命令 H3C GigabitEthernet2 0 1 port link type hybrid 把端口模式改为hydrid H3C Gigabi
  • Sybase服务无法启动

    刚刚改完数据库的最大连接数 重启服务时 却发现服务无法启动 找了大半天的原因 终于找到了 可惜不会弄 只好有网上搜索一下 发现这种问题还比较常见 服务起不来 在应用程序事件查看器中发现有如下错误 300122 The value of th
  • 工程师的基本素质

    昨天开会 印象最为深刻的是领导的这么一句话 工程师的基本素质 专注 专心 责任 放心 真的 我没有真正意识到并做到这些 所以对于人的准则的教育是必须的 要让人认识到 职责所在 用心做事 愧对自己 洗心革面矣
  • 【调制BFSK】二进制频移键控FSK的数字调制(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 相移键控 PS K 是利用载波相位直接表示
  • python给图片添加水印图片_python 给图片添加数字水印示例

    实例简介 实例截图 核心代码 coding utf 8 Spyder Editor This is a temporary script file from PIL import Image import numpy as np count
  • pycuda学习笔记(二)

    1 pycuda driver LogicError cuDeviceGet failed initialization error报错怎么办 Traceback most recent call last File usr lib pyt
  • 0-1背包问题:动态规划的经典应用

    文章目录 引言 背包问题简介 0 1背包问题定义 0 1背包问题的限制条件 动态规划解决思路 状态定义 状态转移方程 背包问题的Java实现 示例与分析 总结 引言 背包问题是在给定一组物品和一个背包容量的情况下 如何选择物品放入背包 以使
  • 人工智能里有至简的优雅吗?

    我很喜欢这首古诗 静夜思 唐 李白 床前明月光 疑是地上霜 举头望明月 低头思故乡 二十个简单汉字 勾画出生动的画面 并在无数人心里掀起波澜 物理学里 爱因斯坦用5个符号 简单到不能再简单 揭示了我们的世界的规律 目光转回我的本行 我在模式
  • 一文搞定全进程间通讯(IPC)八大方式-管道、命名管道、信号、信号量、消息队列、共享内存+内存映射、套接字

    目录 进程间通讯 IPC UNIX IPC 管道 Pipe 命名管道 FIFO 信号 Signal System V IPC 信号量 Semaphore 消息列队 Message Queue 共享内存 Shared Memory IPC 额
  • linux 中增加路由(route)命令详解

    linux route 命令 route n显示现在所有路由 root Ubuntu route 结果是自上而下 就是说 哪条在前面 哪条就有优先 前面都没有 就用最后一条default 添加一条路由 发往192 168 62这个网段的全部
  • 代码走查该走查什么

    代码走查在很多公司都是一个必要的过程 但是很多时候却时候一个形同虚设的过程 通常检查的同事只要保证你的代码能够编译通过 不出现问题就pass了 到底代码走查有没有一定的规范性呢 如果公司是严格按照开发流程来的话 那么代码走查可能也会是下图中

随机推荐