30 秒解释“192.168.0.0/24”中的“/24”

我现在工作中正在处理这类事务,起初对我来说(作为一个网络安全背景知识有限的人),这真的很不直观。

所以,我在这里尽量把它简化,讲给那些不太熟悉IP地址的人听。

单一IP地址

192.168.0.0

192.168.0.0就是一个单独的IP地址,仅此而已。

在IP地址后添加“/”和数字

192.168.0.0/32是一个IP地址范围。

192.168.0.0/31也是一个IP地址范围。

192.168.0.0/30同样是一个IP地址范围。

192.168.0.0/29还是一个IP地址范围。

192.168.0.0/28依旧是一个IP地址范围。

依此类推。

我们在“/”后面添加的数字取值范围是从0到32。

查找此范围内的IP地址

我们先来找出这个范围内IP地址的数量。

假设我们有192.168.0.0/30这个地址范围

IP地址数量 = 2 ^ (32 - 30)

也就是2 ^ 2 = 4

所以,这个范围内的IP地址就是192.168.0.0、192.168.0.1、192.168.0.2以及192.168.0.3。

再假设我们有192.168.0.0/29这个地址范围:

IP地址数量 = 2 ^ (32 - 29)

即2 ^ 3 = 8

那么,该范围内的IP地址就是192.168.0.0、192.168.0.1、192.168.0.2……192.168.0.7。

又假设我们有192.168.0.1/28这个地址范围:

IP地址数量 = 2 ^ (32 - 28)

也就是2 ^ 4 = 16

这样一来,其IP地址就是192.168.0.0、192.168.0.1、192.168.0.2……192.168.0.15。

需要注意的是——在我看来,这种表示法很奇怪,也不直观,但它在行业内应用广泛,所以我想我也没资格反对它吧。

使用Python查找IP地址范围

我们可以使用Python内置的ipaddress模块来自动完成这项操作。

import ipaddress
x = list(ipaddress.ip_network('192.168.0.0/30', False))
from pprint import pprint
# 此范围内有4个IP地址
pprint(x)
'''
[IPv4Address('192.168.0.0'),
 IPv4Address('192.168.0.1'),
 IPv4Address('192.168.0.2'),
 IPv4Address('192.168.0.3')]
'''

上述代码中,False参数关闭了严格模式(开启严格模式会导致出错)。

import ipaddress
x = list(ipaddress.ip_network('192.168.0.0/28', False))
from pprint import pprint
# 此范围内有16个IP地址
pprint(x)
'''
[IPv4Address('192.168.0.0'),
 IPv4Address('192.168.0.1'),
 IPv4Address('192.168.0.2'),
 IPv4Address('192.168.0.3'),
 IPv4Address('192.168.0.4'),
 IPv4Address('192.168.0.5'),
 IPv4Address('192.168.0.6'),
 IPv4Address('192.168.0.7'),
 IPv4Address('192.168.0.8'),
 IPv4Address('192.168.0.9'),
 IPv4Address('192.168.0.10'),
 IPv4Address('192.168.0.11'),
 IPv4Address('192.168.0.12'),
 IPv4Address('192.168.0.13'),
 IPv4Address('192.168.0.14'),
 IPv4Address('192.168.0.15')]
'''

对于192.168.0.0/24:

IP地址数量 = 2 ^ (32 - 24)

即2 ^ 8 = 256

