当前位置: 首页 > news >正文

刚刚做的网站怎么排名无锡做网站

刚刚做的网站怎么排名,无锡做网站,重庆网站托管,如何设置个人网站介绍 DHCP#xff08;Dynamic Host Configuration Protocol#xff0c;动态主机配置协议#xff09;通常被应用在大型的局域网络环境中#xff0c;主要作用是集中的管理、分配IP地址#xff0c;使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息Dynamic Host Configuration Protocol动态主机配置协议通常被应用在大型的局域网络环境中主要作用是集中的管理、分配IP地址使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息并能够提升地址的使用率。 DHCP协议采用客户端/服务器模式。客户机登录服务器时可以自动获得DHCP服务器分配的IP地址和子网掩码这也是现在接入网技术中供应商给用户(账号)提供IP地址的手段。 原理 端口 首先DHCP是基于UDP的两个端口实现的DHCP提供服务时客户端以68号端口进行数据传输服务器端以67号端口进行数据传输。 DHCP报文类型 DHCP一共有8中报文分别为DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。 DHCP Discover: DHCP客户端在请求IP地址时并不知道DHCP服务器的位置因此DHCP客户端会在本地网络内以广播方式发送Discover请求报文以发现网络中的DHCP服务器。所有收到Discover报文的DHCP服务器都会发送应答报文DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。 DHCP Offer:DHCP服务器收到Discover报文后就会在所配置的地址池中查找一个合适的IP地址加上相应的租约期限和其他配置信息如网关、DNS服务器等构造一个Offer报文发送给DHCP客户端告知用户本服务器可以为其提供IP地址。但这个报文只是告诉DHCP客户端可以提供IP地址最终还需要客户端通过ARP来检测该IP地址是否重复。 DHCP Request:DHCP客户端可能会收到很多Offer请求报文所以必须在这些应答中选择一个。通常是选择第一个Offer应答报文的服务器作为自己的目标服务器并向该服务器发送一个广播的Request请求报文通告选择的服务器希望获得所分配的IP地址。另外DHCP客户端在成功获取IP地址后在地址使用租期达到50%时会向DHCP服务器发送单播Request请求报文请求续延租约如果没有收到ACK报文在租期达到87.5%时会再次发送广播的Request请求报文以请求续延租约。 DHCP ACK:DHCP服务器收到Request请求报文后根据Request报文中携带的用户MAC来查找有没有相应的租约记录如果有则发送ACK应答报文通知用户可以使用分配的IP地址。 DHCP NAK:如果DHCP服务器收到Request请求报文后没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址则向DHCP客户端发送NAK应答报文通知用户无法分配合适的IP地址。 DHCP Release:当DHCP客户端不再需要使用分配IP地址时就会主动向DHCP服务器发送RELEASE请求报文告知服务器用户不再需要分配IP地址请求DHCP服务器释放对应的IP地址。 DHCP Decline:DHCP客户端收到DHCP服务器ACK应答报文后通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用则会向DHCP服务器发送Decline请求报文通知服务器所分配的IP地址不可用以期获得新的IP地址。 DHCP Inform:DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息则向DHCP服务器发送Inform请求报文DHCP服务器在收到该报文后将根据租约进行查找到相应的配置信息后向DHCP客户端发送ACK应答报文。目前基本上不用了。 DHCP报文格式 我们通过抓包看一下DHCP的报文: 1.Message type:Boot Request(1)当为1时表示是client的请求为2时是server的应答 2.Hardware type是网络硬件地址类型 3.Hardware address length表示网络硬件地址长度(6Bytes表示是以太网类型的MAC地址) 4.HOPS表示跳数是当前的DHCP报文经过的DHCP RELAY的数目每经过一个DHCP中继此字段就会加1当这个字段大于4时DHCP报文直接丢弃。 5.Transaction id:事务ID是DHCP请求报文时选择的随机数 6.Elapsed boot time描述表示client开始DHCP请求后的时间流逝秒数 7.flags标志 8.Client self-assigned IP address:客户机IP地址 9.Client IP address:分配给client的IP地址 10.Next Server IP address:服务器IP地址 11.Relay AgentDHCP:中继代理IP地址 12.Client Hardware address客户机硬件地址MAC 13.Client Hardware address padding:客户机硬件MAC填充地址 14.Host Name:服务器的主机名 15.Boot File name:是client的启动配置文件名 16.Magic cookie是服务器可以根据这个cookie直到该用户是否需要重新登录。 之后的字段会根据报文类型而有不同的改变: 17.DHCP Message Type:此字段表示DHCP报文类型 18.DHCP Server Identifier是DHCP Server的报文类型 19.Client identifier:客户端报文类型 交互过程 通过观察抓包顺序可以知道是客户端首先从68端口发出广播(UDP报文)即discover报文寻找DHCP服务器请求租用IP地址。该广播包中的源IP地址为0.0.0.0目标IP地址由于是广播所以为255.255.255.255报文中还包含客户机的MAC地址和计算机名。DHCP服务器会将67端口开启收到客户端的discover报文后会回应一个offer报文此报文的源IP地址为服务器的IP目标IP地址为255.255.255.255数据报中还包含着提供的IP地址、子网掩码、网关、DNS及租期等信息。 然后客户端就会广播一个request报文表示自己已经接受了一个DHCP服务器提供的IP地址广播包中包含所接受的IP地址和服务器的IP地址。服务器在接收到request广播后会广播返回给客户机一个ACK消息包表示已经接受了客户机的选择并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户。此客户此时就已经获得一个可用的IP地址。整体流程如下图: 代码设计 首先工程的结构如下: ---dhcpserver||--DHCPOptionEnum.h|--maker.h--parser.h|--stdafx.h|--Mystruct.h||--DHCPserver.cpp 代码是基于DHCP的原理、报文以及DavidAnson的DHCPLite0的代码逻辑框架。下面将逐一分析一下代码: main函数 逻辑是首先获取运行环境下的网络设备所有网卡信息然后以链表的形式存储在PIP_ADAPTER_INFO结构体所声明的AdapterWalker对象中然后将需要选择的网卡信息作为输入与bindInterfaceAddress进行绑定。以上都是初始化信息主要是为了让用户选择需要进行绑定的网络设备。 然后m_socket socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)与setsockopt(m_socket, SOL_SOCKET, SO_BROADCAST, (char*)optval, sizeof(bool))将套接字设置为UDP格式同时通过setsockopt对套接字的功能进行设置是套接字是符合我们想做为DHCP的广播环境的。之后创建一个线程thread mThread(ClientListen, bindInterfaceAddress)用来模拟客户端进行广播消息的交互。 接下来就是服务端与客户端的报文交互了我们需要处理好的就是报文格式以及相应的判断就行了。主要就是在客户端发来报文后服务端进行解析(parse)解析完成后再回应一个报文需要先制作(make)一个报文。通过这样完成报文的交互。 ClientListen 这个函数是在新线程下用来模拟客户端的所以逻辑是与主函数相同的。由于是线程可以模拟多个客户。 GetIpFromTable 在这里利用了一个unordered_map的存储方式因为利用map存储数据不论是插入还是查询的速度都是非常快的。在这个结构里我们将已经申请了IP地址的客户放入这个结构中如果有就返回信息如果没有这个客户则加入这个用户的IP地址及信息。 MyStruct.h 在这里定义了DHCP报文格式的结构体 struct DHCP_PACKET {byte OP;byte HTYPE;byte HLEN;byte HOPS;UINT32 TRANSACTION_ID;UINT16 SECONDS;UINT16 FLAGS;byte ciaddr[4];byte yiaddr[4];byte siaddr[4];byte giaddr[4];byte chaddr[16];byte sname[64];byte file[128];UINT32 magicCode;byte Options[308]; }; 同时定义了Packet_Information的结构体: struct Packet_Information {char HostName[256];USHORT BootFileSize;char MeritDumpFile[256];byte DHCPMessageType;int IPLeaseTime; // clientbyte ServerIdentifier[4]; // clientbyte ClientIdentifier[4];byte ParameterRequestList[256];byte VendorClassIdentifier[256];byte RequestedIPAddress[4];byte Unsupport[256];bool OptionToReplay[256]; }; parser.h与maker.h 这里直接调用了解析与封包的相关函数主要是对IP地址、端口以及相应数据报格式字段信息的转换判断与赋值。 DHCPOptionEnum.h 这个头文件定义了DHCP Option的所有情况利用enum结构进行存储在主函数中调用时就可以通过数字进行表示与区分。 结果 项目请见:Github 转载于:https://www.cnblogs.com/yunlambert/p/9297358.html
http://www.zqtcl.cn/news/823540/

