第 8 篇:IP 地址:互联网的门牌号


上一篇我们讲了交换机:主机靠 ARP 找 MAC,交换机靠 MAC 表找端口。今天开始进入网络层,聊一个所有人都见过、但很多人没真正想清楚的东西:IP 地址。


开场:IP 地址是不是电脑的"身份证"?

很多人刚学网络时,会听到一句话:

IP 地址就是电脑在网络里的身份证。

这句话不能说完全错。

但它很容易让人误会。

身份证通常比较稳定。

而 IP 地址经常会变

  • 你换个 Wi-Fi,IP 可能变
  • 你重启路由器,公网 IP 可能变
  • 你开个容器,里面又冒出一堆 IP
  • 你上云之后,一台机器可能有私网 IP、公网 IP、弹性 IP、VIP、Pod IP、Service IP

身份证听了都想报警:

你们网络层身份管理是不是有点混乱?

所以更准确的说法是:

🔧 IP 地址是网络层用来标识主机或接口位置的地址。

再通俗一点:

IP 地址像互联网里的门牌号,用来告诉数据包要去哪里。

但这个"门牌号"不是永远固定的。

它可以被分配、回收、转换、隐藏、复用。

所以这一篇我们不只讲"IP 地址长什么样"。

更要讲清楚:

  • IP 地址为什么存在?
  • 它和 MAC 地址有什么区别?
  • 公网 IP、私网 IP、回环地址分别是什么?
  • 为什么 192.168.x.x 到处都是?
  • 工程排查时看到 IP,应该怎么判断问题在哪?

先给结论:

MAC 负责当前链路的下一跳,IP 负责跨网络的最终目的地。

用前几篇的话串起来:

IP 管远方,MAC 管眼前。

这句话又来了。它不是水字数,它是网络基础里的高频考点,也是抓包时防止怀疑人生的护身符。


🔧 先看一张总览图:IP 和 MAC 的分工

假设你的电脑访问一台公网服务器。

text 复制代码
你的电脑私网 IP:192.168.1.10
家庭网关 IP:192.168.1.1
公网服务器 IP:93.184.216.34

数据包的目标 IP 是公网服务器。

但第一跳以太网帧的目标 MAC 是网关。
#mermaid-svg-2sqhrtEiwRu9Azje{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-2sqhrtEiwRu9Azje .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-2sqhrtEiwRu9Azje .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-2sqhrtEiwRu9Azje .error-icon{fill:#552222;}#mermaid-svg-2sqhrtEiwRu9Azje .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-2sqhrtEiwRu9Azje .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-2sqhrtEiwRu9Azje .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-2sqhrtEiwRu9Azje .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-2sqhrtEiwRu9Azje .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-2sqhrtEiwRu9Azje .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-2sqhrtEiwRu9Azje .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-2sqhrtEiwRu9Azje .marker{fill:#333333;stroke:#333333;}#mermaid-svg-2sqhrtEiwRu9Azje .marker.cross{stroke:#333333;}#mermaid-svg-2sqhrtEiwRu9Azje svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-2sqhrtEiwRu9Azje p{margin:0;}#mermaid-svg-2sqhrtEiwRu9Azje .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-2sqhrtEiwRu9Azje .cluster-label text{fill:#333;}#mermaid-svg-2sqhrtEiwRu9Azje .cluster-label span{color:#333;}#mermaid-svg-2sqhrtEiwRu9Azje .cluster-label span p{background-color:transparent;}#mermaid-svg-2sqhrtEiwRu9Azje .label text,#mermaid-svg-2sqhrtEiwRu9Azje span{fill:#333;color:#333;}#mermaid-svg-2sqhrtEiwRu9Azje .node rect,#mermaid-svg-2sqhrtEiwRu9Azje .node circle,#mermaid-svg-2sqhrtEiwRu9Azje .node ellipse,#mermaid-svg-2sqhrtEiwRu9Azje .node polygon,#mermaid-svg-2sqhrtEiwRu9Azje .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-2sqhrtEiwRu9Azje .rough-node .label text,#mermaid-svg-2sqhrtEiwRu9Azje .node .label text,#mermaid-svg-2sqhrtEiwRu9Azje .image-shape .label,#mermaid-svg-2sqhrtEiwRu9Azje .icon-shape .label{text-anchor:middle;}#mermaid-svg-2sqhrtEiwRu9Azje .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-2sqhrtEiwRu9Azje .rough-node .label,#mermaid-svg-2sqhrtEiwRu9Azje .node .label,#mermaid-svg-2sqhrtEiwRu9Azje .image-shape .label,#mermaid-svg-2sqhrtEiwRu9Azje .icon-shape .label{text-align:center;}#mermaid-svg-2sqhrtEiwRu9Azje .node.clickable{cursor:pointer;}#mermaid-svg-2sqhrtEiwRu9Azje .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-2sqhrtEiwRu9Azje .arrowheadPath{fill:#333333;}#mermaid-svg-2sqhrtEiwRu9Azje .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-2sqhrtEiwRu9Azje .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-2sqhrtEiwRu9Azje .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-2sqhrtEiwRu9Azje .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-2sqhrtEiwRu9Azje .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-2sqhrtEiwRu9Azje .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-2sqhrtEiwRu9Azje .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-2sqhrtEiwRu9Azje .cluster text{fill:#333;}#mermaid-svg-2sqhrtEiwRu9Azje .cluster span{color:#333;}#mermaid-svg-2sqhrtEiwRu9Azje div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-2sqhrtEiwRu9Azje .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-2sqhrtEiwRu9Azje rect.text{fill:none;stroke-width:0;}#mermaid-svg-2sqhrtEiwRu9Azje .icon-shape,#mermaid-svg-2sqhrtEiwRu9Azje .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-2sqhrtEiwRu9Azje .icon-shape p,#mermaid-svg-2sqhrtEiwRu9Azje .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-2sqhrtEiwRu9Azje .icon-shape .label rect,#mermaid-svg-2sqhrtEiwRu9Azje .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-2sqhrtEiwRu9Azje .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-2sqhrtEiwRu9Azje .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-2sqhrtEiwRu9Azje :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 你的电脑

