DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息。
option字段
DHCP报文中的Options字段可以用来存放普通协议中没有定义的控制信息和参数。如果用户在DHCP服务器端配置了Options字段,DHCP客户端在申请IP地址的时候,会通过服务器端回应的DHCP报文获得Options字段中的配置信息。
获取IP地址过程
实验使用的linux 主机由两个网络接口,其中ens33使用DHCP获取IP地址,ens37使用静态IP地址;因此需要使用ens33来发送数据包。
Change_MACpy用于MAC地址与Bytes类型相互转换。
DHCP_Discoverpy用于发送DHCP Discover报文;其中GET_MACpy见ARP章节。
DHCP_Requestpy用于发送DHCP Request报文。
DHCP_FULLpy用于完成DHCP Client与DHCP Server的报文交互
Wireshark对远程linux主机抓包,结果如下
客户端以广播发送DHCP Discover包,其中报文 *** 作类型为1(请求报文),DHCP客户端的MAC地址设置为00:0c:29:03:a1:08,option53设置报文类型为Discover,option55(请求选项列表)中包含请求的参数。
服务器以单播向客户端回复信息,其中报文 *** 作类型为2(应答报文),分配给客户端的IP为192168160146,option 53设置报文类型为offer,Option 54设置服务器标识为192168160254,其他option为客户端请求列表的应答。
值得注意的是,交互的四个报文中Transaction ID均为0x00000000,表明是同一次DHCP交互报文。
查ip的命令是 ipconfig,方法如下:
工具/原料:Dell游匣G15、win10
1、点击电脑开始中的运行,输入cmd。
2、点击确定后就进入了dos界面。
3、输入查看本机ip地址命令ipconfig。
4、输入查看本机ip地址命令 ipconfig /all显示的就是本机的详细信息。
5、回车之后就可以看到你的IP地址信息了。
很多刚接触树莓派的朋友都不知道怎么在局域网中查找树莓派的IP地址(一般的内网IP由DHCP随机分配),但如果你知道树莓派的MAC地址,这就好办多了。
用python跑如下代码,ip地址就有了。
import
os
res
=
ospopen('arp
-a')readlines()
for
I
in
res:
if
00:00:5e:00:xx:xx
in
I:
I[:20]
该程序在CentOS6x
/
Fedora
19系统上调试通过
用查MAC的方式获取Raspberry
Pi树莓派的ip地址
在家用路由器上,如果局域网是动态分配的地址,以TPlink为例,在“DHCP客户端”链接里可以找到,如果是静态分配的地址,在“静态地址分配”链接里可以找到。上述关键字在不同设备和版本上不尽相同,也不一定是一模一样的字样,有的在arp列表里。
在支持命令行的专业路由器上,用show arp或display arp可以查询到。
arp是所有路由器支持的协议,通过ip去查询mac地址,将三层报文在数据链路层上传输,路由器通过此协议周期性与局域网所有电脑交互信息,目的是确保路由器与电脑之间是否互通。
以上就是关于Python网络编程5-实现DHCP Client全部的内容,包括:Python网络编程5-实现DHCP Client、如何查看ip地址和mac地址、用查MAC的方式获取RaspberryPi树莓派的ip地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)