博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
客户端通过DHCP获取IP过程
阅读量:5875 次
发布时间:2019-06-19

本文共 2217 字,大约阅读时间需要 7 分钟。

hot3.png

设定DHCP服务器:服务器名称为win2k3,IP为192.168.1.1;客户端主机名:winxp2;Scope:192.168.1.1—192.168.1.10。

第一部分:

1、客户端发送DHCP Discover 数据包。客户端使用UDP的68号端口广播发送DHCP Discover数据包,同时指定打开了UDP的67号端口的主机才能接受此数据包。此时,客户端IP Address:0.0.0.0。数据包中信息包括DHCP包的类型、上一次分配到的IP地址,或可能是APIPA分配的地址,并表示能否使用这个地址。这些信息都包含在Bootstrap Protocol(也就是BOOTP)协议中。这也是DHCP的原始协议。不仅仅是刚接入会发送查询包,还有在机器刚启动或请求被拒绝时也会触发DHCP Discover数据包。

2、服务器回应DHCP Offer 数据包。DHCP服务器会响应客户端的DHCP Discover请求后,会检查自己的配置,如果有多余且有效的地址,则会返回一个DHCP Offer的广播消息。因为此时服务器也不知道客户端在那里。数据包除了有IP地址、掩码外,还有这个地址对应的租约时限。当然,这个分配的IP地址可能是已被其它主机在用,可能会产生IP冲突的。

 

3、客户端收到IP地址后用DHCP Request 数据包回应DHCP服务器。DCHP Request这个数据包是通知当前所有的DHCP服务器,当然也包括分配给它IP地址的那台。目的是让大家知道,客户端XP2已经接受某一台DHCP服务器指派了一个IP地址,并将IP地址通告出去。因为可能网内不止一台DHCP,而且XP2发的第一个包是面向全体的,XP2自己也不知道谁会给它分配IP,同时其他DHCP服务器收到查询请求后必然也会检查各自的配置,然后都会分配IP出来。关键看XP2最先收到谁的Offer,当其他DHCP服务器收到Request请求数据包后,就会收回已经派出的地址,留做他用。客户端必须得到指派给它IP地址的那台DHCP服务器的确认消息,这个IP地址也就是192.168.1.1才可以正式为XP2所用。

 

4、DHCP收到Request报用DHCP ACK包回应客户机。DHCP服务器用ACK数据包作为一个确认来回应客户端的Request包,数据包中的Option同样也包含了租约的IP地址、掩码和期限等信息。客户端和服务器利用DHCP完成了一次交互查询和响应的过程。尽管服务器的IP固定,但这4个过程都是通过广播方式进行的,而且四个过程使用同一个Transaction ID。现在XP2可以获取的地址是192.168.1.1,这个是有冲突的IP地址。

 

第二部分:

客户机在收到DHCP ACK数据包之后,会利用Gratuitous ARP协议对这个IP地址进行冲突检测,目的是确定网内是否有人使用这个IP。这个机制存在于2000或之后系统内。如果网内有相同机器使用这个IP,那么就会返回数据包。并用广播方式告知对方IP冲突。整个检测过程有三个数据包。

 

1、客户端广播发送Gratuitous ARP的Request数据包。这个数据包是客户端广播用来检测IP冲突的。这个包内容包括:源IP地址192.168.1.1,MAC 地址,对方MAC地址:000000000000(不知道对方MAC地址,用0代替),对方IP地址:192.168.1.1(目的是此IP地址收到这个数据包后返回一个回应数据包,表示有台主机的IP是:192.168.1.1,那么XP2收到后就知道此IP已存在到网址,存在网络IP冲突)。

 

2、有相同IP的主机向目的地发送Gratuitous ARP的Reply数据包。对方主机IP:192.168.1.1发出数据包返回XP2,数据包有源IP:192.168.1.1,源MAC地址,目的IP地址:192.168.1.1,目的MAC地址。

 

3、有相同IP的主机以广播方式发送Gratuitous ARP冲突提示信息。数据包 是原始IP地址:192.168.1.1的 原始拥有者,通过广播发出,告知网络中存在一个网络IP冲突,对此,DHCP服务器将收到信息并在日志中记录一条。

为了防止IP冲突,DHCP客户端收到指派的地址后都会利用ARP协议进行一次冲突检测。

 

4、XP2广播向DHCP服务器发送Decline拒绝数据包,表示192.168.1.1这个IP无法使用。XP2的IP地址为0.0.0.0,表示分配的IP:192.168.1.1有冲突,不可用。此条数据包的Transaction ID和最开始的4个DHCP数据包一致。一个申请事务的CASE就此完成。

 

第三部分:

1、客户机进行第二次的IP地址获取。这部分和第一部分的申请过程一样,只是事务Transaction ID有所变化。 第二次申请时,因为192.168.1.1刚才已经指派过,且被拒绝,所以按照顺序接下来会指派下一个可用的IP给XP2主机,显然是192.168.1.2,因为只有它一台主机在申请。

 

2、第二次IP冲突检测,通常情况下会一次发出三个ARP包进行检测。

3、IP地址获取成功后,对于客户端来说下一步就是查找WINS服务器,进行NETBIOS名称的注册。

转载于:https://my.oschina.net/u/994235/blog/136193

你可能感兴趣的文章
memcached 分布式聚类算法
查看>>
禁止body滚动允许div滚动防微信露底
查看>>
Xtreme8.0 - Kabloom dp
查看>>
jquery css3问卷答题卡翻页动画效果
查看>>
MDK5.00中*** error 65: access violation at 0xFFFFFFFC : no 'write' permission的一种解决方法
查看>>
Android 集成支付宝支付详解
查看>>
SQL分布式查询、跨数据库查询
查看>>
C#------连接SQLServer和MySQL字符串
查看>>
Arcgis Licensemanager 不能启动的原因之一(转载)
查看>>
(原)Android在子线程用handler发送的消息,主线程是怎么loop到的?
查看>>
$digest already in progress 解决办法——续
查看>>
虚拟机 centos设置代理上网
查看>>
Struts2中Date日期转换的问题
查看>>
mysql 数据类型
查看>>
Ubuntu 设置当前用户sudo免密码
查看>>
设置tomcat远程debug
查看>>
android 电池(一):锂电池基本原理篇【转】
查看>>
Total Command 常用快捷键
查看>>
ionic 调用手机的打电话功能
查看>>
怎么使用阿里云直播服务应用到现在主流直播平台中
查看>>