IP: 192.168.1.10

MAC: AA:AA
家庭网关

LAN IP: 192.168.1.1

MAC: GG:GG
互联网路由器
公网服务器

IP: 93.184.216.34

图上标注说明:

  • IP 目标:公网服务器(93.184.216.34)
  • 第一跳 MAC 目标:网关(GG:GG)

这里有两个层次:

层次 地址 作用
网络层 IP 地址 标识最终目的地和路由方向
数据链路层 MAC 地址 标识当前链路上的下一跳

用一句话说:

IP 决定"远方是谁",MAC 决定"下一步交给谁"。

这就是为什么你访问公网网站时,抓包看到:

text 复制代码
目标 IP:公网服务器
目标 MAC:网关

这完全正常。不是包人格分裂,它只是分层工作。


IPv4 地址长什么样?

我们最常见的是 IPv4 地址。

它是 32 位,也就是 4 个字节。

通常写成点分十进制

text 复制代码
192.168.1.10

每一段是 8 位,取值范围是 0 到 255。

text 复制代码
192       168       1         10
11000000  10101000  00000001  00001010

#mermaid-svg-hQ6uyQro8EF0iDKa{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-hQ6uyQro8EF0iDKa .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-hQ6uyQro8EF0iDKa .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-hQ6uyQro8EF0iDKa .error-icon{fill:#552222;}#mermaid-svg-hQ6uyQro8EF0iDKa .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hQ6uyQro8EF0iDKa .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-hQ6uyQro8EF0iDKa .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hQ6uyQro8EF0iDKa .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hQ6uyQro8EF0iDKa .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-hQ6uyQro8EF0iDKa .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hQ6uyQro8EF0iDKa .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hQ6uyQro8EF0iDKa .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hQ6uyQro8EF0iDKa .marker.cross{stroke:#333333;}#mermaid-svg-hQ6uyQro8EF0iDKa svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hQ6uyQro8EF0iDKa p{margin:0;}#mermaid-svg-hQ6uyQro8EF0iDKa .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-hQ6uyQro8EF0iDKa .cluster-label text{fill:#333;}#mermaid-svg-hQ6uyQro8EF0iDKa .cluster-label span{color:#333;}#mermaid-svg-hQ6uyQro8EF0iDKa .cluster-label span p{background-color:transparent;}#mermaid-svg-hQ6uyQro8EF0iDKa .label text,#mermaid-svg-hQ6uyQro8EF0iDKa span{fill:#333;color:#333;}#mermaid-svg-hQ6uyQro8EF0iDKa .node rect,#mermaid-svg-hQ6uyQro8EF0iDKa .node circle,#mermaid-svg-hQ6uyQro8EF0iDKa .node ellipse,#mermaid-svg-hQ6uyQro8EF0iDKa .node polygon,#mermaid-svg-hQ6uyQro8EF0iDKa .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hQ6uyQro8EF0iDKa .rough-node .label text,#mermaid-svg-hQ6uyQro8EF0iDKa .node .label text,#mermaid-svg-hQ6uyQro8EF0iDKa .image-shape .label,#mermaid-svg-hQ6uyQro8EF0iDKa .icon-shape .label{text-anchor:middle;}#mermaid-svg-hQ6uyQro8EF0iDKa .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-hQ6uyQro8EF0iDKa .rough-node .label,#mermaid-svg-hQ6uyQro8EF0iDKa .node .label,#mermaid-svg-hQ6uyQro8EF0iDKa .image-shape .label,#mermaid-svg-hQ6uyQro8EF0iDKa .icon-shape .label{text-align:center;}#mermaid-svg-hQ6uyQro8EF0iDKa .node.clickable{cursor:pointer;}#mermaid-svg-hQ6uyQro8EF0iDKa .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-hQ6uyQro8EF0iDKa .arrowheadPath{fill:#333333;}#mermaid-svg-hQ6uyQro8EF0iDKa .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hQ6uyQro8EF0iDKa .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hQ6uyQro8EF0iDKa .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hQ6uyQro8EF0iDKa .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-hQ6uyQro8EF0iDKa .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hQ6uyQro8EF0iDKa .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-hQ6uyQro8EF0iDKa .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hQ6uyQro8EF0iDKa .cluster text{fill:#333;}#mermaid-svg-hQ6uyQro8EF0iDKa .cluster span{color:#333;}#mermaid-svg-hQ6uyQro8EF0iDKa div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hQ6uyQro8EF0iDKa .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-hQ6uyQro8EF0iDKa rect.text{fill:none;stroke-width:0;}#mermaid-svg-hQ6uyQro8EF0iDKa .icon-shape,#mermaid-svg-hQ6uyQro8EF0iDKa .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hQ6uyQro8EF0iDKa .icon-shape p,#mermaid-svg-hQ6uyQro8EF0iDKa .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-hQ6uyQro8EF0iDKa .icon-shape .label rect,#mermaid-svg-hQ6uyQro8EF0iDKa .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hQ6uyQro8EF0iDKa .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-hQ6uyQro8EF0iDKa .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-hQ6uyQro8EF0iDKa :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} IPv4 地址

