客户端获取IP地址

String ip = request.getHeader("x-forwarded-for");
String regex = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";

if ((ip == null) || (ip.length() == 0) || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if ((ip == null) || (ip.length() == 0) || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if ((ip == null) || (ip.length() == 0) || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
String[] ipAddrArr = ip.split(",");
for(String ipAddr : ipAddrArr){
if(null != ipAddr && !"unknown".equals(ipAddr) && ipAddr.matches(regex)){
ip = ipAddr;
break;
}
}
UdpGetClientMacAddr umac = new UdpGetClientMacAddr(ip);
String smac = umac.GetRemoteMacAddr();
### 配置 DHCP 服务器并抓包分析客户端获取 IP 地址过程 #### 一、配置 DHCP 服务器 在 ENSP 模拟器中,以华为 AR 系列路由器为例,可以通过以下步骤配置 DHCP 服务器: 1. **启用 DHCP 服务** 在全局模式下启用 DHCP 服务: ```bash dhcp enable ``` 2. **创建地址池** 使用 `ip pool` 命令定义一个或多个地址池,并指定网关、网络范围以及 DNS 服务器等信息。例如: ```bash ip pool vlan10 gateway-list 192.168.10.254 network 192.168.10.0 mask 255.255.255.0 dns-list 8.8.8.8 ``` 此操作将为 VLAN 10 的客户端分配 IP 地址范围为 `192.168.10.0/24`,默认网关为 `192.168.10.254`,DNS 服务器为 `8.8.8.8` [^3]。 3. **配置接口的 DHCP 选择模式** 进入与客户端连接的接口(如 `GigabitEthernet0/0/0`),设置该接口使用全局地址池进行 DHCP 分配: ```bash interface GigabitEthernet0/0/0 ip address 172.16.10.1 255.255.255.0 dhcp select global ``` 4. **配置静态路由(可选)** 如果 DHCP 客户端和服务器不在同一子网,需配置静态路由确保可达性: ```bash ip route-static 0.0.0.0 0.0.0.0 172.16.10.2 ``` #### 二、DHCP 客户端自动获取 IP 地址客户端设备连接到网络后,会通过以下四个阶段从 DHCP 服务器获取 IP 地址: 1. **DHCP Discover** 客户端发送广播请求,寻找可用的 DHCP 服务器。 2. **DHCP Offer** DHCP 服务器响应请求,提供一个未被使用的 IP 地址及其他网络参数。 3. **DHCP Request** 客户端接受提供的 IP 地址,并向服务器发送确认请求。 4. **DHCP Acknowledge** DHCP 服务器确认分配的 IP 地址,并发送最终的配置信息。 上述过程是标准的 DHCP 协议流程,适用于大多数网络环境 [^1]。 #### 三、抓包分析 DHCP 客户端获取 IP 地址的过程 1. **启动 Wireshark 或 ENSP 自带的抓包工具** 在 ENSP 中,可以右键点击交换机或路由器接口,选择“开始捕获”功能,然后选择目标接口进行监听。 2. **触发 DHCP 请求** 将 PC 客户端连接至网络,并将其网络适配器设置为自动获取 IP 地址(Windows 下可通过命令 `ipconfig /renew` 实现)。 3. **查看 DHCP 数据包** 抓包过程中,应能观察到以下数据包序列: - `DHCP Discover`:由客户端发出的广播报文。 - `DHCP Offer`:由 DHCP 服务器回应的单播报文。 - `DHCP Request`:客户端再次广播请求确认 IP 地址。 - `DHCP Acknowledge`:服务器最终确认 IP 地址的有效性。 4. **分析字段内容** 查看每个 DHCP 数据包中的关键字段,包括: - `Client MAC Address`:客户端的 MAC 地址。 - `Transaction ID`:事务标识符,用于匹配请求与响应。 - `Option 53`:消息类型(Discover、Offer、Request、Acknowledge)。 - `Option 50`:客户端请求的 IP 地址(仅在 Request 阶段出现)。 - `Option 51`:IP 地址租期。 - `Option 3`:网关地址。 - `Option 6`:DNS 服务器地址。 此分析有助于理解 DHCP 协议的工作机制及其在网络中的实际应用 [^2]。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值