相关文章:

  • 增城百度做网站多少钱it培训机构排名
  • 网站开发项目规划书四川建设网个人证书查询网址
  • 怎么模板建站微信做单30元一单
  • 兰州建设局网站十堰专业网站建设
  • html5 网站源码网络营销课程思政
  • 建设网站贵吗深圳网站建设推广论坛
  • 做网站需注意事项会员卡管理系统下载
  • 嘉兴高端网站建设公司电子信息工程能进国家电网吗
  • 建网站 广州网站改版 理论
  • 门户网站简称昆明本地网站
  • 网站定位的核心意义离婚协议书模板 完整版
  • 网站首页改版方案长图制作网站
  • 网站的栏目有什么名字保定网络公司网站
  • 南京建设机械网站建设银行网站解除绑定
  • 厚街公司网站建设wordpress发邮件更新
  • wap网站制作网络设计公司经营范围
  • 织梦网站被做跳转还被删除文件第三方电子商务平台有哪些
  • 财经网站源码 织梦游戏ui培训
  • 石家庄站布局图网站建设公司怎么
  • 电商网站建设选迅法网东莞系统网站建设
  • 网站栏目 英文wordpress 情侣
  • 济南市历下区建设局官方网站wordpress 作者页
  • 武进建设银行网站首页大型网站建设哪家快
  • 做网站用vs怎么自己写代码做网站
  • 网站建设产品需求文档技术培训学校机构
  • 简单个人网站源码石景山网站seo优化排名
  • 用花生做网站房地产电子商务的网站建设
  • 宁波网站建设团队sem竞价托管多少钱
  • 工艺品东莞网站建设营销助手app
  • 怎么添加网站 多少钱wordpress 在线教育模板