IP 地址是什么意思:格式、分类与作用
IP 地址是网络里每个接口的“门牌号”:IPv4 地址由 32 位二进制组成,写成 192.168.1.10 这样的 4 段十进制;前一部分(网络位)表示在哪个网段,后一部分(主机位)表示网段里的哪一台。路由器只看网络位决定往哪送,到了目标网段,再靠 MAC 地址交到具体的网卡。
IP 地址是什么意思:IP 地址(Internet Protocol Address)是网络层给每个网络接口分配的数字地址,数据包靠它从一台设备送到另一台设备。目前最常用的 IPv4 地址由 32 位二进制组成,为了方便阅读,写成 4 段 0 到 255 的十进制数,中间用点隔开,例如 192.168.1.10。一个地址分成两部分:前面的网络位说明它在哪个网段,后面的主机位说明它是网段里的哪一台,分界线由子网掩码决定。IP 地址的作用可以概括成两点:标识这个接口是谁,以及让路由器知道数据包该往哪里送。IPv6 地址是 128 位,写法和规则另成一套,本文以 IPv4 为主。
点分十进制:32 位二进制怎么写成 192.168.1.10
计算机里的 IPv4 地址就是一串 32 位的二进制数。按 8 位一段切成 4 段,每段换算成 0 到 255 的十进制,就得到点分十进制写法。每一位的权重从左到右依次是 128、64、32、16、8、4、2、1,以 192.168.1.10 为例:
| 段 | 十进制 | 拆成 2 的幂 | 二进制 |
|---|---|---|---|
| 第 1 段 | 192 | 128 + 64 | 11000000 |
| 第 2 段 | 168 | 128 + 32 + 8 | 10101000 |
| 第 3 段 | 1 | 1 | 00000001 |
| 第 4 段 | 10 | 8 + 2 | 00001010 |
32 位一共能表示 2^32 = 4,294,967,296 个地址,约 43 亿。扣掉私网、组播、保留等特殊用途的地址,能分到互联网上使用的更少,这就是 IPv4 地址稀缺、需要 IPv6 的根本原因。
点分十进制有几种看起来像、实际不对的写法,录台账和写脚本时要特别注意:
| 写法 | 是否合法 | 说明 |
|---|---|---|
| 192.168.1.10 | 合法 | 标准写法 |
| 192.168.1.256 | 不合法 | 每段最大 255 |
| 192.168.010.1 | 有歧义 | 很多系统把 0 开头的段当八进制,010 被读成 8 |
| 192.168.1 | 不规范 | 部分程序把它补成 192.168.0.1 |
| 3232235786 | 能被部分程序接受 | 32 位整数写法,等于 192.168.1.10 |
第三行不是理论问题,在 Windows 和 Linux 上都能复现:
C:\> ping 192.168.010.1
正在 Ping 192.168.8.1 具有 32 字节的数据:
$ ping 192.168.010.1
PING 192.168.010.1 (192.168.8.1) 56(84) bytes of data.
Python 的 ipaddress 模块从 3.9.5 起直接拒绝带前导零的写法,更早的版本则把 010 当成十进制的 10。同一个字符串,不同工具、甚至同一工具的不同版本理解都不同,所以台账、配置和工单里一律写不带前导零的标准形式。
网络位和主机位:掩码划出“哪个网段、哪一台”
光有地址还不够,还要知道哪几位是网络位。子网掩码就是干这个的:掩码里为 1 的位是网络位,为 0 的位是主机位。把地址和掩码按位相与,得到的就是网络地址:
地址 192.168.1.10 11000000.10101000.00000001.00001010
掩码 255.255.255.0 11111111.11111111.11111111.00000000
按位与 192.168.1.0 11000000.10101000.00000001.00000000 ← 网络地址
这里前 24 位是网络位,写成 192.168.1.10/24;最后 8 位的 10 是主机位,表示这个网段里的第 10 号主机。每个网段里有两个地址不能分给设备:主机位全为 0 的网络地址(192.168.1.0),和主机位全为 1 的广播地址(192.168.1.255),所以一个 /24 能用的是 254 个。
网络位决定了一台主机怎么发包。假设本机是 192.168.1.10/24,网关是 192.168.1.1:
| 目标地址 | 和本机同网段吗 | 本机怎么发 |
|---|---|---|
| 192.168.1.20 | 是,网络位都是 192.168.1 | 用 ARP 查出 .20 的 MAC,直接发给它 |
| 192.168.2.20 | 否 | 发给网关 192.168.1.1,由网关转发 |
| 114.114.114.114 | 否 | 同样交给网关 |
在 Linux 上可以直接问系统会怎么走:
$ ip route get 192.168.1.20
192.168.1.20 dev eth0 src 192.168.1.10
$ ip route get 192.168.2.20
192.168.2.20 via 192.168.1.1 dev eth0 src 192.168.1.10
第一条没有 via,说明直接投递;第二条 via 后面是网关。Windows 上对应的命令是 PowerShell 的 Find-NetRoute -RemoteIPAddress 192.168.2.20。新人常见的故障“同网段能通、跨网段不通”,多半是网关没填或填错;“明明同网段却不通”,先核对两边的掩码是否一致。
A、B、C 类地址和私有地址范围
早期的 IPv4 按地址开头的几位二进制分成五类,网络位的长度由类别决定:
| 类别 | 首字节二进制开头 | 首字节范围 | 默认网络位 | 用途 |
|---|---|---|---|---|
| A 类 | 0 | 0–127 | 8 位(255.0.0.0) | 大型网络;0 和 127 开头的有特殊用途 |
| B 类 | 10 | 128–191 | 16 位(255.255.0.0) | 中型网络 |
| C 类 | 110 | 192–223 | 24 位(255.255.255.0) | 小型网络 |
| D 类 | 1110 | 224–239 | — | 组播 |
| E 类 | 1111 | 240–255 | — | 保留 |
1993 年起,互联网改用 CIDR,网络位长度不再由类别决定,103 开头的地址照样可以按 /24 甚至更小的块分配。今天类别只留下两处痕迹:口语里的“C 段”(指一个 /24),以及部分操作系统在你输入地址后按类别自动填写的默认掩码,后者常常不是你该用的值。
私有地址是 RFC 1918 从 A、B、C 类里各划出的一块,任何单位都可以在内部重复使用,但不能直接在互联网上路由,访问外网要经过 NAT 转换成公网地址:
| 私有地址范围 | CIDR 写法 | 相当于 | 地址数 |
|---|---|---|---|
| 10.0.0.0 – 10.255.255.255 | 10.0.0.0/8 | 1 个 A 类网络 | 16,777,216 |
| 172.16.0.0 – 172.31.255.255 | 172.16.0.0/12 | 16 个 B 类网络 | 1,048,576 |
| 192.168.0.0 – 192.168.255.255 | 192.168.0.0/16 | 256 个 C 类网络 | 65,536 |
另外几个运维中经常遇到的特殊地址:
| 地址 | 含义 | 什么时候会碰到 |
|---|---|---|
| 127.0.0.0/8 | 环回,指本机 | 测试本机服务 |
| 0.0.0.0 | 未指定;在监听配置里表示“本机所有地址” | ss -tln 里看到 0.0.0.0:80,表示所有网卡都在监听 80 端口 |
| 169.254.0.0/16 | 链路本地,系统自动配置 | 网卡显示这个地址,说明没从 DHCP 拿到地址 |
| 100.64.0.0/10 | 运营商级 NAT 的共享地址 | 宽带拿到的不是真正的公网 IP |
| 255.255.255.255 | 本网段受限广播 | DHCP 客户端找服务器时发出的报文 |
| 224.0.0.0/4 | 组播 | VRRP、OSPF 等协议的报文 |
IP 地址、域名、MAC 地址是什么关系
三者都是“地址”,但工作在不同层次,各管一段:
| 对比项 | 域名 | IP 地址 | MAC 地址 |
|---|---|---|---|
| 例子 | www.example.com |
203.0.113.30 | 00:00:5e:00:53:30 |
| 所在层次 | 应用层(DNS) | 网络层 | 数据链路层 |
| 作用 | 给人记的名字 | 跨网络寻址和路由 | 在同一网段内把帧交给具体网卡 |
| 谁来分配 | 向注册商注册,自己设置解析 | 运营商、机房分配,或由 DHCP 下发 | 网卡出厂时写入,可以修改 |
| 怎么转换 | DNS 解析成 IP | ARP 解析成 MAC | — |
| 传输途中是否变化 | — | 源、目的地址一路不变,经过 NAT 时除外 | 每经过一个路由器就换一次 |
用一次网页访问把三者串起来,本机仍是 192.168.1.10/24:
- 浏览器先做 DNS 解析,得到
www.example.com的 IP,比如 203.0.113.30,用dig +short www.example.com或nslookup www.example.com可以看到这一步的结果。 - 本机比较网络位,发现 203.0.113.30 不在 192.168.1.0/24 里,决定交给网关。
- 本机用 ARP 查出网关 192.168.1.1 的 MAC,已在缓存里就直接用。
- 发出的帧里,目的 MAC 是网关的,目的 IP 是 203.0.113.30。
- 每经过一个路由器,二层头被拆掉重新封装,MAC 换成下一跳的;IP 头里的目的地址始终是 203.0.113.30。
- 最后一个路由器在服务器所在的网段里用 ARP 找到服务器的 MAC,把包交过去。
三者之间也不是一一对应:一个域名可以解析出多个 IP(负载均衡、CDN),一个 IP 上可以承载多个域名(虚拟主机),一块网卡通常只有一个 MAC,却可以配多个 IP。
IP 地址是根据什么定位的
IP 地址本身不含任何地理信息,“IP 定位”是查数据库得出的结果。定位数据库的数据主要来自几个方面:
| 数据来源 | 能提供什么 | 精度 |
|---|---|---|
| 地址注册信息(whois) | 地址段由哪个机构持有、登记在哪个国家或地区 | 通常到国家,有时到省 |
| 路由宣告(BGP) | 这段地址由哪个运营商在互联网上宣告 | 到运营商 |
| 网络测量 | 从多个已知位置测延迟、看路由路径,推算大致位置 | 取决于探测点的密度 |
| 应用和合作方提供的定位样本 | 已知位置与当时所用 IP 的对应关系 | 取决于样本数量,会随地址重新分配而过时 |
所以 IP 定位常见这几种偏差:手机网络的出口集中,显示的城市可能是省会或别的城市;云服务器、CDN 节点显示的是机房所在地,而不是用户所在地;注册地与实际使用地不一致的地址,会被一些库识别成注册地;走代理或 VPN 时,看到的是代理出口的位置。想知道一个地址登记在谁名下,用 whois 查:
whois 203.0.113.30
# APNIC、RIPE 的记录重点看 inetnum(地址范围)、netname、descr(持有机构)、country(登记国家)几行
# ARIN 的记录字段名不同,对应 NetRange、NetName、OrgName、Country
IP 地址在哪里查看
| 想查什么 | Windows | Linux | 说明 |
|---|---|---|---|
| 本机网卡上的地址 | ipconfig |
ip -4 addr |
家里和办公室看到的多是私网地址 |
| 掩码和网关 | ipconfig |
ip route,default via 后面是网关 |
掩码在 Linux 上以 /24 这样的前缀长度显示 |
| 出口公网 IP | curl.exe -4 ifconfig.me |
curl -4 ifconfig.me |
互联网上别人看到的地址 |
手机在 Wi-Fi 设置里点开当前网络的详情就能看到本机地址。本机地址和出口地址不一样,说明中间有路由器或运营商做了地址转换,这在家庭宽带和办公网里是常态;机房服务器配的通常就是公网 IP,两者一致。
机房里一台服务器会用到哪些 IP
新入行的运维很快会发现,一台托管服务器身上不止一个地址:
| 地址 | 例子 | 配在哪里 | 谁能访问 |
|---|---|---|---|
| 业务公网 IP | 203.0.113.30/26 | 服务器的业务网卡 | 互联网 |
| 网关 | 203.0.113.1 | 三层交换机的 VLAN 接口 | 同网段的服务器 |
| IPMI 管理 IP | 10.20.0.15/24 | 服务器的 BMC 管理口 | 只有机房管理网 |
| 内网 IP | 10.30.1.15/24 | 服务器的第二块网卡 | 同机房内网 |
| 交换机管理 IP | 10.10.0.2/24 | 交换机的管理接口 | 只有运维 |
这些地址分属不同的段、不同的用途,一个记错就是一次故障:业务 IP 重复分配会冲突,IPMI 地址落进公网段会暴露管理口。Toplink DCIM 的 IP 地址管理按 CIDR 录入地址段,自动算出起止地址和子网掩码,网关可选段内第一个或最后一个地址;每个段可以标记为公网 IP、IPMI、客户内网、内网 IP、临时 IP 等类型,分别统计和分配。开通服务器时从可用段自动取址,下架或退订时把地址设为空闲即可回收,哪个地址在哪台机器上,一查便知。
常见问题
IP 地址会变吗?
看分配方式。家庭宽带的出口地址多数是动态分配的,重新拨号或光猫重启后就可能变;家里和办公室的私网地址由路由器的 DHCP 下发,也可能变。机房服务器的地址是静态分配的,不主动变更就不会变,所以对外服务、让对方加白名单都要用服务器的固定地址。
IP 地址和端口是什么关系?
IP 地址找到主机,端口找到主机上的某个程序,取值范围是 0–65535。一条 TCP 连接由源 IP、源端口、目的 IP、目的端口共同确定,例如 SSH 默认用 22 端口,HTTPS 默认用 443 端口。
知道一个 IP 地址,能查到具体是谁吗?
单凭公开信息查不到。公开的 IP 定位库只能给出大致的国家、省市和运营商;某个时刻由哪位用户使用,只有分配地址的运营商或机房有记录,这些记录不对外公开。家庭宽带和手机网络还普遍使用地址转换,同一个公网 IP 背后可能有很多用户。