前言:网络基础是编程、运维、前端开发的"必过关卡",而IP就是其中最核心的概念。这篇文章用通俗类比+实操干货,带你从0到1吃透IP知识,看完再也不怕被问"公网IP和内网IP有啥区别""端口被占用怎么办"!
第一章:IP地址是什么?

1.1 通俗理解:IP就是设备的"门牌号"
我们在现实中靠门牌号接收快递,设备在互联网中就靠IP地址接收数据,两者逻辑完全一致:
- 现实场景:你住在「北京市朝阳区某某路100号」→ 快递员精准定位送达
- 网络场景:你的电脑IP是「192.168.1.100」→ 数据包精准定位到你的设备
核心结论:没有IP地址,互联网数据就会"迷路",无法完成传输。
1.2 IP地址的两个版本:IPv4与IPv6
目前IP地址有两个版本,日常开发重点掌握IPv4即可,IPv6作为未来趋势了解即可。
| 版本 | 格式 | 示例 | 特点 |
|---|---|---|---|
| IPv4 | 4组十进制数字,点分分隔 | 192.168.1.100 | 当前主流,地址资源濒临耗尽 |
| IPv6 | 8组十六进制数字,冒号分隔 | 2001:0db8:85a3::8a2e:0370:7334 | 未来趋势,地址量近乎无限 |
第二章:IPv4地址详解

2.1 地址结构:4段数字的"密码"
IPv4地址由4段0-255的十进制数字组成,每段对应8位二进制( <math xmlns="http://www.w3.org/1998/Math/MathML"> 2 8 = 256 2^8=256 </math>28=256,因此取值0-255),结构如下:
192 . 168 . 1 . 100
│ │ │ │
│ │ │ └── 第四段:0-255
│ │ └─────── 第三段:0-255
│ └──────────── 第二段:0-255
└────────────────── 第一段:0-255
2.2 IP地址分类:按用途分最关键
所有IPv4地址按用途可分为公网IP和内网IP,这是开发中最常接触的分类方式:
css
┌─────────────────────────────────────────────────────────┐
│ 所有 IP 地址 │
├─────────────────────────┬───────────────────────────────┤
│ 公网 IP │ 内网 IP │
│ (全球唯一,可直接上网) │ (局域网内使用,可重复) │
├─────────────────────────┼───────────────────────────────┤
│ 示例:180.101.50.242 │ 10.x.x.x (A类私有地址) │
│ (百度的公网IP) │ 172.16.x.x - 172.31.x.x(B类)│
│ │ 192.168.x.x(C类私有地址) │
└─────────────────────────┴───────────────────────────────┘
2.3 必须背会的特殊IP
以下特殊IP在开发中高频出现,记牢能避免很多踩坑:
| IP地址 | 名称 | 含义 | 常见场景 |
|---|---|---|---|
| 127.0.0.1 | 本机回环地址 | 永远指向设备自身 | 本地开发访问 localhost:3000 |
| 0.0.0.0 | 所有网络接口 | 监听本机所有IP地址 | 服务器启动配置 |
| 192.168.x.x | C类私有地址 | 家庭/小公司局域网 | 家用WiFi下的设备IP |
| 10.x.x.x | A类私有地址 | 大型企业内网 | 大型公司办公网络 |
| 172.16-31.x.x | B类私有地址 | 中型企业内网 | 中型公司办公网络 |
第三章:公网IP vs 内网IP(核心概念)

3.1 一张图看懂两者关系
内网设备无法直接访问互联网,必须通过路由器的公网IP作为"桥梁",结构如下:
markdown
☁️ 互联网 ☁️
│
┌─────────┴─────────┐
│ 路由器 │
│ 公网 IP: │
│ 203.0.113.50 │ ← 运营商分配,全球唯一
└─────────┬─────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
┌──────┴──────┐ ┌──────┴──────┐ ┌──────┴──────┐
│ 你的 Mac │ │ 手机 │ │ iPad │
│192.168.1.100│ │192.168.1.101│ │192.168.1.102│
└─────────────┘ └─────────────┘ └─────────────┘
↑ ↑ ↑
内网 IP 内网 IP 内网 IP
(仅在当前局域网内有效,不同家庭可重复)
3.2 核心区别对比
| 对比项 | 公网IP | 内网IP |
|---|---|---|
| 唯一性 | 全球范围内绝对唯一 | 仅局域网内唯一,可跨网重复 |
| 访问范围 | 可被全球设备访问 | 仅同一局域网内设备可访问 |
| 地址数量 | 约43亿个,已耗尽 | 理论上可无限重复使用 |
| 分配主体 | 电信/联通/移动等运营商 | 路由器自动分配 |
| 费用 | 通常需额外付费申请 | 局域网内免费使用 |
3.3 内网设备上网的秘密:NAT技术

