《TCP/IP详解 卷一》第6章 DHCP

目录

6.1 引言

6.2 DHCP

6.2.1 地址池和租用

6.2.2 DHCP和BOOTP消息格式

6.2.3 DHCP和BOOTP选项

6.2.4 DHCP协议操作

6.2.5 DHCPv6

6.2.6 DCHP中继

6.2.7 DHCP认证

6.2.8 重新配置扩展

6.2.9 快速确认

6.2.10 位置信息(LCI和LoST)

6.2.11 移动和切换信息(MoS和ANDSF)

6.2.12 DHCP嗅探

6.3 无状态地址自动配置

6.4 DHCP 和 DNS 交互

6.5 以太网上的PPP

6.6 与系统配置相关的攻击

6.7 总结


6.1 引言

获取IP方式:

        DHCP

        IPv6无状态地址自动配置(SLAAC,Stateless Address Autoconfiguration)

        ISP+PPPoE拨号

VoIP(Voice over Internet Protocol):

        一种通信技术。

        将语音转换数字,并通过IP网络传输的技术。

        用途:各种即时通讯应用程序。如Skype、WhatsApp、Zoom、微信电话等。

SIP(Session Initiation Protocol):

        一种通信协议。

        SIP定义了一套信令,用于终端之间会话控制和协商,包括会话建立、维护和结束会话。

        SIP通常用于VoIP系统中作为信令协议,负责处理呼叫建立、呼叫转移、状态更新等任务。

     

        使用SIP地址标识终端设备。类似于电子邮件地址。

VoIP和SIP总结:

        VoIP技术使用SIP协议进行会话控制和信令交换。

6.2 DHCP

DHCP:分配IPv4地址,源于BOOTP,客户端端口68,服务器端口67。

DHCPv6:分配IPv6地址。

DHCP分配方式:

        自动分配:从地址池中分配,IP地址根据客户端MAC绑定关系来分配。

        动态分配:从地址池中分配,客户端每次分配的IP可能不一样。

        手动分配:不从地址池中分配。

6.2.1 地址池和租用

DHCP服务器将租用信息保存在持久性存储器中。即使重启DHCP服务器,租约完好。

6.2.2 DHCP和BOOTP消息格式

BOOTP是DHCP的前身。

DHCP报文格式:

Op(op code):表示报文类型。

        值为1:客户端请求报文。

        值为2:服务器响应报文。

htype:硬件类型,以太网时值为1。

hlen:硬件地址长度,以太网时值为6。

hops:跳数,DHCP报文经过的中继数量。每经过一个路由器,值加1。若同网段则不经过路由器,值为0。

xid:事务ID。DHC客户端发起请求时设置的随机数,服务器响应报文复制该值,用于匹配请求和响应报文。

secs:DHCP客户端从获取到IP地址或续约开始到现在的时间,单位秒。获得IP地址之前均为0。

flags:只使用bit0,用来标识DHCP服务器应答报文是单播还是广播发送。0:单播,1:广播。

ciaddr:DHCP客户端的IP地址。仅用于DHCP服务器发送的ACK报文,在其他报文为0。因为DHCP服务器确认前,DHCP客户端还没有分配到IP。

yiaddr:DHCP服务器分配给客户端的IP地址。仅用于DHCP服务器发送的Offer和ACK报文,其他报文为0。

siaddr:为DHCP客户端分配IP地址等信息的其他DHCP服务器IP地址。仅在DHCP Offer、DHCP ACK报文中显示,其他报文中显示为0。

Giaddr:DHCP客户端请求报文后经过的第一个DHCP中继IP(跨网段)。如果不经过DHCP中继, 则为0。

Chaddr:DHCP客户端的MAC地址。

Sname:为DHCP客户端分配IP的DHCP服务器名称。在Offer和ACK报文中显示,其他报文为0。

File:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径。仅在DHCP Offer报文中显示,其他报文为空。

Options:可选项字段,长度可变,格式为"代码+长度+数据"。

        详细在下节结束。

