Skip to content

IP 协议与 IPv4 寻址

基于 HTTP 现代标准 · 核于 2026-06

速查

  • IP(Internet Protocol,网际协议)= 网络层的核心协议,干三件事:逻辑寻址(给每台设备一个 IP 地址)、路由(把数据包跨网络送到目的地)、尽力而为投递(best-effort delivery)。
  • IP 是无连接、不可靠的:发包前不建连、不握手,不保证送达、不保证顺序、不保证不重复——可靠性由上层的 TCP 按需补足,UDP 则原样暴露这种不可靠。
  • 数据被切成「包(packet)」:每个包加一个 IP 首部,记录源 IP、目的 IP 等信息,路由器据此转发。
  • IPv4 地址 = 32 位二进制,写成点分十进制 a.b.c.d,每段 0~255(8 bit),共约 2³² ≈ 42.9 亿个地址。
  • 地址 = 网络号 + 主机号:前缀部分标识「在哪个网络」,后缀部分标识「网络内的哪台主机」;两者的分界由子网掩码 / 前缀长度决定(详见下一页)。
  • 传统分类 A/B/C/D/E 按首字节高位比特划分网络/主机边界,1993 年起被 CIDR(无类域间路由)取代,今天只作历史概念理解。
  • 公网地址全球唯一,需向机构申请;私有地址10/8172.16/12192.168/16,RFC 1918)可在内网自由复用,靠 NAT 出公网。
  • 特殊地址0.0.0.0(本机/未知)、127.0.0.1 环回(localhost)、255.255.255.255 受限广播、224.0.0.0/4 组播、169.254.0.0/16 链路本地。
  • IPv4 首部共 14 个字段(其中 1 个可选),前端最该认得:版本 VersionTTL(跳数上限,防包打转)、协议号 Protocol(上层是谁:TCP=6 / UDP=17 / ICMP=1)、源 IP / 目的 IP
  • 子网掩码与 CIDR 计算细节见子网掩码与 CIDR 划分;IPv6 见IPv6 与过渡技术;路由器如何选路见路由原理与路由器/网关

一、IP 协议是什么:网络层的「快递地址系统」

打开任意一个网站,数据要跨越无数路由器、穿过若干运营商的网络才能到你电脑。让数据「找得到路、到得了目的地」的,正是 IP 协议——它工作在网络分层模型的网络层(第 3 层)。Cloudflare 给出的定性很直白:

The Internet Protocol (IP) is a protocol, or set of rules, for routing and addressing packets of data so that they can travel across networks and arrive at the correct destination. —— Cloudflare, What is the Internet Protocol?

把它类比成寄信最贴切:你要寄一封信,必须按「姓名、街道、城市、邮编」的固定格式写地址,邮局才认;IP 就是互联网世界里那套「地址书写规范 + 投递规则」。IP 干的三件核心工作:

  • 逻辑寻址(Addressing):给每台联网设备分配一个 IP 地址作为唯一标识,就像每个门牌号。
  • 路由(Routing):把数据包按目的 IP 一跳一跳地转发,直到送达——具体怎么选路是路由器的事(详见本叶第 4 页)。
  • 投递(Delivery):尽最大努力把包送到,但只是「尽力」而非「保证」

IP 是「无连接 + 不可靠」的——这不是缺陷,是设计

IP 发包前不建立连接、不握手,每个包独立寻路(可能走不同路径、可能乱序到达、可能丢失)。这叫 best-effort delivery(尽力而为投递)。可靠性被有意「下放」:需要可靠有序就让上层的 TCP 来补(确认、重传、排序),不在乎就用 UDP。正因为 IP 自己「少做事」,互联网才能做到海量路由器低成本转发。

数据包到达目的地后,由哪个传输层协议接手决定后续处理——最常见的就是 TCP 与 UDP,它们的 IP 首部「协议号」分别是 617。这也是 TCP/IPUDP/IP 这些叫法的由来:IP 负责「送到主机」,传输层负责「交给正确的进程并决定可靠性」。