import ipaddress
x = list(ipaddress.ip_network('192.168.0.0/24', False))
from pprint import pprint
pprint(x)
'''
[IPv4Address('192.168.0.0'),
 IPv4Address('192.168.0.1'),
 IPv4Address('192.168.0.2'),
 IPv4Address('192.168.0.3'),
 IPv4Address('192.168.0.4'),
 ......
  ......
   ......
 IPv4Address('192.168.0.255'),

写在最后

我不会深入探讨 IP 地址的理论及其代表的含义(这需要更多文章来介绍),但希望这篇文章能够有所帮助并且易于理解。

2025-03-31 08:49:27,208 INFO client.RMProxy (RMProxy.java:createRMProxy(98)) - Connecting to ResourceManager at /0.0.0.0:8032 2025-03-31 08:49:30,367 INFO ipc.Client (Client.java:handleConnectionFailure(860)) - Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 2025-03-31 08:49:33,410 INFO ipc.Client (Client.java:handleConnectionFailure(860)) - Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 2025-03-31 08:49:36,447 INFO ipc.Client (Client.java:handleConnectionFailure(860)) - Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 2025-03-31 08:49:39,474 INFO ipc.Client (Client.java:handleConnectionFailure(860)) - Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 3 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 2025-03-31 08:49:42,509 INFO ipc.Client (Client.java:handleConnectionFailure(860)) - Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 4 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 2025-03-31 08:49:45,542 INFO ipc.Client (Client.java:handleConnectionFailure(860)) - Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 5 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 2025-03-31 08:49:48,582 INFO ipc.Client (Client.java:handleConnectionFailure(860)) - Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 6 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 2025-03-31 08:49:51,630 INFO ipc.Client (Client.java:handleConnectionFail
04-01
<think>嗯,用户遇到了一个网络配置问题,无法连接到自己的服务器,地址是http://192.168.109.132:44235/。首先,我需要分析可能的原因。根据错误提示,常见原因是机器无法ping通自己。所以,我应该先让用户检查是否能ping通自己的IP地址,也就是192.168.109.132。如果能ping通,那可能不是网络接口的问题,但可能涉及到防火墙或服务配置。如果无法ping通,那可能是网络接口配置错误,或者IP地址没有正确分配。 接下来,用户可能需要检查网络接口的状态,比如用ifconfig或者ip addr命令,确认对应的网络接口(比如eth0或wlan0)是否启用了,并且IP地址是否正确。另外,还要查看是否有其他网络配置问题,比如子网掩码或默认网关是否正确。不过用户的问题是自己无法访问自己,所以可能更多是本地回环或防火墙的问题。 然后,防火墙设置也是一个可能性。用户可能需要在防火墙中放行44235端口的TCP流量。需要建议用户检查iptables或者ufw的设置,确保端口是开放的。另外,如果服务本身没有正确绑定到0.0.0.0,而是绑定到了127.0.0.1,那么外部(包括自己通过IP访问)就无法连接。这时候需要确认服务配置是否正确,是否监听在0.0.0.0:44235。 另外,服务本身是否正常运行也是关键。用户需要确认服务是否已经启动,并且在监听指定的端口。可以用netstat -tulnp | grep 44235或者ss -tuln来查看端口监听情况。如果服务没有运行,自然无法连接。 ROS的网络配置可能有特殊要求,比如需要设置ROS_MASTER_URI和ROS_HOSTNAME等环境变量是否正确指向本机IP。用户可能在这些设置上有误,导致节点无法正确通信。 总结下来,可能的解决步骤是:1. 检查是否能ping通自己的IP;2. 检查网络接口配置;3. 检查防火墙设置;4. 确认服务正确绑定端口;5. 检查ROS的环境变量配置。用户需要逐一排查这些方面,找到具体原因。</think>这个错误提示表明你的计算机无法通过本地网络访问自身搭建的服务器。以下是逐步排查方案: ### 1. 检查基础网络连通性 ```bash ping 192.168.169.132 ``` - ✅ 正常响应:应看到类似 `64 bytes from 192.168.109.132` 的返回 - ❌ 无响应:说明系统未正确绑定该IP地址,继续第2步 ### 2. 验证网络接口配置 ```bash ip addr show | grep 192.168.109.132 ``` - ✅ 正常情况:应显示对应网卡(如eth0)的IP地址配置 - ❌ 未找到:尝试重启网络服务 ```bash sudo systemctl restart NetworkManager # 适用于大多数Linux发行版 ``` ### 3. 检查本地防火墙设置 ```bash sudo ufw status # 查看防火墙状态 sudo ufw allow 44235/tcp # 临时开放端口(Ubuntu系) ``` 或检查iptables: ```bash sudo iptables -L -n -v | grep 44235 ``` ### 4. 验证服务绑定状态 ```bash netstat -tulnp | grep 44235 ``` - ✅ 正常显示:`tcp 0 0 0.0.0.0:44235 0.0.0.0:* LISTEN` - ❌ 错误绑定:若显示`127.0.0.1:44235`,需修改服务配置为`0.0.0.0` ### 5. ROS环境特殊配置(若适用) ```bash echo $ROS_MASTER_URI # 应显示 http://192.168.109.132:11311/ echo $ROS_HOSTNAME # 应显示 192.168.109.132 ``` ### 6. 高级诊断工具 使用curl进行详细测试: ```bash curl -v http://192.168.109.132:44235/ ``` 该命令会显示详细的握手过程,帮助定位具体失败环节。 ### 常见解决方案矩阵 | 现象 | 可能原因 | 解决方案 | |------|--------|---------| | 能ping通但无法连接 | 端口未开放/服务未运行 | 检查防火墙,确认服务进程 | | 所有自检正常但外部无法访问 | 路由策略问题 | `sudo ip route add 192.168.109.0/24 dev eth0` | | 间歇性连接失败 | ARP缓存问题 | `sudo arp -d 192.168.109.132` | 建议按照上述顺序逐步排查,每个步骤之间间隔10等待配置生效。如果问题仍未解决,可以尝试在回环接口测试: ```bash curl http://127.0.0.1:44235/ # 验证服务是否真的在运行 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qingmu2024

您的鼓励是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值