Python网络编程5-实现DHCP Client

Python网络编程5-实现DHCP Client,第1张

  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:

print

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地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9869588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存