网络层(9) DHCP协议 ICMP协议
一、DHCP协议
动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。
DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器,允许地址重用,支持移动用户加入网络,支持在用地址续租。
DHCP协议工作过程:
(1)发现阶段:DHCP客户端在网络中广播Dhcpdiscover请求报文,用于发现DHCP服务器,请求IP地址租约。
(2)提供阶段:DHCP服务器通过广播Dhcpoffer报文向DHCP客户端提供IP地址预分配。
(3)选择阶段:DHCP客户端通过广播Dhcprequest报文确认选择一个DHCP服务器为它提供IP地址。
(4)确认阶段:DHCP服务器通过广播DhcpACK报文把客户端请求的IP地址分配给用户,并更新租用信息。
如果客户端检测到被分配的地址冲突,向服务器发送Dhcpdecline信息,拒绝使用该地址。
当租期到50%时,客户端发Dhcprequest报文续约,如续约失败,87.5%再次续约,到期未完成续约,重新进行DHCP过程。
注:
DHCP租约默认为8天,当租期超过一半时(4天),DHCP客户端会向DHCP服务器续约,续约完成后还是8天,续约发送的报文是DHCPRequest,如要第一次续约失败,87.25%时再次续约;
如果自动续约失败,DHCP获取失败会得到169.254.0.0/16的地址。
思科DHCP服务器回包是广播,华为DHCP服务器回包是单播。
DHCP中继的过程
二、ICMP协议
Internet 控制消息协议 ICMP(Internet Control Message Protocol)是IP协议的辅助协议。
ICMP协议用来在网络设备间传递各种差错和控制信息,对于收信各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
ICMP数据报结构:
ICMP报文封装在IP数据报的数据部分进行传输。
1、类型(8bit):指ICMP报文是哪种类型的。
2、代码(8bit):代码用于区分某种类型的不同情况。
3、检验和(16bit):用于检测整个ICMP报文。
4、由类型决定的(32bit):由类型字段决定。
5、ICMP的数据部分(32bit):由类型字段决定。
ICMP报文的两种类型,分别是ICMP差错报文、ICMP询问报文。
1、ICMP 五种差错报文:
(1)终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。即无法交付。
(2)源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。即拥塞丢数据。
(3)时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片全部丢弃,并向源点发送时间超过报文。即TTL=0 或 数据报片不完整。
(4)参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。即首部字段出问题。
(5)改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
ICMP差错数据报的结构:
不发送ICMP差错报文的情况
(1)对ICMP差错报告报文不再发送ICMP差错报告报文。
(2)只对第一个分片的数据报片的错误发送错误报告,所有后续数据报片错误都不发送ICMP差错报告报文。
(3)对具有组播地址的数据报都不发送ICMP差错报告报文。
(4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
2、ICMP询问报文
(1)回送请求和回答报文
主机或路由器向特定目的的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。如PING命令,测试目的站是否可达以及了解其相关状态。
(2)时间戳请求和回答报文
请某个主机或路由器回答当前的日期和时间。主要用于进行时钟的同步。
(3)掩码地址请求和回答报文
(4)路由器询问和通告报文
ICMP的应用
Ping命令,测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。
Tracert命令,基于报文头中的TTL值来逐跳跟踪报文的转发路径。Tracert是检测网络丢包和时延的有效手段,同时可以帮助管理员发现网络中的路由环路。跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
2013-07-02 IE无法安装Activex控件