32 位
8位

192
8位

168
8位

1
8位

10

所以 999.1.1.1 不是合法 IPv4 地址。

因为 999 超过了 8 位能表示的范围。

这就像门牌号写成"第 999999999 栋,第 -3 单元",物业看了也沉默。

IPv4 地址总数量:

text 复制代码
2^32 = 4,294,967,296

大约 43 亿个。

听起来很多。

但放到全球互联网、手机、服务器、摄像头、路由器、虚拟机、容器、IoT 设备里,就不太够了

所以后来才会有:

  • 私网地址
  • NAT
  • IPv6

这些都不是凭空冒出来的复杂度。它们背后有一个很现实的问题:

IPv4 地址不够用了。

网络很多设计,归根到底都是资源和规模逼出来的。不是协议设计者喜欢给后人出题------虽然看起来确实有点像。


🔧 IP 地址不是一整块:网络部分和主机部分

一个 IP 地址不能孤立理解

它通常要和子网掩码一起看。

比如:

text 复制代码
192.168.1.10/24

这里 /24 表示前 24 位是网络部分,后 8 位是主机部分。

text 复制代码
192.168.1.10/24
└───────┬──────┘
     网络部分
             └ 主机部分

更直观地看:

text 复制代码
IP 地址:  192.168.1.10
掩码:     255.255.255.0
网络号:   192.168.1.0
主机号:   10

#mermaid-svg-Z1lqjQd5bbkDsaSJ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .error-icon{fill:#552222;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .marker.cross{stroke:#333333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Z1lqjQd5bbkDsaSJ p{margin:0;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .cluster-label text{fill:#333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .cluster-label span{color:#333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .cluster-label span p{background-color:transparent;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .label text,#mermaid-svg-Z1lqjQd5bbkDsaSJ span{fill:#333;color:#333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .node rect,#mermaid-svg-Z1lqjQd5bbkDsaSJ .node circle,#mermaid-svg-Z1lqjQd5bbkDsaSJ .node ellipse,#mermaid-svg-Z1lqjQd5bbkDsaSJ .node polygon,#mermaid-svg-Z1lqjQd5bbkDsaSJ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .rough-node .label text,#mermaid-svg-Z1lqjQd5bbkDsaSJ .node .label text,#mermaid-svg-Z1lqjQd5bbkDsaSJ .image-shape .label,#mermaid-svg-Z1lqjQd5bbkDsaSJ .icon-shape .label{text-anchor:middle;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .rough-node .label,#mermaid-svg-Z1lqjQd5bbkDsaSJ .node .label,#mermaid-svg-Z1lqjQd5bbkDsaSJ .image-shape .label,#mermaid-svg-Z1lqjQd5bbkDsaSJ .icon-shape .label{text-align:center;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .node.clickable{cursor:pointer;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .arrowheadPath{fill:#333333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Z1lqjQd5bbkDsaSJ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Z1lqjQd5bbkDsaSJ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Z1lqjQd5bbkDsaSJ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .cluster text{fill:#333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .cluster span{color:#333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Z1lqjQd5bbkDsaSJ rect.text{fill:none;stroke-width:0;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .icon-shape,#mermaid-svg-Z1lqjQd5bbkDsaSJ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .icon-shape p,#mermaid-svg-Z1lqjQd5bbkDsaSJ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .icon-shape .label rect,#mermaid-svg-Z1lqjQd5bbkDsaSJ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Z1lqjQd5bbkDsaSJ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Z1lqjQd5bbkDsaSJ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Z1lqjQd5bbkDsaSJ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 192.168.1.10/24
网络部分

192.168.1
主机部分

10
这个网段是

192.168.1.0/24

为什么要区分网络部分和主机部分?

因为路由转发看的是网络

它不可能给互联网里的每一台设备都单独记一条路由------那路由表会大到怀疑人生。

所以路由通常按网段汇总

text 复制代码
去 192.168.1.0/24 这个网段,走某个方向。
去 10.0.0.0/8 这个网段,走另一个方向。

这就像快递分拣:不会一开始就按每个人姓名分,先按省、市、区分,最后才到具体门牌。网络也是这样:先找网段,再找主机。

核心结论:

IP 地址必须结合掩码,才能判断它属于哪个网络。

只看 192.168.1.10,你知道它长什么样。结合 /24,你才知道它住在哪个"小区"。


公网 IP 和私网 IP

你可能经常看到这些地址:

text 复制代码
192.168.1.1
192.168.0.1
10.0.0.1
172.16.0.1

它们大概率是私网 IP

私网 IP 是保留给内部网络使用的地址,不直接在公网互联网中路由

常见私网地址范围:

地址范围 CIDR 表示 常见场景
10.0.0.0 - 10.255.255.255 10.0.0.0/8 企业内网、云 VPC
172.16.0.0 - 172.31.255.255 172.16.0.0/12 企业网络、容器网络
192.168.0.0 - 192.168.255.255 192.168.0.0/16 家用路由器、小型网络

为什么家里的路由器经常是 192.168.1.1

因为这个范围就是给内部网络用的。

你的电脑可能是 192.168.1.10,手机可能是 192.168.1.11,电视可能是 192.168.1.12

但这些地址不能直接在公网里唯一标识你家设备

