Python网络编程5-实现DHCP Client

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python网络编程5-实现DHCP Client相关的知识,希望对你有一定的参考价值。

参考技术A

  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_MAC.py用于MAC地址与Bytes类型相互转换。

  DHCP_Discover.py用于发送DHCP Discover报文;其中GET_MAC.py见ARP章节。

  DHCP_Request.py用于发送DHCP Request报文。

  DHCP_FULL.py用于完成DHCP Client与DHCP Server的报文交互

Wireshark对远程linux主机抓包,结果如下
客户端以广播发送DHCP Discover包,其中报文操作类型为1(请求报文),DHCP客户端的MAC地址设置为00:0c:29:03:a1:08,option53设置报文类型为Discover,option55(请求选项列表)中包含请求的参数。

服务器以单播向客户端回复信息,其中报文操作类型为2(应答报文),分配给客户端的IP为192.168.160.146,option 53设置报文类型为offer,Option 54设置服务器标识为192.168.160.254,其他option为客户端请求列表的应答。

值得注意的是,交互的四个报文中Transaction ID均为0x00000000,表明是同一次DHCP交互报文。

以上是关于Python网络编程5-实现DHCP Client的主要内容,如果未能解决你的问题,请参考以下文章

DHCP

华为的设备做DHCP Server,怎么通过option选项在分配地址给dhcp client的时候,同时下发一条静态路由

DHCP

dhcp client的加快配置的方法

dhcp client的加快配置的方法

dhcp client的加快配置的方法