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

news2024/11/19 15:35:43

目录

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.coloradmin.cn/o/1466536.html

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

相关文章

GPT-SoVITS 快速声音克隆使用案例:webui、api接口

参考: https://github.com/RVC-Boss/GPT-SoVITS 环境: Python 3.10 PyTorch 2.1.2, CUDA 12.0 安装包: 1、使用: 1)下载项目 git clone https://github.com/RVC-Boss/GPT-SoVITS.git2)下载预训练模型 https://huggingface.co/lj1995/GPT-SoVITS 下载模型文件放到GPT…

Vue2响应式原理分析(数据代理与数据劫持)

综述: 我们都知道,每个Vue的应用都是通过new一个Vue构造函数从而创造出来一个vm实例对象,el(elect)配置项为通过id选择器#root选择index页面中的根dom元素进行绑定,data配置项则为vue模板中用到的源数据。 …

python 层次分析(AHP)

文章目录 一、算法原理二、案例分析2.1 构建指标层判断矩阵2.2 求各指标权重2.2.1 算术平均法(和积法)2.2.2 几何平均法(方根法) 2.3 一致性检验2.3.1 求解最大特征根值2.3.2 求解CI、RI、CR值2.3.3 一致性判断 2.4 分别求解方案层…

算法沉淀——FloodFill 算法(leetcode真题剖析)

算法沉淀——FloodFill 算法 01.图像渲染02.岛屿数量03.岛屿的最大面积04.被围绕的区域05.太平洋大西洋水流问题06.扫雷游戏07.衣橱整理 Flood Fill(泛洪填充)算法是一种图像处理的基本算法,用于填充连通区域。该算法通常从一个种子点开始&am…

【DDD】学习笔记-薪资管理系统的测试驱动开发2

测试驱动开发的过程 满足简单设计并编写新的测试 当代码满足重用性和可读性之后,就应遵循简单设计的第四条原则“若无必要,勿增实体”,不要盲目地考虑为其增加新的软件元素。这时,需要暂时停止重构,编写新的测试。 …

2.23数据结构

单向循环链表 创建单向循环链表,创建节点 ,头插,按位置插入,输出,尾删,按位置删除功能 //main.c #include "loop_list.h" int main() {loop_p Hcreate_head();insert_head(H,12);insert_head(…

计算机网络-网络层,运输层,应用层

网络层/网际层 网络层的主要任务包括: 提供逻辑上的端到端通信:网络层负责确定数据的传输路径,使数据能够从源主机传输到目标主机,即实现端到端的通信。数据包的路由和转发:网络层根据目标主机的地址信息&#xff0c…

vue项目使用vue2-org-tree

实现方式 安装依赖 npm i vue2-org-tree使用的vue页面引入 <template><div class"container"><div class"oTree" ><vue2-org-tree name"test":data"data":horizontal"horizontal":collapsable"…

【服务器数据恢复】通过reed-solomon算法恢复raid6数据的案例

服务器数据恢复环境&#xff1a; 一台网站服务器中有一组由6块磁盘组建的RAID6磁盘阵列&#xff0c;操作系统层面运行MySQL数据库和存放一些其他类型文件。 服务器故障&#xff1a; 该服务器在工作过程中&#xff0c;raid6磁盘阵列中有两块磁盘先后离线&#xff0c;不知道是管理…

LabVIEW开发FPGA的高速并行视觉检测系统

LabVIEW开发FPGA的高速并行视觉检测系统 随着智能制造的发展&#xff0c;视觉检测在生产线中扮演着越来越重要的角色&#xff0c;尤其是在质量控制方面。传统的基于PLC的视觉检测系统受限于处理速度和准确性&#xff0c;难以满足当前生产需求的高速和高精度要求。为此&#xf…

【python】yolo目标检测模型转为onnx,及trt/engine模型的tensorrt轻量级模型部署

代码参考&#xff1a; Tianxiaomo/pytorch-YOLOv4: PyTorch ,ONNX and TensorRT implementation of YOLOv4 (github.com)https://github.com/Tianxiaomo/pytorch-YOLOv4这个大佬对于各种模型转化写的很全&#xff0c;然后我根据自己的需求修改了部分源码&#xff0c;稍微简化了…

【区块链】联盟链

区块链中的联盟链 写在最前面**FAQs** 联盟链&#xff1a;区块链技术的新兴力量**联盟链的定义****联盟链的技术架构**共识机制智能合约加密技术身份认证 **联盟链的特点**高效性安全性可控性隐私保护 **联盟链的应用场景****金融服务****供应链管理****身份验证****跨境支付**…

VSCODE include错误 找不到 stdio.h

解决办法&#xff1a; Ctrl Shift P 打开命令面板&#xff0c; 键入 “Select Intellisense Configuration”&#xff08;下图是因为我在写文章之前已经用过这个命令&#xff0c;所以这个历史记录出现在了第一行&#xff09; 再选择“Use gcc.exe ”&#xff08;后面的Foun…

网络原理-TCP/IP(7)

目录 网络层 路由选择 数据链路层 认识以太网 以太网帧格式 认识MAC地址 对比理解MAC地址和IP地址 认识MTU ARP协议 ARP协议的作用 ARP协议工作流程 重要应用层协议DNS(Domain Name System) DNS背景 NAT技术 NAT IP转换过程 NAPT NAT技术的优缺点 网络层 路由…

如何将建筑白模叠加到三维地球上?

​ 通过以下方法可以将建筑白模叠加到三维地球上。 方法/步骤 下载三维地图浏览器 http://www.geosaas.com/download/map3dbrowser.exe&#xff0c;安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“ 3、点击“建筑白模”菜单&…

基于java(Springboot)学生信息管理和新生报到系统设计与实现

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

康威生命游戏

康威生命游戏 康威生命游戏(Conway’s Game of Life)是康威发明的细胞自动机。 生命游戏有几个简单的规则&#xff1a; 细胞有两种状态&#xff0c;存活或死亡&#xff0c;每个细胞以自身为中心与周围的八格细胞互动。 对于存活的细胞&#xff1a; 当周围的细胞过少(<2)或…

C# cass10 面积计算

运行环境Visual Studio 2022 c# cad2016 cass10 通过面积计算得到扩展数据&#xff0c;宗地面积 &#xff0c;房屋占地面积&#xff0c;房屋使用面积 一、主要步骤 获取当前AutoCAD应用中的活动文档、数据库和编辑器对象。创建一个选择过滤器&#xff0c;限制用户只能选择&q…

C#最优队列最小堆小顶堆大顶堆小根堆大根堆PriorityQueue的使用

最优队列有多种叫法&#xff0c;什么小根堆&#xff0c;大根堆&#xff0c;小顶堆&#xff0c;大顶堆。 队列分多种&#xff0c;线性队列&#xff08;简单队列&#xff09;&#xff0c;循环队列&#xff0c;最优队列等等。 最优队列&#xff0c;可以看作堆叠箱子&#xff0c;…

【深度学习】LoRA: Low-Rank Adaptation of Large Language Models,论文解读

文章&#xff1a; https://arxiv.org/abs/2106.09685 文章目录 摘要介绍LoRA的特点什么是低秩适应矩阵&#xff1f;什么是适应阶段&#xff1f;低秩适应矩阵被注入到预训练模型的每一层Transformer结构中&#xff0c;这一步是如何做到的&#xff1f; 摘要 自然语言处理的一个重…