6.2.3 DHCP和BOOTP选项

子网掩码:Option Code 1

        用于指定客户端设备所在子网的掩码。

网关:Option Code 3

        给提供客户端网关IP。

域名服务器:Option Code 6

        给客户端提供一个或多个 DNS 服务器的IP。

主机名:Option Code 12

        客户端向DHCP服务器提供其主机名。

域名:Option Code 15

        指定DHCP客户端的DNS域名。

IP地址租用时间 (Lease Time) :Option Code 51

        指定为客户端分配的IP的租用时间,以秒为单位。

DHCP消息类型:Option Code 53

        指定DHCP消息类型,如Discover、Offer、Request、Decline等。

DHCP服务器标识:Option Code 54

        用于给DHCP客户端分配IP的服务器的IP地址。

参数请求列表:Option Code 55

        客户端使用该选项告知DHCP服务器请求的配置参数,如子网掩码、网关、DNS 服务器等。

更新服务器 (Renewal Time Value) - Option Code 58

        指定客户端应尝试更新其租用的IP地址的时间,以秒为单位。

其中DHCP消息类型选项(Option Code 53):

        每个DHCP消息都需要使用,可能值:

                DHCPDISCOVER(1)、DHCPOFFER(2)、DHCPREQUEST(3)、

                DHCPDECLINE(4)、 DHCPACK(5)、DHCPNAK(6)、DHCPRELEASE(7)

                DHCPINFORM(8)、DHCPFORCE- RENEW(9),DHCPLEASEQUERY(10)

                DHCPLEASEUNASSIGNED(11),DHCPLEASEUNKNOWN(12),DHCPLEASEACTIVE(13)

6.2.4 DHCP协议操作

DHCPOFFER报文中Your IP address字段是DHCP服务器提供的IP地址。

DHCPOFFER消息中包含租约时间(T),更新时间(T1),重新绑定时间(T2)。

        租约时间:Lease Time,值为定时器T,即不更新租约情况下IP地址可使用时间上限。

        更新时间:Renewal Time,值为定时器T1,即客户机经过多久尝试向服务器请求更新租约时间。

        重新绑定时间:Rebinding Tim,值为定时器T2,即客户机当前地址租约即将过期,向服务器请求更新地址。

        默认时,T1 =(T/2),T2=(7T/8)

客户端分配到IP地址后,可向该IP发送ARP请求,来检测IP是否冲突,若发现冲突则向服务器发送DHCP DECLINE,拒绝该IP。

DHCP INFORM:用于向DHCP服务器请求特定的配置信息,但并不请求分配IP地址。

FQDN:Fully Qualified Domain Name ,完全限定域名。互联网上唯一标识设备的域名。

        包含完整域名层级结构,从右到左依次表示主机名、子域名、顶级域名和根域名。

        如:www.example.com

windows命令:

        释放当前IP:ipconfig /release

        重新获取IP:ipconfig /renew

        可触发DHCP分配IP的流程,方便抓包学习。

DHCP客户端状态机:

6.2.5 DHCPv6

IPv6四种IP分置方式:

        静态

        SLAAC: 无状态地址自动配置,无法分配DNS

        无状态DHCPv6: 分配地址前缀,网关,DNS

        有状态DHCPv6: 分配IP,网关,DNS

SLAAC:

        Stateless Address Autoconfiguration,无状态地址自动配置。

        特点:简单,无需DHCPv6服务器。

        工作原理:

                IPv6路由器周期向本地链路所有主机发送路由器通告RA消息,其中包含网络前缀和其他网络配置。

                主机根据RA消息中的网络前缀和接口标识符Interface ID(即MAC地址)生成一个唯一的IPv6地址。

                然后进行IPv6地址冲突检测。

                SLAAC本身不提供其他网络参数(如DNS服务器、默认网关等),但是路由器通告RA中通常会包含该配置。此外主机还可用DHCPv6获取额外参数。

        接口标识符:由EUI-64生成,即根据MAC或者随机(windows)生成,MAC 中插入FFFE,最后从左到右的第七位翻转。