内网IP无法直接访问互联网,核心靠 NAT(网络地址转换) 技术,路由器充当"翻译官"的角色,流程如下:
- 你的设备发起请求:192.168.1.100 → "我要访问百度"
- 路由器NAT转换:将内网IP替换为公用IP → 203.0.113.50 → "我要访问百度"
- 百度响应:百度服务器 → 203.0.113.50 → "这是网页内容"
- 路由器还原地址:根据请求记录转发给你 → 192.168.1.100 → "这是网页内容"
- 你接收内容:完成上网操作
第四章:子网掩码与CIDR
4.1 子网掩码:区分"网络号"与"主机号"
子网掩码的核心作用是划分IP地址,明确哪部分是"网络号"(所属局域网),哪部分是"主机号"(局域网内设备标识):
makefile
IP 地址: 192.168.1.100
子网掩码: 255.255.255.0
─────────────── (按位与运算)
网络号: 192.168.1.0 ← 相同网络号=同一局域网=可直接通信
主机号: 0.0.0.100 ← 区分同一局域网内不同设备
通俗结论:网络号相同的设备,相当于住在"同一小区",可以直接通信;网络号不同则需要路由器转发。
4.2 CIDR表示法:子网掩码的简洁写法
CIDR用 /数字 表示子网掩码中连续1的位数,替代繁琐的点分格式,日常开发高频使用:
markdown
192.168.1.100/24
↓
等同于:IP 192.168.1.100 + 子网掩码 255.255.255.0
↓
含义:192.168.1.x 网段(256个地址)属于同一局域网
4.3 常见CIDR对照表
| CIDR | 子网掩码 | 可用设备数 | 常见场景 |
|---|---|---|---|
| /8 | 255.0.0.0 | 约1600万台 | 超大型企业内网 |
| /16 | 255.255.0.0 | 约6.5万台 | 中型企业内网 |
| /24 | 255.255.255.0 | 254台 | 家庭/小公司(最常用) |
| /32 | 255.255.255.255 | 1台 | 单台主机定向访问 |
第五章:端口(Port)

5.1 端口的作用:定位设备上的"程序"
IP地址定位"哪台设备",端口则定位"设备上哪个程序"。比如你的电脑同时运行多个应用,全靠端口区分数据流向:
diff
你的电脑同时运行:
- Chrome 浏览器: 192.168.1.100:54321 (系统随机端口)
- VS Code: 192.168.1.100:54322 (系统随机端口)
- 微信: 192.168.1.100:54323 (系统随机端口)
- React 开发服务: 192.168.1.100:3000 (框架固定端口)
5.2 端口范围划分
端口取值范围0-65535,共65536个,按用途分为三类:
| 范围 | 名称 | 说明 |
|---|---|---|
| 0-1023 | 知名端口 | 系统/公共服务保留,需管理员权限使用 |
| 1024-49151 | 注册端口 | 应用程序注册使用,开发者可自定义服务 |
| 49152-65535 | 动态端口 | 系统临时分配,用完即释放 |
5.3 必记常用端口(开发高频)
网络服务类
| 端口 | 服务 | 说明 |
|---|---|---|
| 80 | HTTP | 网页默认端口,baidu.com = baidu.com:80 |
| 443 | HTTPS | 加密网页默认端口,安全传输必备 |
| 22 | SSH | 远程登录服务器默认端口 |
前端开发类
| 端口 | 工具/框架 | 说明 |
|---|---|---|
| 3000 | React/Node.js | Create React App 默认端口 |
| 5173 | Vite | Vite 构建工具默认端口 |
| 8080 | 通用备选 | Vue CLI、Webpack 常用端口 |
| 8081 | Metro | React Native 打包服务默认端口 |
数据库类
| 端口 | 数据库 |
|---|---|
| 3306 | MySQL |
| 5432 | PostgreSQL |
| 27017 | MongoDB |
| 6379 | Redis |
第六章:DNS(域名系统)