因为隔壁家也可能有一台电脑叫 192.168.1.10,再隔壁也有,全国人民都可以有。

这就像每个小区里都可以有 1 号楼 101。但寄快递不能只写"1号楼101",你还得写城市、小区、街道。

公网 IP 则是公网互联网中可路由的地址,它更像全网意义上的地址

家庭网络访问互联网时,通常会经过 NAT(网络地址转换):
#mermaid-svg-pdwPvVONm3YcrKFm{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-pdwPvVONm3YcrKFm .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-pdwPvVONm3YcrKFm .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-pdwPvVONm3YcrKFm .error-icon{fill:#552222;}#mermaid-svg-pdwPvVONm3YcrKFm .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-pdwPvVONm3YcrKFm .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-pdwPvVONm3YcrKFm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-pdwPvVONm3YcrKFm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-pdwPvVONm3YcrKFm .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-pdwPvVONm3YcrKFm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-pdwPvVONm3YcrKFm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-pdwPvVONm3YcrKFm .marker{fill:#333333;stroke:#333333;}#mermaid-svg-pdwPvVONm3YcrKFm .marker.cross{stroke:#333333;}#mermaid-svg-pdwPvVONm3YcrKFm svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-pdwPvVONm3YcrKFm p{margin:0;}#mermaid-svg-pdwPvVONm3YcrKFm .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-pdwPvVONm3YcrKFm .cluster-label text{fill:#333;}#mermaid-svg-pdwPvVONm3YcrKFm .cluster-label span{color:#333;}#mermaid-svg-pdwPvVONm3YcrKFm .cluster-label span p{background-color:transparent;}#mermaid-svg-pdwPvVONm3YcrKFm .label text,#mermaid-svg-pdwPvVONm3YcrKFm span{fill:#333;color:#333;}#mermaid-svg-pdwPvVONm3YcrKFm .node rect,#mermaid-svg-pdwPvVONm3YcrKFm .node circle,#mermaid-svg-pdwPvVONm3YcrKFm .node ellipse,#mermaid-svg-pdwPvVONm3YcrKFm .node polygon,#mermaid-svg-pdwPvVONm3YcrKFm .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-pdwPvVONm3YcrKFm .rough-node .label text,#mermaid-svg-pdwPvVONm3YcrKFm .node .label text,#mermaid-svg-pdwPvVONm3YcrKFm .image-shape .label,#mermaid-svg-pdwPvVONm3YcrKFm .icon-shape .label{text-anchor:middle;}#mermaid-svg-pdwPvVONm3YcrKFm .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-pdwPvVONm3YcrKFm .rough-node .label,#mermaid-svg-pdwPvVONm3YcrKFm .node .label,#mermaid-svg-pdwPvVONm3YcrKFm .image-shape .label,#mermaid-svg-pdwPvVONm3YcrKFm .icon-shape .label{text-align:center;}#mermaid-svg-pdwPvVONm3YcrKFm .node.clickable{cursor:pointer;}#mermaid-svg-pdwPvVONm3YcrKFm .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-pdwPvVONm3YcrKFm .arrowheadPath{fill:#333333;}#mermaid-svg-pdwPvVONm3YcrKFm .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-pdwPvVONm3YcrKFm .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-pdwPvVONm3YcrKFm .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pdwPvVONm3YcrKFm .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-pdwPvVONm3YcrKFm .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pdwPvVONm3YcrKFm .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-pdwPvVONm3YcrKFm .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-pdwPvVONm3YcrKFm .cluster text{fill:#333;}#mermaid-svg-pdwPvVONm3YcrKFm .cluster span{color:#333;}#mermaid-svg-pdwPvVONm3YcrKFm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-pdwPvVONm3YcrKFm .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-pdwPvVONm3YcrKFm rect.text{fill:none;stroke-width:0;}#mermaid-svg-pdwPvVONm3YcrKFm .icon-shape,#mermaid-svg-pdwPvVONm3YcrKFm .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pdwPvVONm3YcrKFm .icon-shape p,#mermaid-svg-pdwPvVONm3YcrKFm .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-pdwPvVONm3YcrKFm .icon-shape .label rect,#mermaid-svg-pdwPvVONm3YcrKFm .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pdwPvVONm3YcrKFm .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-pdwPvVONm3YcrKFm .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-pdwPvVONm3YcrKFm :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 电脑

192.168.1.10
家用路由器

内网: 192.168.1.1

公网: 203.0.113.8
互联网
服务器

93.184.216.34

🔧 核心结论:私网 IP 可以重复出现在不同内网里,公网 IP 才在公网路由范围内有全局意义。

别看到自己电脑是 192.168.1.10,就以为全世界只有你叫这个。可能全世界有几亿台设备都这么叫。互联网没有混乱,是因为它们都躲在各自的小区里。


回环地址:127.0.0.1 是谁?

你一定见过:

text 复制代码
127.0.0.1
localhost

它通常表示本机

也叫回环地址

当你访问:

bash 复制代码
curl http://127.0.0.1:8080

意思是访问自己这台机器上的 8080 端口

