DHCP——动态主机配置协议
典型C/S架构协议,DHCP客户端使用UDP 68端口号进行通讯。DHCP服务器使用UDP 67号端口通讯。
这里DHCP服务器仅是一个身份角色的概念,因为DHCP本身要求是很低的,任何一台电脑,安装了DHCP服务器对应的应用程序,那台电脑就可以充当DHCP服务器的角色。不等同于真实的设备。不同于DNS服务器需要专业的设备。
DHCP客户端找DHCP服务器要IP协议。封装到四层的时候
Sport:68 Dport:67
DHCP服务器向客户端回数据包。封装到四层的时候
Sport:67 Dport:68
在不同的使用场景有不同的获取方法
第一种场景:DHCP客户端首次获取IP地址
此时不知道谁是DHCP服务器,自身也没有IP。
DHCP客户端发出:DHCP-Discover———广播包
传输层
Sport:68
Dport:67
网络层
SIP:0.0.0.0
DIP:255.255.255.255
数据链路层
SMAC:自身MAC
DMAC:全F
DHCP服务器发出:DHCP-offer———会携带一个可用的IP地址,并暂时会被DHCP客户端保留。(具备单播条件,但可单播也可广播,由某内涵字段决定)
Q:服务器一台,客户端多台,假如是广播包,如何区分谁的——> 有交易码eg:Transaction id 0X00000262f。
Q:暂且保留,防止多个DHCP存在,等待客户端反选
传输层
Sport:67
Dport:68
网络层
SIP:自己的
DIP:0.0.0.0
数据链路层
SMAC:自身MAC
DMAC:全F
DHCP客户端发出:DHCP-request———广播包(具备单播条件,但需要告诉对应服务器反选,且告诉其他服务器反选结果)存在身份字段,表名对某一服务器的反选
关于对DHCP-offer的反选,如果有多个DHCP服务器发送offer包,则DHCP客户端会选择第一个到达的offer。
DHCP服务器发出:DHCP-ACK。(可能单播也有可能广播)此时客户端真正拥有了该IP地址。
第二种场景:DHCP客户端再次获取IP地址
IP地址的所有权始终属于DHCP服务器,
比如设备断电,重新开机获取IP地址,属于该情况。由于设备具备存储功能
DHCP客户端发出:DHCP-request(renew)包(广播包)请求使用过的IP地址。
DHCP服务器发出:DHCP-ACK/DHCP-NACK(该IP地址被占用)
假如收到NACK,则重复第一种场景操作。
DHCP-Release DHCP客户端主动放弃ip地址,还回ip地址
租期————24h(华为设备)体现在offer里
T1时间————租期的百分之50---12h
T2时间————租期的百分之87.5---21h
到T1时间,DHCP客户端联系服务器发出:DHCP-request————单播包
DHCP服务器回复ACK.租期恢复24h
到T2时间,DHCP客户端会以广播包发出:DHCP-request
到租期结束,会释放掉IP重新获取
在客户端获得ip后会发送几次arp请求且目标是自己ip==》用来通知其他设备且检测冲突
路由器最适合充当DHCP服务器
路由器ip通常手动设定基本写死,自身不存在ip获取问题
同时对应多广播域有利于更多设备,辐射面广
访问网站的过程
一.设备接入校园网,通过DHCP协议自动获取IP地址(或者手工获取IP地址)
1.DHCP客户端,发送DHCP-discover包。
SIP:0.0.0.0 DIP:255.255.255.255
SMAC:自己的MAC地址 DMAC:F:F:F:F
交换机的处理:交换机接收到数据帧后 记录源mac与接口的对应关系到MAC地址缓存表。然后查看DMAC地址,发现是广播包进行进行泛洪,发送给除数据帧来源接口外的所有接口。
路由器的处理:此处路由器充当DHCP服务器,首先路由器收到交换机转发的数据帧,查看DMAC是全F的广播包,拆开2层查看3层内容。因为3层头部的目标IP地址,是首先广播地址,路由器将解三层封装。根据三层头部信息,上层协议字段,将解封装后的数据段交给UDP模块进行处理。(我们说路由器是三层设备,是根据路由器转发数据包来说的)。UDP根据目标端口号67,路由器将解封装后的DHCP-discover报文交给对应的DHCP服务进行处理。
2.DHCP服务器发送 DHCP-OFFER包——单播/广播(华为以单播发送,思科以广播发送)
SPORT:67 DPORT:68
SIP:自己的IP地址 DIP:目标的IP(给予的IP地址,或者受限广播地址)
SMAC:自己的MAC地址 DMAC:F:F:F:F
3.DHCP客户端接收到DHCP-OFFER包后,进行反选环节,选择使用第一个到达的包携带的IP地址,发送DHCP-request包——广播包