无状态DHCPv6:

        此时DHCPv6服务器不用于提供IPv6地址,而是提供其他网络配置信息,如 DNS、域名、NTP服务器等。

        因为常与SLAAC协同使用,SLAAC为客户端分配IPv6地址,而无状态DHCPv6提供其他网络配置参数。

Radvd(Router Advertisement Daemon):。一个周期发送IPv6路由通告RA报文的守护程序,RA报文中包含网络前缀、默认路由,其他配置(如MTU、邻居发现信息)。

ICMPv6报文类型包括:

        回显请求/响应: Echo Request/Reply

                作用:ping

        邻居请求/邻居通告: Neighbor Solicitation/Advertisement

                作用:查询邻居的IPv6地址,类似ARP。

                        确认其可达性

                        地址冲突检测

        路由器请求/路由器通告:Router Solicitation/Advertisement

                作用:请求/发送路由器的配置信息

        重定向: Redirect

                作用:用于通知主机将包路由到更优路径,优化包传输。

        参数问题: Parameter Problem

                作用:用于通知发送方包中某些字段或选项存在问题。

        报文过大:Packet Too Big

                作用:用于通知发送方包过大,无法传输。

      

        超时:Time Exceeded

                作用:TTL为0时,用于通知源主机。

        目的地不可达:Destination Unreachable

                作用:用于通知源主机目的地不可达,包括网络不可达、端口不可达等。

两种DHCPv6消息格式:

        1. 常规:客户端/服务器使用。

        2. 中继代理使用。

DUID:DHCP唯一标识符,用于标识客户端或服务器,全球唯一。通常基于设备硬件地址、时间戳、随机数等生成。

DHCPv6分配流程

DAD:重复地址检测,通过向该地址发送IPv6邻居请求NS实现。

客户机获得IPv6地址方式是DHCP还是SLACC?

        取决于客户机接收的ICMPv6路由器通告RA中配置选项。

        即根据RA消息中M位,O位字段:

                M位:即Managed Address Configuration Flag,表示通过DHCPv6获得IPv6地址。

                O位:即Other Configuration Flag。

                        表示除IPv6地址外的配置可使用DHCPv6获得。

M和O组合方式:

        M=1,O=1:使用DHCPv6分配地址和其他配置信息。

        M=1,O=0:使用DHCPv6分配地址,但其他配置通过其他方式获取。

        M=0,O=1:不使用DHCPv6分配地址,但其他配置信息通过DHCPv6获取。

        M=0,O=0:不使用DHCPv6分配地址和其他配置信息,通过其他方式获取。

DHCPv6 SOLICIT

        作用:用于DHCPv6客户端向服务器请求地址分配或前缀分配。

DHCPv6 ADVERTISE

        作用:用于DHCPv6服务器向客户端分配IPv6地址和网络配置信息。

6.2.6 DCHP中继

DHCP中继代理:

        使用场景:跨网段时分配IP地址。

流程:

        1. DHCP客户端向DHCP中继发送DHCP请求包,而 DHCP中继收到广播包后,再以单播形式发给DHCP服务器。

        2. 服务器端再向DHCP中继返回应答,并由DHCP中继将此包广播给DHCP客户端。

DHCP中继:仅中继IPv4广播或IPv6组播流量。

如何实现DHCP中继功能?

        开启DHCP Option 82选项,即RAIO选项。

        RAIO:Relay Agent Information Option,中继代理信息选项。

6.2.7 DHCP认证

使用较少。

认证选项:用于确定DHCP消息来自授权的发送方。

6.2.8 重新配置扩展

允许服务器主动触发客户端更新租约。

作用:当网络状态改变时,使客户端重新获得地址或丢弃原来地址。

6.2.9 快速确认

允许DHCP服务器通过DHCP ACK响应DHCP DISCOVER消息,跳过标准流程中的DHCP OFFER和REQUEST消息。