这个流量不会真的从网卡发到交换机再绕一圈回来,它在本机协议栈里就完成了。
#mermaid-svg-v5BneAZRJsTwoaBI{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-v5BneAZRJsTwoaBI .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-v5BneAZRJsTwoaBI .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-v5BneAZRJsTwoaBI .error-icon{fill:#552222;}#mermaid-svg-v5BneAZRJsTwoaBI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-v5BneAZRJsTwoaBI .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-v5BneAZRJsTwoaBI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-v5BneAZRJsTwoaBI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-v5BneAZRJsTwoaBI .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-v5BneAZRJsTwoaBI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-v5BneAZRJsTwoaBI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-v5BneAZRJsTwoaBI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-v5BneAZRJsTwoaBI .marker.cross{stroke:#333333;}#mermaid-svg-v5BneAZRJsTwoaBI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-v5BneAZRJsTwoaBI p{margin:0;}#mermaid-svg-v5BneAZRJsTwoaBI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-v5BneAZRJsTwoaBI .cluster-label text{fill:#333;}#mermaid-svg-v5BneAZRJsTwoaBI .cluster-label span{color:#333;}#mermaid-svg-v5BneAZRJsTwoaBI .cluster-label span p{background-color:transparent;}#mermaid-svg-v5BneAZRJsTwoaBI .label text,#mermaid-svg-v5BneAZRJsTwoaBI span{fill:#333;color:#333;}#mermaid-svg-v5BneAZRJsTwoaBI .node rect,#mermaid-svg-v5BneAZRJsTwoaBI .node circle,#mermaid-svg-v5BneAZRJsTwoaBI .node ellipse,#mermaid-svg-v5BneAZRJsTwoaBI .node polygon,#mermaid-svg-v5BneAZRJsTwoaBI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-v5BneAZRJsTwoaBI .rough-node .label text,#mermaid-svg-v5BneAZRJsTwoaBI .node .label text,#mermaid-svg-v5BneAZRJsTwoaBI .image-shape .label,#mermaid-svg-v5BneAZRJsTwoaBI .icon-shape .label{text-anchor:middle;}#mermaid-svg-v5BneAZRJsTwoaBI .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-v5BneAZRJsTwoaBI .rough-node .label,#mermaid-svg-v5BneAZRJsTwoaBI .node .label,#mermaid-svg-v5BneAZRJsTwoaBI .image-shape .label,#mermaid-svg-v5BneAZRJsTwoaBI .icon-shape .label{text-align:center;}#mermaid-svg-v5BneAZRJsTwoaBI .node.clickable{cursor:pointer;}#mermaid-svg-v5BneAZRJsTwoaBI .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-v5BneAZRJsTwoaBI .arrowheadPath{fill:#333333;}#mermaid-svg-v5BneAZRJsTwoaBI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-v5BneAZRJsTwoaBI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-v5BneAZRJsTwoaBI .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-v5BneAZRJsTwoaBI .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-v5BneAZRJsTwoaBI .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-v5BneAZRJsTwoaBI .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-v5BneAZRJsTwoaBI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-v5BneAZRJsTwoaBI .cluster text{fill:#333;}#mermaid-svg-v5BneAZRJsTwoaBI .cluster span{color:#333;}#mermaid-svg-v5BneAZRJsTwoaBI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-v5BneAZRJsTwoaBI .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-v5BneAZRJsTwoaBI rect.text{fill:none;stroke-width:0;}#mermaid-svg-v5BneAZRJsTwoaBI .icon-shape,#mermaid-svg-v5BneAZRJsTwoaBI .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-v5BneAZRJsTwoaBI .icon-shape p,#mermaid-svg-v5BneAZRJsTwoaBI .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-v5BneAZRJsTwoaBI .icon-shape .label rect,#mermaid-svg-v5BneAZRJsTwoaBI .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-v5BneAZRJsTwoaBI .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-v5BneAZRJsTwoaBI .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-v5BneAZRJsTwoaBI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 不会经过物理网卡
应用程序
访问 127.0.0.1
本机 TCP/IP 协议栈
本机服务进程
外部网络

回环地址很适合本地开发和测试。

比如你启动一个 Web 服务:

bash 复制代码
python3 -m http.server 8080

然后访问:

bash 复制代码
curl http://127.0.0.1:8080

如果能访问,说明服务在本机可用。

但这不代表别人也能访问 ------因为它可能只监听在 127.0.0.1 上。

服务监听地址不同,可访问范围不同:

监听地址 含义
127.0.0.1 只允许本机访问
0.0.0.0 监听所有本机网卡地址
某个具体 IP 只监听指定网卡地址

很多开发同学遇到过这种情况:"我本机 curl 明明通,为什么别人访问不通?"原因之一就是服务只绑定了 127.0.0.1。它相当于只在家里客厅开了个窗口,你在客厅能喊到,楼下的人听不到。


0.0.0.0 又是什么?

0.0.0.0 是一个容易让人困惑的地址。

它在不同场景里含义略有不同。

1. 服务监听时的 0.0.0.0

如果一个服务监听:

text 复制代码
0.0.0.0:8080

通常表示:

监听本机所有 IPv4 地址上的 8080 端口。

比如你的机器有:

text 复制代码
127.0.0.1
192.168.1.10
10.0.0.5

服务监听 0.0.0.0:8080,就意味着这些地址都可能访问到它

当然,防火墙、安全组、路由还可能拦住。

网络世界没有一句"我监听了"就万事大吉。它像职场协作------你发了消息,不代表对方收到了。

2. 路由表里的 0.0.0.0/0

你在 Linux 上看路由:

bash 复制代码
ip route

可能看到:

text 复制代码
default via 192.168.1.1 dev eth0

或者:

text 复制代码
0.0.0.0/0 via 192.168.1.1 dev eth0

0.0.0.0/0 表示默认路由

