网络与 IP

IP 地址是什么意思:格式、分类与作用

IP 地址是网络里每个接口的“门牌号”:IPv4 地址由 32 位二进制组成,写成 192.168.1.10 这样的 4 段十进制;前一部分(网络位)表示在哪个网段,后一部分(主机位)表示网段里的哪一台。路由器只看网络位决定往哪送,到了目标网段,再靠 MAC 地址交到具体的网卡。

作者 顶联产品团队发布于 6 分钟阅读

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:

  1. 浏览器先做 DNS 解析,得到 www.example.com 的 IP,比如 203.0.113.30,用 dig +short www.example.com 或 nslookup www.example.com 可以看到这一步的结果。
  2. 本机比较网络位,发现 203.0.113.30 不在 192.168.1.0/24 里,决定交给网关。
  3. 本机用 ARP 查出网关 192.168.1.1 的 MAC,已在缓存里就直接用。
  4. 发出的帧里,目的 MAC 是网关的,目的 IP 是 203.0.113.30。
  5. 每经过一个路由器,二层头被拆掉重新封装,MAC 换成下一跳的;IP 头里的目的地址始终是 203.0.113.30。
  6. 最后一个路由器在服务器所在的网段里用 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 背后可能有很多用户。

想看看在你的机房里怎么用?

从一次产品演示开始,梳理你的业务链路。

查看价格
服务热线 400-112-2951

让我们聊聊你的 IDC 业务

扫码添加企业微信,预约产品演示或申请试用。

Toplink 企业微信二维码

长按保存或使用企业微信 / 微信扫描

也可致电
400-112-2951
Telegram
@TopLink88