目的:用于加快DHCP客户端获取IP地址和配置的过程。

使用场景:

        移动网络中设备频繁切换网络,用于减少IP地址分配延迟。

        大规模网络中,大量设备请求IP。减少DHCP消息数量和交换时间,提高网络性能。

        降低延迟,如VoIP或视频流。

Linux如何开启DHCP快速确认:

        客户端:如dhclient,配置文件/etc/dhcp/dhclient.conf中添加:

                send dhcp-requested-address 1;

                request dhcp6 rapid-commit;

        服务器:如dhcpcd,配置文件/etc/dhcpcd.conf中添加:

                option rapid_commit;

6.2.10 位置信息(LCI和LoST)

LCI(Location Configuration Information):位置配置信息

        一种DHCPv6选项。

        用于在DHCPv6中传递客户端位置信息。如地理坐标、楼层号、建筑物名称、部门名等。

        这样便服务器可根据位置信息为客户端分配适当的 IP 地址和配置参数。

LoST(Location-to-Service Translation):位置到服务转换。

        一种协议。

        用于根据位置信息确定最近的服务节点的地址。

        使用场景:

                紧急呼叫:移动网络中,当用户拨打救急电话是,可根据用户位置信息确定最近的紧急呼叫中心地址,从而将呼叫路由到最近接收方。

                广告投送:LoST帮助广告商根据用户位置向其传递相关广告。

                网络管理:LoST帮助网络管理员根据设备位置动态调整访问控制策略。

6.2.11 移动和切换信息(MoS和ANDSF)

用于移动蜂窝网络中的两个DHCP选项。

MoS (Mobile Operator Service):

        作用:用于指定移动运营商提供的服务信息。

ANDSF (Access Network Discovery and Selection Function):

        即接入网发现和选择功能。

        作用:允许移动设备发现和选择最佳的接入网络。

6.2.12 DHCP嗅探

即DHCP Snooping,一种交换机功能。

作用:检查DHCP消息内容,实现ACL管理DHCP流量,防攻击。

6.3 无状态地址自动配置

IPv4:从链路本地范围169.254.1.1至169.254.254.254使用16位子网,掩码255.255.0.0随机选择IPv4地址,并使用IPv4 ACD检测冲突

IPv6 SLAAC:自动配置的地址可以是链路本地IPv6地址,但主要还是全球单播地址。

IPv6 SLAAC自动配置链路本地地址

        前缀fe80::0+随机数,或前缀fe80::0+接口标识符(MAC地址)

下面重点讲SLAAC如何自动配置全球单播地址。

IPv6 SLAAC配置流程:

        设备发送路由器请求消息RS到本地链路多播地址FF02::。

        路由器收到RS消息后,向本地链路多播地址FF02::回复路由器通告消息RA。

        设备收到RA消息后,获取其中IPv6网络前缀。

        设备将网络前缀和其接口标识符(通常是MAC地址)结合生成IPv6地址。

设备通常还需要DHCPv6获取默认网关,DNS服务器等信息。

所以常见部署:SLAAC + DHCPv6 = 无状态DHCPv6,此时DHCPv6来获得配置信息,不用来获得IP。

配置好IPv6地址后,还需进行DAD(重复地址检测):

        DAD方法:向该地址发送邻居请求NS消息,如果没有收到邻居通告NA消息。则说明IPv6地址没有冲突。

小结:

        全球单播地址的IPv6 SLAAC

                路由器发送ICMPv6 RA,其中提供前缀,首选/有效生命周期,DNS服务器等。

                IPv6地址=前缀+接口标识符(MAC)。

        无状态的DHCPv6

                不提供地址,只用于提供配置信息。

        所以SLAAC和DHCPv6结合即可,完成IP地址+配置信息。

Linux、Windows 可以设置禁止系统给自己分配169.254/16的IP,因为这个IP没用。

IPv6全局地址禁用SLAAC两种方法:

        1. 在本地路由器RA消息的前缀选项中关闭自动标志,即之前说的M/O标志。

        2. 命令禁止全局地址自动配置。如sysctl -w net.ipv6.conf.all.autoconf=0