也就是:
如果没有更具体的路由,就走这里。
#mermaid-svg-Lw2rx5Q69aUx9hUP{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Lw2rx5Q69aUx9hUP .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Lw2rx5Q69aUx9hUP .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Lw2rx5Q69aUx9hUP .error-icon{fill:#552222;}#mermaid-svg-Lw2rx5Q69aUx9hUP .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Lw2rx5Q69aUx9hUP .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Lw2rx5Q69aUx9hUP .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Lw2rx5Q69aUx9hUP .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Lw2rx5Q69aUx9hUP .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Lw2rx5Q69aUx9hUP .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Lw2rx5Q69aUx9hUP .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Lw2rx5Q69aUx9hUP .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Lw2rx5Q69aUx9hUP .marker.cross{stroke:#333333;}#mermaid-svg-Lw2rx5Q69aUx9hUP svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Lw2rx5Q69aUx9hUP p{margin:0;}#mermaid-svg-Lw2rx5Q69aUx9hUP .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Lw2rx5Q69aUx9hUP .cluster-label text{fill:#333;}#mermaid-svg-Lw2rx5Q69aUx9hUP .cluster-label span{color:#333;}#mermaid-svg-Lw2rx5Q69aUx9hUP .cluster-label span p{background-color:transparent;}#mermaid-svg-Lw2rx5Q69aUx9hUP .label text,#mermaid-svg-Lw2rx5Q69aUx9hUP span{fill:#333;color:#333;}#mermaid-svg-Lw2rx5Q69aUx9hUP .node rect,#mermaid-svg-Lw2rx5Q69aUx9hUP .node circle,#mermaid-svg-Lw2rx5Q69aUx9hUP .node ellipse,#mermaid-svg-Lw2rx5Q69aUx9hUP .node polygon,#mermaid-svg-Lw2rx5Q69aUx9hUP .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Lw2rx5Q69aUx9hUP .rough-node .label text,#mermaid-svg-Lw2rx5Q69aUx9hUP .node .label text,#mermaid-svg-Lw2rx5Q69aUx9hUP .image-shape .label,#mermaid-svg-Lw2rx5Q69aUx9hUP .icon-shape .label{text-anchor:middle;}#mermaid-svg-Lw2rx5Q69aUx9hUP .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Lw2rx5Q69aUx9hUP .rough-node .label,#mermaid-svg-Lw2rx5Q69aUx9hUP .node .label,#mermaid-svg-Lw2rx5Q69aUx9hUP .image-shape .label,#mermaid-svg-Lw2rx5Q69aUx9hUP .icon-shape .label{text-align:center;}#mermaid-svg-Lw2rx5Q69aUx9hUP .node.clickable{cursor:pointer;}#mermaid-svg-Lw2rx5Q69aUx9hUP .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Lw2rx5Q69aUx9hUP .arrowheadPath{fill:#333333;}#mermaid-svg-Lw2rx5Q69aUx9hUP .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Lw2rx5Q69aUx9hUP .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Lw2rx5Q69aUx9hUP .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Lw2rx5Q69aUx9hUP .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Lw2rx5Q69aUx9hUP .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Lw2rx5Q69aUx9hUP .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Lw2rx5Q69aUx9hUP .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Lw2rx5Q69aUx9hUP .cluster text{fill:#333;}#mermaid-svg-Lw2rx5Q69aUx9hUP .cluster span{color:#333;}#mermaid-svg-Lw2rx5Q69aUx9hUP div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Lw2rx5Q69aUx9hUP .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Lw2rx5Q69aUx9hUP rect.text{fill:none;stroke-width:0;}#mermaid-svg-Lw2rx5Q69aUx9hUP .icon-shape,#mermaid-svg-Lw2rx5Q69aUx9hUP .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Lw2rx5Q69aUx9hUP .icon-shape p,#mermaid-svg-Lw2rx5Q69aUx9hUP .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Lw2rx5Q69aUx9hUP .icon-shape .label rect,#mermaid-svg-Lw2rx5Q69aUx9hUP .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Lw2rx5Q69aUx9hUP .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Lw2rx5Q69aUx9hUP .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Lw2rx5Q69aUx9hUP :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 有
没有
目标 IP
路由表有更具体匹配吗?
走具体路由
走默认路由

0.0.0.0/0
网关

🔧 核心结论0.0.0.0 不是一个你平时拿来访问的网站地址。它更像一个特殊符号------在监听里表示"所有本机地址",在路由里表示"所有 IPv4 目的地"。同一个写法,不同上下文。网络就是这么讲究语境,像中文里的"行"------你说它到底读 háng 还是 xíng?得看场景。


IP 地址是分配给主机,还是分配给网卡?

严格说,IP 地址通常配置在网络接口上

一台机器可以有多个网卡。

一个网卡也可以有多个 IP。

比如 Linux 上执行:

bash 复制代码
ip addr

你可能看到:

text 复制代码
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
    inet 192.168.1.10/24 scope global eth0
    inet 192.168.1.20/24 scope global secondary eth0

这说明 eth0 上有多个 IPv4 地址

也可能一台服务器有多块网卡:

text 复制代码
eth0:10.0.0.10/24
eth1:172.16.0.10/24

