DHCP协议简述

DHCP协议简述DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCPServer…

大家好,又见面了,我是你们的朋友全栈君。

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。
–以上内容来自百度百科

  • dhcp主要用于通过DHCP服务器(一般是路由器)给局域网中的主机分配IP地址。其过程是:

    1、主机首次接入局域网链路时(此时主机还没有IP地址)发一个DHCP协议的广播消息,要求DHCP服务器分配IP地址;
    2、DHCP服务器收到广播消息后,取出一个IP地址并通过ICMP确认该地址暂未被使用后,通知主机使用改地址;
    3、主机在使用IP地址前,先发一个ARP协议的广播消息,在确认该地址未被使用后向DHCP服务器发送消息说明我要使用改地址;
    4、DHCP服务器向主机发送消息–允许你使用该地址。

  • 下面通过抓包简要分析一下该过程:
    1、主机首次发广播消息,源地址为:0.0.0.0,广播地址为:255.255.255.255;
    主机首次发包
    传输层:将DHCP包通过UDP发送,源端口68(客户端),目标端口67(服务端);
    UDP数据包
    网络层:此时主机暂未被分配IP地址,源地址:0.0.0.0,目标地址:255.255.255.255。(IP地址的主机号全为0表示为网络地址(??),主机号全为1表示广播地址);
    IP数据报
    链路层:在链路层将IP数据报封装成MAC帧,源地址:主机MAC地址,目标地址:ff:ff:ff:ff:ff:ff:ff(广播地址)。
    链路层

2、第二步:DHCP服务器发送ICMP广播,询问要分配的IP地址有没有人在使用,然后回送DHCP消息(单播?),告诉你的IP地址。
DHCP回送
如下:DHCP报文内容,包含你的IP地址,子网掩码等信息。
DHCP报文内容

3、第三步:主机发送ARP广播,询问该IP有没有人在使用,然后向服务器发送消息,我要使用该IP地址。
arp报文:
ARP包

4、最后,DHCP服务器回送消息,允许你使用该IP地址。至此,IP分配完毕。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142178.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月24日 上午11:20
下一篇 2022年5月24日 上午11:20


相关推荐

  • CPLD与FPGA的区别

    CPLD与FPGA的区别FPGA和CPLD是两种著名的数字逻辑芯片。当涉及到内部架构时,这两种芯片显然是不同的。FPGA:现场可编程门阵列,是一种可编程逻辑芯片。它是一个伟大的芯片,因为它可以被编程去做几乎任何一种数字功能。FPGA的架构允许芯片具有很高的逻辑容量。它被用于设计要求很高的门数和它们的延迟是相当不可预测的,因为它的结构。FPGA被认为是“细粒”,因为它包含了很多可以达到10万的微小逻辑块。这是人组合逻辑和记…

    2022年5月4日
    38
  • pycharm开启自动补全_python代码补全插件

    pycharm开启自动补全_python代码补全插件在使用python时候我们可能更倾向于能够使用到自动补全代码的功能在一段时间的找寻和使用过程中,发现了几种能补全代码的插件和方法吧pycharm中TabNine插件 这个我感觉还能用吧~啧百度kite官网下载kite插件百度aiXcoder插件下载aiXcoder插件GitHub开源项目1.首先第一个TabNine的插件 亲测了一段时间,感觉很一般 如果想体验一下也不是不行 安装插件过程如下: pycharm编译器->File->Settings

    2022年8月27日
    7
  • LaTeX多行公式_latex大括号左对齐

    LaTeX多行公式_latex大括号左对齐LaTeX是一种基于ΤΕΧ的排版系统,其中非常突出的是方便而强大的数学公式排版能力。XMind2020现已支持插入LaTeX数学命令,可实时转化为数学方程。此外还支持部分简单的化学方程,理工科的朋友们从此无需再借助其它应用,在XMind中即可完成方程的输入。今天和大家分享下在XMind中如何用LaTeX输入数学公式。1.插入方程在「插入菜单」中找到方程,点击即可进入方程…

    2022年10月11日
    4
  • python win32api.shellexecute_socket send函数

    python win32api.shellexecute_socket send函数记事本的主窗口中还有一个窗口,您需要向它发送消息。您可以使用MicrosoftSpy++工具查看此“隐藏”窗口,也可以获取所有子窗口,如下所示:defcallback(hwnd,hwnds):ifwin32gui.IsWindowVisible(hwnd)andwin32gui.IsWindowEnabled(hwnd):hwnds[win32gui.GetClassName(hwnd…

    2022年10月11日
    6
  • JS总结1

    JS总结1

    2021年8月10日
    57
  • Echarts网格颜色渐变 + 折线图折线发光高亮效果

    Echarts网格颜色渐变 + 折线图折线发光高亮效果series:里面定义折线发光高亮的效果网格颜色的渐变附上封住代码

    2025年8月12日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号