6.4 DHCP 和 DNS 交互

dnsmasq程序同时实现了DHCP,DNS服务器功能。

6.5 以太网上的PPP

PPP over Ethernet:PPPoE

下图可知,DSL调制解调器起到了网桥作用。

DSL调制解调器作用:数字信号转与模拟信号互相转换。

PPPoE优点:PPP协议提供了比DHCP更细致的配置控制和审计日志,方便计费。

DSL提供点到点数字链路,可与传统模拟电话线同时工作。

PPPoE通信:

        1. 发现阶段 以太网类型为0x8863

                PADI(PPPoE Active Discovery Initiation)初始化

                PADO(PPPoE Active Discovery Offer)提供

                PADR(PPPoE Active Discovery Request)请求

                PADS(PPPoE Active Discovery Session-confirmation)会话确认

                PADT(PPPoE Active Discovery Terminate)会话终止

        2. PPP会话阶段 以太网类型为0x8864

PPPoE具体流程可看我的文章

        PPP & PPPoE & L2TP & PPTP 一文全介绍_冫。。。ptptppp-CSDN博客

6.6 与系统配置相关的攻击

6.7 总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity Shader ASE基础效果思路与代码(二):边缘光、扰动火焰

Unity Shader ASE基础效果思路与代码(二):边缘光、扰动火焰 这里写目录标题 Unity Shader ASE基础效果思路与代码(二):边缘光、扰动火焰边缘光效果展示:代码与思路: 扰动火焰效果展示:代码与思路: 边缘光 …

snmp协议开通教程

目录 一、什么是snmp协议? 二、snmp协议可以用来干什么? 三、snmp协议的开通 1、snmpv2协议开通 2、snmpv3协议开通 一、什么是snmp协议? SNMP(Simple Network Management Protocol)是一种用于网络管理的标准协议&a…

STM32物联网(封装AT指令进行TCP连接及数据的接收和发送)

文章目录 前言一、AT指令函数封装1.向ESP8266发送数据函数2.设置ESP8266工作模式3.连接WIFI函数4.查询IP地址5.连接TCP服务器6.发送数据到TCP服务器7.接收并解析来自TCP服务器的数据8.关闭TCP服务器 二、代码测试总结 前言 本篇文章将继续带大家学习STM32物联网,那…

Vue 2.0 中的 Vuex Store 状态管理器核心概念和组成部分