#mermaid-svg-wvadOj1XEoRbezXR{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-wvadOj1XEoRbezXR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-wvadOj1XEoRbezXR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-wvadOj1XEoRbezXR .error-icon{fill:#552222;}#mermaid-svg-wvadOj1XEoRbezXR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wvadOj1XEoRbezXR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-wvadOj1XEoRbezXR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wvadOj1XEoRbezXR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wvadOj1XEoRbezXR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-wvadOj1XEoRbezXR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wvadOj1XEoRbezXR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wvadOj1XEoRbezXR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wvadOj1XEoRbezXR .marker.cross{stroke:#333333;}#mermaid-svg-wvadOj1XEoRbezXR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wvadOj1XEoRbezXR p{margin:0;}#mermaid-svg-wvadOj1XEoRbezXR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-wvadOj1XEoRbezXR .cluster-label text{fill:#333;}#mermaid-svg-wvadOj1XEoRbezXR .cluster-label span{color:#333;}#mermaid-svg-wvadOj1XEoRbezXR .cluster-label span p{background-color:transparent;}#mermaid-svg-wvadOj1XEoRbezXR .label text,#mermaid-svg-wvadOj1XEoRbezXR span{fill:#333;color:#333;}#mermaid-svg-wvadOj1XEoRbezXR .node rect,#mermaid-svg-wvadOj1XEoRbezXR .node circle,#mermaid-svg-wvadOj1XEoRbezXR .node ellipse,#mermaid-svg-wvadOj1XEoRbezXR .node polygon,#mermaid-svg-wvadOj1XEoRbezXR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wvadOj1XEoRbezXR .rough-node .label text,#mermaid-svg-wvadOj1XEoRbezXR .node .label text,#mermaid-svg-wvadOj1XEoRbezXR .image-shape .label,#mermaid-svg-wvadOj1XEoRbezXR .icon-shape .label{text-anchor:middle;}#mermaid-svg-wvadOj1XEoRbezXR .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-wvadOj1XEoRbezXR .rough-node .label,#mermaid-svg-wvadOj1XEoRbezXR .node .label,#mermaid-svg-wvadOj1XEoRbezXR .image-shape .label,#mermaid-svg-wvadOj1XEoRbezXR .icon-shape .label{text-align:center;}#mermaid-svg-wvadOj1XEoRbezXR .node.clickable{cursor:pointer;}#mermaid-svg-wvadOj1XEoRbezXR .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-wvadOj1XEoRbezXR .arrowheadPath{fill:#333333;}#mermaid-svg-wvadOj1XEoRbezXR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wvadOj1XEoRbezXR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wvadOj1XEoRbezXR .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wvadOj1XEoRbezXR .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-wvadOj1XEoRbezXR .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wvadOj1XEoRbezXR .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-wvadOj1XEoRbezXR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wvadOj1XEoRbezXR .cluster text{fill:#333;}#mermaid-svg-wvadOj1XEoRbezXR .cluster span{color:#333;}#mermaid-svg-wvadOj1XEoRbezXR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wvadOj1XEoRbezXR .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-wvadOj1XEoRbezXR rect.text{fill:none;stroke-width:0;}#mermaid-svg-wvadOj1XEoRbezXR .icon-shape,#mermaid-svg-wvadOj1XEoRbezXR .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wvadOj1XEoRbezXR .icon-shape p,#mermaid-svg-wvadOj1XEoRbezXR .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-wvadOj1XEoRbezXR .icon-shape .label rect,#mermaid-svg-wvadOj1XEoRbezXR .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wvadOj1XEoRbezXR .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-wvadOj1XEoRbezXR .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-wvadOj1XEoRbezXR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 一台主机
eth0

10.0.0.10/24
eth1

172.16.0.10/24
lo

127.0.0.1/8

所以不要简单认为:

text 复制代码
一台机器 = 一个 IP

现实里经常是:

text 复制代码
一台机器 = 多个接口 = 多个 IP

在容器和 Kubernetes 里更明显:Pod 有 Pod IP,Service 有 ClusterIP,Node 有节点 IP,Ingress 还有入口 IP。

刚开始看会觉得:"怎么到处都是 IP?"

别慌。先问三个问题:

  1. 这个 IP 配在哪个接口或对象上?
  2. 它属于哪个网段?
  3. 谁能路由到它?

这三个问题比死背概念更有用。


🔧 IP 地址和 MAC 地址的区别再对比一次

我们前面已经讲过 MAC,现在可以把 IP 和 MAC 放在一起再看一遍。

对比项 IP 地址 MAC 地址
所在层次 网络层 数据链路层
主要作用 跨网络寻址和路由 当前链路转发
地址范围 依赖网络规划,可跨网段 当前二层链路内使用
是否会变 经常变化 通常相对稳定,但也可修改/随机化
谁使用 主机、路由器、三层设备 网卡、交换机、二层设备
典型问题 路由、网段、掩码、NAT ARP、交换机转发、MAC 表

用快递系统类比:

快递系统 网络系统
省市区街道门牌 IP 地址
当前快递站的交接人 MAC 地址
分拣路线 路由表
小区内找人 ARP
门卫按楼栋转交 交换机

类比不能完全覆盖技术细节,但能帮你建立直觉。网络排障时,很多问题不是因为你不会命令,而是因为你脑子里没有这张地图。命令只是手电筒,地图才告诉你往哪照。


🧠 工程排查:看到 IP 问题时先看什么?

IP 地址相关问题非常常见。

下面几个命令要熟悉。

1. 查看本机 IP
bash 复制代码
ip addr

重点看:

  • 网卡是否 UP
  • 有没有 IPv4 地址
  • 掩码是否正确
  • IP 是否配置在预期接口上

例如:

text 复制代码
inet 192.168.1.10/24 scope global eth0

说明 eth0 上有 192.168.1.10/24

2. 查看路由表
bash 复制代码
ip route