二、IPv4 地址:32 位与点分十进制

我们日常说的「IP 地址」,在 IPv6 尚未完全普及的今天,通常仍指 32 位的 IPv4 地址(MDN 也是这么界定的)。

  • 长度:32 位二进制(4 字节)。
  • 写法:拆成 4 段、每段 8 bit 转成十进制、用点连接,即点分十进制 a.b.c.d,每段范围 0~255
  • 总量:2³² ≈ 42.9 亿个地址——听着多,但全球设备爆炸式增长后早已不够分,这正是私有地址 + NAT 与 IPv6 出现的根因。

例如 192.168.1.1 的二进制是 11000000.10101000.00000001.00000001

2.1 网络号 + 主机号

一个 IPv4 地址在逻辑上分成两部分:

  • 网络号(Network ID):地址的前缀,标识「这台设备在哪个网络」。同一网络内的设备网络号相同。
  • 主机号(Host ID):地址的后缀,标识「该网络内的具体哪台主机」。

分界线在哪?——本页只立概念,计算留给下一页

网络号与主机号的分界位置不是固定的,由子网掩码CIDR 前缀长度(如 /24)决定。比如 192.168.1.10/24 表示前 24 位是网络号、后 8 位是主机号。具体怎么算网段、可用主机数、广播地址,是子网掩码与 CIDR 划分的主题,本页不展开。

三、传统地址分类 A/B/C/D/E(历史,已被 CIDR 取代)

IPv4 诞生之初(1983 年),用首字节的高位比特把地址空间硬切成五类,以此固定网络号/主机号的边界:

类别首位比特首字节范围默认网络/主机划分典型用途
A01~1268 位网络 + 24 位主机超大型网络(每个网段 ~1670 万主机)
B10128~19116 位网络 + 16 位主机大中型网络(每个网段 ~6.5 万主机)
C110192~22324 位网络 + 8 位主机小型网络(每个网段 254 台主机)
D1110224~239不分网络/主机组播(Multicast)
E1111240~255不分网络/主机保留 / 实验,不分配给主机

分类法已是「历史名词」——1993 年起被 CIDR 取代

固定边界太浪费:一个机构要 300 个地址,给 C 类(254 个)不够、给 B 类(6.5 万个)又巨量浪费。1993 年 RFC 1517 等引入 CIDR(Classless Inter-Domain Routing,无类域间路由),用 /n 任意指定网络号位数,彻底废除「类」的概念。所以今天遇到「A/B/C 类」只需作为历史概念理解;真正的划分方法(变长子网、/n 前缀)见下一页

四、公网地址 vs 私有地址

并非所有 IPv4 地址都能在互联网上「裸奔」。RFC 1918 划出三段私有地址,专供内网使用、不会出现在公网路由表里,因此可在千千万万个局域网里重复使用

私有地址段CIDR 写法地址数量常见场景
10.0.0.010.0.0.0/8~1670 万大型企业 / 数据中心内网
172.16.0.0172.16.0.0/12~104 万中型网络
192.168.0.0192.168.0.0/1665536家用路由器、小型办公网
  • 公网地址(Public):全球唯一,由 IANA / 区域注册机构(RIR)分配,能被互联网直接路由到。
  • 私有地址(Private):内网自治,多个家庭都用 192.168.1.x 互不冲突;要访问公网时,由路由器做 NAT(网络地址转换) 把私有地址映射成公网地址出去。

为什么你家和邻居家都是 192.168.1.1?

因为私有地址本就允许复用——它们被「关」在各自的局域网里,永远不进公网路由。NAT 与 DHCP(私有地址怎么自动分配)是本叶第 6 页的主题,本页只需记住「私有地址可复用、靠 NAT 出网」。

五、特殊地址:不是给主机「正常用」的那些

有些地址被保留作特定用途,前端调试时经常打照面:

地址 / 网段名称含义与用途
0.0.0.0本机 / 未指定「本网络上的本主机」;服务端 bind 0.0.0.0 表示监听所有网卡
127.0.0.1/8环回 Loopbacklocalhost,指向本机自己,数据不出网卡,用于本地调试
255.255.255.255受限广播发给本网段所有主机,路由器不转发(如 DHCP 发现阶段)
224.0.0.0/4组播 Multicast发给「订阅了某组」的一组主机(旧 D 类),用于音视频分发等
169.254.0.0/16链路本地主机拿不到 DHCP 时自动生成的临时地址(APIPA),仅本链路有效

127.0.0.10.0.0.0 别混

127.0.0.1访问端地址——「连我自己」;0.0.0.0 在服务端是监听端含义——「监听本机所有 IP」。所以本地起服务后,浏览器访问 http://127.0.0.1:端口,而服务监听 0.0.0.0:端口 既能被 127.0.0.1 也能被局域网其他机器访问到。这是前端起本地 dev server 时最常踩的概念点。

六、IPv4 数据包首部要点

IP 把数据切成包后,给每个包前置一个 IP 首部(header)——一串记录投递信息的比特。Cloudflare 指出 IPv4 首部共有 14 个字段(其中 1 个可选)。完整字段交给专门资料,这里只挑前端最该认得的几个:

字段作用
版本 Version4 bit,标明是 IPv4(值 4)还是 IPv6(值 6
首部长度 IHL首部本身多长(因为有可选字段,首部长度可变)
总长度 Total Length整个包(首部 + 数据)的字节数
TTLTime To Live,跳数上限:每过一个路由器减 1,减到 0 就丢弃——防止包在环路里无限打转
协议号 Protocol上层是哪个协议,决定数据交给谁:TCP=6 / UDP=17 / ICMP=1
首部校验和 Checksum仅校验首部是否出错(不含数据),出错则丢弃
源 IP 地址32 位,发送方地址(相当于信封上的「寄件人」)
目的 IP 地址32 位,接收方地址(相当于「收件人」),路由器据此选路

TTL 与 ICMP:traceroute 的原理伏笔

TTL 减到 0 时,丢弃它的路由器会回一个 ICMP 超时报文。traceroute 正是故意用递增的 TTL(1、2、3……)发包,逐跳「逼出」沿途每个路由器的地址,从而画出完整路径。ICMP、pingtraceroute 的细节见本叶第 5 页,这里只埋下「TTL 不只是防打转,还能用来探路」的伏笔。

协议号 ≠ 端口号

协议号IP 首部里,区分上层是 TCP 还是 UDP(数值 6 / 17);端口号TCP/UDP 首部里,区分同一主机上的不同进程(如 80、443)。一个在网络层、一个在传输层,分工不同,别混为一谈。

小结

  • IP 是网络层核心协议,负责逻辑寻址 + 路由 + 尽力而为投递;它无连接、不可靠,可靠性按需交给上层 TCP(或被 UDP 原样暴露)。
  • IPv4 地址是 32 位、点分十进制 a.b.c.d,逻辑上分网络号 + 主机号,分界由子网掩码 / 前缀长度决定。
  • 传统 A/B/C/D/E 分类按首字节高位划界,1993 年起被 CIDR 取代,今天仅作历史概念。
  • 公网地址全球唯一、私有地址(10/8172.16/12192.168/16)可内网复用靠 NAT 出网;牢记 0.0.0.0 / 127.0.0.1 / 255.255.255.255 / 组播 / 链路本地等特殊地址。
  • IPv4 首部共 14 字段,前端重点认 Version / TTL / 协议号(TCP=6、UDP=17、ICMP=1)/ 源 IP / 目的 IP

本页立好了「IP 地址 = 网络号 + 主机号」的概念地基,但分界线到底怎么算、一个网段能放多少台主机、广播地址是哪个——这些计算细节正是下一页的主场:子网掩码与 CIDR 划分