Vue 2.0 中的 Vuex Store 状态管理器核心概念和组成部分 State(状态): Vuex Store 的核心就是集中式存储应用的所有组件的状态。它是一个单一状态树,所有的组件都从这个状态树中读取数据并可以响应状态的变化。 const state {c…

Ubuntu20.04 查看系统版本号

目录 uname -auname -vlsb_release -acat /etc/issuecat /proc/version uname -a 查看系统发行版本号和操作系统版本 uname -v 查看版本号 lsb_release -a 查看发行版本信息 cat /etc/issue 查看系统版本 cat /proc/version 查看内核的版本号

计算机网络面经_体系结构一文说清

编辑:平平无奇的羊 目录 基础 1. 计算机网络结构体系 三种模型之间的区别: 如何背诵: 进阶 OSI七层模型: TCP/IP四层模型: TCP/IP五层模型 总结 字节实习生为大家带来的是计算机网络面经系列博文,由浅…

分散的产品开发团队

分散的产品开发团队指的是各个团队或成员在地理位置上分布在不同地方,通过互联网和现代通讯技术进行协作和沟通,以共同完成产品开发任务的团队模式。 这种团队模式的优势在于可以充分利用各地的人才资源,降低团队的管理和协作成本&#xff0…

SpringBoot和SpringCloud的区别,使用微服务的好处和缺点

SpringBoot是一个用于快速开发单个Spring应用程序的框架,通过提供默认配置和约定大于配置的方式,快速搭建基于Spring的应用。让程序员更专注于业务逻辑的编写,不需要过多关注配置细节。可以看成是一种快速搭建房子的工具包,不用从…

ThreeJS 几何体顶点position、法向量normal及uv坐标 | UV映射 - 法向量 - 包围盒

文章目录 几何体的顶点position、法向量normal及uv坐标UV映射UV坐标系UV坐标与顶点坐标设置UV坐标案例1:使用PlaneGeometry创建平面缓存几何体案例2:使用BufferGeometry创建平面缓存几何体 法向量 - 顶点法向量光照计算案例1:不设置顶点法向量…

探讨javascript中运算符优先级

如果阅读有疑问的话,欢迎评论或私信!! 本人会很热心的阐述自己的想法!谢谢!!! 文章目录 深入理解JavaScript运算符优先级运算符优先级概述示例演示示例1:加法和乘法运算符的优先级示…

CentOS7 安装Python3.8

在 CentOS 7 上,按照以下步骤安装 Python 3.8: 添加EPEL仓库:首先安装 EPEL(Extra Packages for Enterprise Linux)仓库 sudo yum install epel-release安装Software Collections (SCL)仓库:随后&#xff0…

【坑】Spring Boot整合MyBatis,一级缓存失效

一、Spring Boot整合MyBatis,一级缓存失效 1.1、概述 MyBatis一级缓存的作用域是同一个SqlSession,在同一个SqlSession中执行两次相同的查询,第一次执行完毕后,Mybatis会将查询到的数据缓存起来(缓存到内存中&#xf…

证件照(兼容H5,APP,小程序)

证件照由uniappuyui开发完成&#xff0c;并同时兼容H5、App、微信小程序、支付宝小程序&#xff0c;其他端暂未测试。 先看部分效果图吧具体可以下方复制链接体验demo 首页代码 <template><view class""><view class"uy-m-x-30 uy-m-b-20"…

Redis 事务机制之ACID属性

事务属性 事务是对数据库进行读写的一系列操作。在事务执行时提供ACID属性保证&#xff1a; 包括原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability&#xff09;…

如何申请代码签名证书?

代码签名证书是一种关键的数字证书&#xff0c;它的功能在于为软件代码提供安全签名和验证服务&#xff0c;从而提升软件整体的安全性和用户信任度。获取代码签名证书的过程通常涉及多个严谨步骤&#xff0c;确保通过正式流程获得的证书能有效加强软件完整性和真实性保护。以下…

Innodb底层原理与Mysql日志机制深入剖析

MySQL的内部组件结构 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分。 Server层 主要包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数学和加密函…

华为配置WDS手拉手业务示例

配置WDS手拉手业务示例 组网图形 图1 配置WDS手拉手业务示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。但企业考虑到AP通过有线部署的成本较高&#xff0c;所以通过建立…

Android 开发一个耳返程序(录音,实时播放)

本文目录 点击直达 Android 开发一个耳返程序程序编写1. 配置 AndroidManifast.xml2.编写耳返管理器3. 录音权限申请4. 使用注意 最后我还有一句话要说怕相思&#xff0c;已相思&#xff0c;轮到相思没处辞&#xff0c;眉间露一丝 Android 开发一个耳返程序 耳返程序是声音录入…

内容检索(2024.02.23)

随着创作数量的增加&#xff0c;博客文章所涉及的内容越来越庞杂&#xff0c;为了更为方便地阅读&#xff0c;后续更新发布的文章将陆续在此汇总并附上原文链接&#xff0c;感兴趣的小伙伴们可持续关注文章发布动态&#xff01; 本期更新内容&#xff1a; 1. 电磁兼容理论与实…

fpga_cpu加速

一 cpu流水线执行指令 二 计算机体系结构 注&#xff1a;ARM就是典型的哈佛结构 三 cpu加速 同样采用流水线&#xff0c;哈佛结构的指令效率更高&#xff0c;通过指令预取&#xff0c;提高了流水线的并行度。