6.1 DNS的作用:人类的"记忆助手"
人类记不住枯燥的IP地址(如180.101.50.242),但能记住有意义的域名(如www.baidu.com)。DNS的核心就是将域名翻译成IP地址:
makefile
你输入: www.baidu.com
↓ DNS 解析
实际访问: 180.101.50.242
6.2 DNS解析流程(从快到慢)
浏览器输入域名后,会按以下顺序查询IP,优先使用缓存提升速度:
- 浏览器缓存:"我之前访问过吗?"→ 有则直接使用
- 系统缓存(hosts文件):"本地有配置吗?"→ 有则直接使用
- 路由器缓存:"路由器记得吗?"→ 有则直接使用
- ISP DNS服务器(运营商):"运营商知道吗?"→ 知道则返回
- 递归查询:根服务器→.com服务器→baidu.com服务器,最终获取IP
6.3 hosts文件:本地DNS配置神器
hosts文件是本地DNS配置文件,优先级高于外部DNS,可强制指定域名对应IP,常用于本地开发或屏蔽广告。
文件位置
- macOS/Linux:
/etc/hosts - Windows:
C:\Windows\System32\drivers\etc\hosts
配置示例
bash
# hosts 文件内容示例
# 本地开发:自定义域名指向本机
127.0.0.1 local.myapp.com
192.168.1.100 dev.myapp.com
# 屏蔽广告:广告域名指向无效IP
0.0.0.0 ads.annoying-site.com
第七章:DHCP(动态主机配置协议)
7.1 为什么你的IP会变?
手机、电脑每次连WiFi,IP可能变化,核心是DHCP协议------路由器自动给内网设备分配IP,并有租期限制,流程如下:
- 设备请求:Mac连WiFi后广播"我需要IP地址!"
- 路由器分配:"给你192.168.1.100,租期24小时"
- 设备使用:用该IP上网
- 租期续租:租期快到,Mac请求续租,路由器同意或分配新IP
- IP回收:设备长时间离线,路由器回收IP分配给其他设备
7.2 静态IP vs 动态IP
| 特性 | 静态IP | 动态IP(DHCP) |
|---|---|---|
| 配置方式 | 手动设置,永不改变 | 自动分配,租期后可能变化 |
| 适用场景 | 服务器、打印机、NAS | 手机、笔记本、平板 |
| 优点 | 地址稳定,方便访问 | 无需配置,自动管理 |
| 缺点 | 易出现IP冲突 | 地址可变,不利于远程访问 |
第八章:常用网络命令(实操必备)
这些命令能快速排查网络问题,是开发、运维的高频工具,按系统分类整理:
8.1 查看本机内网IP
- macOS(WiFi网卡):
ipconfig getifaddr en0 - macOS(详细信息):
ifconfig en0 - Linux:
ip addr show或hostname -I - Windows:
ipconfig
8.2 查看本机公网IP
跨系统通用(终端/Git Bash):
curl ifconfig.mecurl ip.sbcurl ipinfo.io(带地区信息)
8.3 测试网络连通性(ping)
- 基础用法:
ping www.baidu.com(Ctrl+C停止) - 指定次数:
ping -c 4 www.baidu.com(发送4个数据包) - Windows替代:
ping -n 4 www.baidu.com
8.4 追踪路由(traceroute)
- macOS/Linux:
traceroute www.baidu.com - Windows:
tracert www.baidu.com
8.5 查看端口占用
- 查看3000端口占用:
lsof -i :3000(macOS/Linux) - 查看所有监听端口:
lsof -i -P | grep LISTEN - 杀掉进程:
kill -9 <PID>(PID为进程号)
8.6 DNS查询与缓存清除
- DNS查询:
nslookup www.baidu.com或dig www.baidu.com - macOS清除DNS缓存:
sudo dscacheutil -flushcache+sudo killall -HUP mDNSResponder
8.7 HTTP请求测试(curl)
- GET请求:
curl https://api.example.com/users - POST请求(带JSON):
curl -X POST \ `` -H "Content-Type: application/json" \ `` -d '{"name":"test","age":20}' \ ``https://api.example.com/users - 查看响应头:
curl -I https://www.baidu.com
第九章:知识总结脑图(快速复盘)
ini
IP 网络知识体系
│
├── IP 地址
│ ├── IPv4: 192.168.1.100(重点掌握)
│ ├── IPv6: 2001:db8::1(了解即可)
│ │
│ ├── 公网 IP:全球唯一,运营商分配,可上网
│ │ └── 示例:百度 180.101.50.242
│ │
│ └── 内网 IP(私有 IP):局域网内有效,可重复
│ ├── 10.x.x.x(大型企业)
│ ├── 172.16-31.x.x(中型企业)
│ └── 192.168.x.x(家庭/小公司,最常见)
│
├── 特殊 IP 地址
│ ├── 127.0.0.1 = localhost = 本机回环
│ └── 0.0.0.0 = 监听本机所有网络接口
│
├── 端口(Port)
│ ├── 作用:定位设备上的程序
│ ├── 范围:0-65535
│ └── 常用端口:80(HTTP)、443(HTTPS)、3000(React)、5173(Vite)
│
├── 核心网络协议
│ ├── NAT:内网设备上网的关键(地址转换)
│ ├── DHCP:路由器自动分配 IP(IP 变化的原因)
│ ├── DNS:域名 → IP 地址(人类记忆友好)
│ └── 子网掩码/CIDR:区分网络号和主机号
│
└── 常用网络命令
├── 查看内网 IP:ipconfig getifaddr en0 / ip addr
├── 查看公网 IP:curl ifconfig.me
├── 测试连通性:ping www.baidu.com
├── 查看端口占用:lsof -i :3000
├── DNS 查询:nslookup www.baidu.com
└── HTTP 测试:curl https://api.example.com
结尾总结
IP知识是网络基础的核心,掌握本文内容,能轻松应对开发中的网络问题:从本地开发的localhost配置、端口占用排查,到公网/内网IP的区别、DNS解析异常处理,都能迎刃而解。
建议收藏本文,遇到问题随时查阅;也可以转发给需要的朋友,一起告别网络基础盲区!长大要当太空人🚀
如果您觉得这篇文章对您有帮助,欢迎点赞和收藏,大家的支持是我继续创作优质内容的动力🌹🌹🌹也希望您能在😉😉😉我的主页 😉😉😉找到更多对您有帮助的内容。
- 致敬每一位赶路人