前言
本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。
这篇博客是在B站掌芝士zzs这个UP主的视频的总结,讲的非常好。
可以先去看一篇视频,再来参考这篇笔记(或者说直接偷走)。
一条视频讲清楚什么是DHCP协议-电脑是如何自动获取IP的_哔哩哔哩_bilibili
前篇
- 计算机网络——MAC地址和IP地址-CSDN博客
- 计算机网络——交换机和路由器-CSDN博客
- 计算机网络——网络地址转换(NAT)技术-CSDN博客
- 计算机网络——TCP和UDP协议-CSDN博客
引言
我们每天都在使用手机、电脑、pad或者是智能电视、游戏机等一系列电子设备连接到网络中。想必大家都知道,网络中的每一个设备都拥有一个子网络中独一无二的IP地址,以用来作为网络中通信的唯一标识。那么你知道每个设备的IP地址是如何得到的吗?他们又是如何保证不冲突的呢?也许有的同学已经知道了是通过DHCP协议得到的,那么DHCP协议又是如何工作的呢?
设置IP地址的两种方式
第一种方式就是手动设置自己指定IP地址、子网掩码、网关等信息。
这种方式的好处就是可以根据自己的规划配置每台设备的固定。IP有利于对网络的统一管理。比如对于一个拥有1000台服务器的集群,网络管理员需要根据设备编号对每台设备设置固定IP。
第二种方式,动态获取的方式。使用手机或者个人电脑的用户根本不需要关心自己的IP地址是什么,自动帮我分配一个可用的IP就好了。
DHCP协议流程
我们就以家庭网络为例,你的电脑通过网线连接到了路由器上当电脑开机进入操作系统后,此时其还没有IP地址。
操作系统会使用UDP协议,通过68端口将67端口广播一包DHCP discover数据包,用来寻找DHCP服务器。
由于这是一个广播数据包,所以网络中的所有设备都会收到这一包数据。但是只有DHCP服务器才会做出响应。
在家庭网络中,路由器就是DHCP服务器的角色。
他收到DHCP discover数据包后,知道网络中有设备需要分配IP地址。所以他需要在自己的IP地址池中拿到一个空闲IP,比如192.168.10,并决定把这个IP地址分配给PC路由器,会把此IP封装成一包DHCP offer包,回复给我们的PC。
PC收到DHCP offer包后,要决定用不用这个IP地址。因为假设网络中有多个DHCP服务器,他们有可能会同时收到多个DHCP discover包,各自分配IP地址后回复DHCP offer包。
此时PC会收到多个Offer包,他要决定用哪一个IP地址。一般情况下都是用收到的第一个IP地址。
决定好后,PC会向网络中广播自己的决定,通知路由器接受了其分配的IP地址。这一包称为DHCP request包,路由器收到request包后会回复给PC一包DHCP ACK包,表示已经接受了PC的选择,可以使用此IP地址。此时PC拥有了自己的IP地址。
以上四步就是DHCP获取IP地址的完整流程。
不过前两步并不是必须的当PC重启后,PC无需重新获取IP地址,只需要再次确认就可以了。
就是从第三步开始发送DHCP request包,直接请求使用此IP。
DHCP服务器需要检查此IP是否可用,若可以使用,则直接回复DHCP ack包,确认PC可以继续使用此IP地址。
若不可用,比如此IP已被其他设备占用,则回复DHCP nack(否定应答(Negative Acknowledgement))包拒绝申请。此时PC需要从DHCP discover开始再来一次完整的申请流程。
家庭网络中的其他设备,包括通过网线连接路由器的电脑,以及通过wifi连接的手机、电视、游戏机等,都是通过以上的步骤获取IP地址的。
获取IP地址后,他们就可以在网络中互相通信了。