重点看:

  • 默认路由是否存在
  • 默认网关是否正确
  • 目标网段有没有更具体路由

例如:

text 复制代码
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10

这说明:

  • 192.168.1.0/24 是直连网段
  • 其他目标默认走 192.168.1.1
3. 查看邻居表(ARP 表)
bash 复制代码
ip neigh
  • 如果访问同网段目标不通,要看目标 IP 的 MAC 有没有解析出来
  • 如果访问外网不通,要看网关 IP 的 MAC 有没有解析出来
4. ping 验证连通性
bash 复制代码
ping 192.168.1.1
ping 8.8.8.8

⚠️ 注意:ping 不通不一定代表 IP 不通,可能是防火墙禁了 ICMP。所以 ping 是线索,不是最终判决书。

5. 抓包确认数据有没有出去
bash 复制代码
sudo tcpdump -i eth0 -nn host 192.168.1.1

-nn 表示不要解析域名和服务名,排查时很有用------因为你想看原始 IP,不想让工具热心地帮你翻译。

工具太热心,有时候会制造误会,像某些自动纠错输入法。


常见误区

误区一:IP 地址唯一标识一台机器

不一定。

一台机器可以有多个 IP,一个 IP 也可能因为 NAT、负载均衡、VIP 等机制对应到不同后端。私网 IP 还可以在不同网络里重复使用。

所以"IP 等于一台机器"只是入门阶段的简化说法,工程现场要更谨慎。

误区二:192.168 开头的地址可以直接从公网访问

通常不行。

192.168.0.0/16 是私网地址范围,不直接在公网中路由

如果你想从公网访问家里或公司内网服务,通常需要:

  • 公网 IP
  • NAT / 端口映射
  • VPN
  • 内网穿透
  • 云上的公网入口

别把 http://192.168.1.10:8080 发给外地朋友,然后问他为什么打不开。他打不开是正常的------除非他住你家路由器里面。

误区三:127.0.0.1 能让别人访问我的服务

不行。

127.0.0.1 是本机回环地址。

别人访问自己的 127.0.0.1,访问的是别人自己的机器,不是你的机器。

这句话很重要:每台机器的 127.0.0.1 都是它自己。

你说"访问我的 localhost",对方的电脑会认真访问"它自己的 localhost"。这不是对方不配合,是 localhost 太自我。

误区四:有 IP 就一定能通信

不一定。

通信还需要很多条件:

  • 掩码正确
  • 路由正确
  • ARP 正常
  • 网关可达
  • 防火墙允许
  • 对端服务监听
  • 回程路由正常

IP 地址只是门牌号。有门牌,不代表路通,也不代表门没锁,更不代表屋里有人。


小结

这一篇我们讲了 IP 地址。

核心知识点:

  1. IPv4 地址是 32 位,常用点分十进制表示。
  2. IP 地址属于网络层,用于跨网络寻址和路由。
  3. MAC 负责当前链路下一跳,IP 负责最终目的地。
  4. IP 地址要结合子网掩码,才能判断属于哪个网段。
  5. 私网 IP 可以在不同内网重复使用,不直接在公网路由。
  6. 公网 IP 可以在公网互联网中路由。
  7. 127.0.0.1 是本机回环地址,只能本机访问。
  8. 0.0.0.0 在监听和路由场景中有不同含义。
  9. IP 通常配置在网络接口上,一台机器可以有多个 IP。
  10. 有 IP 不代表一定能通信,还要看路由、ARP、防火墙和服务监听。

一句话总结:

IP 地址告诉数据包要去哪个网络和哪台主机,但真正能不能到,还要看掩码、路由和下一跳。

和前几篇连起来:

IP 管远方,MAC 管眼前;ARP 找脸面,交换机找门牌。

网络层从 IP 地址开始,才刚刚打开门。


下一篇预告

下一篇我们继续讲:

第 9 篇:子网掩码------如何划分"小区"

为什么 192.168.1.10/24192.168.1.20/24 算同网段?

为什么 192.168.1.10/24192.168.2.10/24 通常不算同网段?

/24/16255.255.255.0 到底是什么关系?

下一篇,我们把 IP 地址后面那条"小尾巴"讲清楚。


相关推荐
2601_961963381 天前
技术解剖:哈希值、区块链与CA认证如何守护电子合同安全?
网络·人工智能·安全·区块链·智能合约·政务
2601_961963381 天前
从“电子化”到“自动化”:2026年智能合约与电子合同融合的技术逻辑与法律适配
网络·人工智能·区块链·智能合约·政务
不吃土豆的马铃薯1 天前
C++ 高性能网络缓冲区 Buffer 源码解析
linux·服务器·开发语言·网络·c++
dog2501 天前
网络可用性,扩展性,性能的统计本质
网络
嵌入式-老费1 天前
esp32开发与应用(再谈wifi的使用)
网络·智能路由器
米丘1 天前
HTTP/3 传输层 QUIC 协议
网络协议·http3
YJlio1 天前
《Sysinternals实战指南》16.5 Ctrl2Cap 工具详解:把 Caps Lock 变成 Ctrl 的键盘改造与回退方法
linux·运维·服务器·网络·python·学习·计算机外设
wangxixi5221 天前
OTN 以太网业务接入全流程详解
网络
带土11 天前
5. 网络体系架构与WireShark简单使用
网络·测试工具·wireshark
liulilittle1 天前
拥塞控制:排水终止的两种决策:OR 与 AND
网络·tcp/ip·计算机网络·算法·信息与通信·tcp·通信