要解决的问题
①无盘工作站启动时如何得到IP地址,网络掩码,默认网关地址,域名服务器地址等.
②临时Internet连接如何分配一个IP地址.
③如何减少配置及其的复杂性.
引导协议
1.RARP的不足
①只能返回IP地址
②RARP请求不会被路由器转发
BOOTP原本是用于无磁盘主机连接网络用的:网络主机使用BOOT ROM而不是磁盘启动并连接上网络,BOOTP则可以自动为那些主机设定TCP/IP环境.
但BOOTP有一个缺点:在设定前须事先获得客户端的硬件地址,BOOTP非常缺乏"动态性",若在有限的IP资源环境中,BOOTP的一一对应会造成非常可观的浪费.
2.BOOTP工作原理
基于UDP,端口号67,68.
无盘启动后,用32位全“1”的有限广播地址在本网广播BOOTP请求报文.
BOOTP服务器有两种响应方式:
单播:在ARP缓存中为请求的及其设一条目,然后将BOOTP响应报文直接发给请求者.
广播:用广播方式发响应.
BOOTP使用超时重传技术.重传使用指数退避策略.
BOOTP要求UDP计算校验和,请求和应答报文都不能分片(适应没有存储区组装数据报的客户).
常与TFTP配合使用.
3.两步引导过程
①BOOTP为客户机提供获取内存映像所需的信息.
②客户机再用TFTP等协议去获取内存映像.
4.报文格式
自举文件名:请求时可指定通用文件名,如UNIX,响应时填入实际的文件名.
特定于厂商的区域:可返回子网掩码,路由器地址,各类服务器地址等信息.
5.如何跨路由器引导
①通常用在本网不能设置BOOTP服务器场合.
②把路由器设置成"中继代理"功能.
③中继代理收到BOOTP请求后,将它的IP地址填到"路由器IP地址"字段,跳数加1,向BOOTP服务器转发(单播).
④服务器的响应过程相反.
跳数为3时一般丢弃该请求
动态主机配置协议DHCP
DHCP 可以说是 BOOTP 的增强版本,它分为两个部份:一个是服务器端,而另一个是客户端.所有的 IP 网络设定数据都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境数据.
比较起 BOOTP ,DHCP 透过 “租约” 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考虑,DHCP 也完全照顾了 BOOTP Client 的需求.
DHCP分配形式
首先必须至少有一台 DHCP 服务器工作在网络上,监听网络的 DHCP 请求,并与客户端搓商 TCP/IP 的设定环境.
DHCP Server提供两种 IP 定位方式:
Automatic Allocation
自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后,就永远使用这个地址.
Dynamic Allocation
动态分配,当 DHCP 第一次从 HDCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用.当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的 IP 地址.
♻️♻️♻️
动态分配显然比自动分配更加灵活,尤其是当您的实际 IP 地址不足的时候,例如:一家 ISP ,只能提供 200 个IP地址用来给拨接客户,但并不意味着您的客户最多只能有 200 个.因为要知道,您的客户们不可能全部同一时间上网的,除了他们各自的行为习惯的不同,也有可能是电话线路的限制.这样,您就可以将这 200 个地址,轮流的租用给拨接上来的客户使用了.这也是为什么当您查看 IP 地址的时候,会因每次拨接而不同的原因了(除非您申请的是一个固定 IP ,通常的 ISP 都可以满足这样的要求,这或许要另外收费).
⚙️⚙️⚙️
DHCP 除了能动态的设定 IP 地址之外,还可以将一些 IP 保留下来给一些特殊用途的机器使用,它可以按照硬件地址来固定的分配 IP 地址,这样可以给您更大的设计空间.
DHCP 还可以帮客户端指定 router、netmask、DNS Server、WINS Server等项目,客户端上面,除了将 DHCP 选项打勾之外,几乎无需做任何的 IP 环境设定.
什么是DHCP
DHCP(Dynamic Host Configuration Protocol)是一种动态的向Internet终端提供配置参数的协议.在终端提出申请之后,DHCP可以向终端提供IP地址,网关,DNS服务器地址等参数.
DHCP在协议栈中的位置
Applicatiion layer | DHCP |
---|---|
Transport layer | UDP |
Network layer | IP |
Data-link layer | No limited |
Physical layer | No limited |
DHCP是Bootstrap协议的一种扩展,基于UDP协议,客户端的端口号是68,服务器的端口号是67.
DHCP的必要性⛹⛹⛹
在大型网络中,如果每台终端的地址都是由不同的使用者来分配,那么很容易出现地址相同从而造成地址冲突的情况.
Internet网络中每台工作站在访问网络及其资源之前,都必须进行基本的网络配置:IP地址,子网掩码,缺省网关,DNS等.
大型网络中确保所有主机都拥有正确的配置是一件相当困难的而管理任务
漫游用户和笔记本电脑
手动配置或重新配置数量巨大的计算机要花很长时间
IP主机配置过程中出错
需要有一种机制来简化IP地址的配置,实现IP的集中式管理.而IETF设计的动态主机配置协议DHCP正是这样一种机制.
采用DHCP的好处⛹⛹⛹
1.减少错误
.通过配置DHCP,把手工配置IP地址所导致的错误减少到最低程度, 例如已分配的IP地址再次分配给另一设备所造成的地址冲突等将大大减少.
2.减少网络管理
TCP/IP配置是集中化和自动化的,不需要网络管理员手工配置.网络管理员能集中定义全局和特定子网的TCP/IP配置信息.使用DHCP 选项可以自动给客户机分配全部范围的附加TCP/IP配置值.客户机配置的地址变化必须经常更新,比如远程访问客户机经常到处移动,这样便于它在新的地点重新启动时,高效而又自动地进行配置.
路由器能转发DHCP配置请求,减少在每个子网设置 DHCP服务器的必要.
DHCP的结构⛹⛹⛹
DHCP采用客户机/服务器结构.DHCP服务器拥有一个IP地址池,当任何启动DHCP的客户机登录到网络时,可从它那里租借一个IP地址池,不适用的IP地址就自动返回地址池,供再分配.
DHCP的责任⛹⛹⛹
- 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用.
- DHCP应当可以给用户分配永久固定的IP地址.
- DHCP应当可以同其他方法获得IP地址的主机共存(如手工配置IP地址的主机).
- DHCP服务器应当向现有的BOOTP客户端提供服务.
- 考虑到成本,无需每个子网都配备一台DHCP服务器,所以DHCP协议应当可以通过路由器或者BOOTP代理透传.
- 当一台DHCP服务器重新启动时,在允许的情况下,它应当给每一台DHCP客户机分配和上次相同的地址.
DHCP服务器
DHCP客户机
DHCP流程⛹⛹⛹
DHCP的报文种类⛹⛹⛹
DHCPDISCOVER —— 客户机广播发现可用的DHCP服务器
DHCPOFFER —— 服务器响应客户机的DHCPDISCOVER报文,并向客户机提供各种的配置参数
DHCPREQUEST ——
客户机向服务器申请地址及其他配置参数
客户机重新启动后确认原来的地址及其他配置参数的正确性
客户机向服务器申请延长地址及其他配置参数的使用期限
DHCPACK —— 服务器向客户机发送所需分配的地址及其他配置参数
DHCPNAK —— 服务器通知客户机,其申请的地址无效,或者已经超期
DHCPDECLINE —— 客户机通知服务器,其分配的地址已经被其他设备所使用
DHCPRELEASE —— 客户机放弃其所使用的地址
DHCPINFORM —— 客户机向服务器申请本地的配置参数(当客户机的地址已经被分配时使用)
客户机在本网段内广播DHCPDISCOVER报文已发现网络中的DHCP服务器,DHCP Relay可将此报文广播到其它网段.
提供IP租用地址:当 DHCP 服务器监听到客户端发出的 DHCP discover 广播后,它会从那些还没有租出的地址范围内,选择最前面的空置 IP ,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER 封包,封包会包含一个租约期限的信息.
接受IP租约:如果客户端收到多台 DHCP 服务器的响应,只会挑选其中一个 DHCP offer 而已(通常是最先抵达的那个),并向网络发送一个DHCP request广播封包,内含向它所选定的DHCP服务器请求IP地址的内容.之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址.
确认阶段:DHCP服务器确认所提供的IP地址的阶段.当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ACK确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定.
此外除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址.
客户端会检查服务器提供的IP地址信息,如果发现该IP地址已经被使用,客户端则会送出一个DHCPDECLINE 封包给DHCP 服务器,拒绝接受其 DHCP offer ,并重新发送 DHCP discover 信息.
重新登录:以后DHCP客户机每次重新登录网络时,就不需再发送DHCP discover信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息.当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ACK确认信息.如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP NACK否认信息.当原来的DHCP客户机收到此DHCP NACK否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址.
如果客户机放弃使用现在的IP地址,则它使用DHCP RELEASE报文通知服务器,服务器将此地址回收以备下次使用.
当客户机的地址达到50%租用期(T1)时,客户机进入RENEW状态,使用DHCPREQUEST报文续约.
当客户及的地址达到87.5%租用期(T2)时,客户机进入REBINDING状态,使用DHCPREQUEST报文续约.
客户状态转换
DHCP报头
操作代码 OpCode: DHCP 请求或者 DHCP 回复
硬件类型 Hardware Type:10MB 以太网、IEEE802、ATM 等
硬件长度 Hardware Length:硬件地址长度
跳数 Hops:中继代理用来帮助寻找 DHCP 服务器
事务 ID:用来匹配请求和响应的一个随机数
消耗时间 Seconds Elasped:客户端首次向服务器发出请求后的时间
标记 Flags:客户端能够接受的流量类型(单播、广播以及其他)
你的 IP:服务器为客户端提供的 IP
数据报文
DHCP_Discover;寻找Server
DHCP_Offer
DHCP_Request
DHCP_ACK