IP从入门到起飞:妈妈再也不用担心我不会网络基础啦

前言:网络基础是编程、运维、前端开发的"必过关卡",而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(网络地址转换) 技术,路由器充当"翻译官"的角色,流程如下:

  1. 你的设备发起请求:192.168.1.100 → "我要访问百度"
  2. 路由器NAT转换:将内网IP替换为公用IP → 203.0.113.50 → "我要访问百度"
  3. 百度响应:百度服务器 → 203.0.113.50 → "这是网页内容"
  4. 路由器还原地址:根据请求记录转发给你 → 192.168.1.100 → "这是网页内容"
  5. 你接收内容:完成上网操作

第四章:子网掩码与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,优先使用缓存提升速度:

  1. 浏览器缓存:"我之前访问过吗?"→ 有则直接使用
  2. 系统缓存(hosts文件):"本地有配置吗?"→ 有则直接使用
  3. 路由器缓存:"路由器记得吗?"→ 有则直接使用
  4. ISP DNS服务器(运营商):"运营商知道吗?"→ 知道则返回
  5. 递归查询:根服务器→.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,并有租期限制,流程如下:

  1. 设备请求:Mac连WiFi后广播"我需要IP地址!"
  2. 路由器分配:"给你192.168.1.100,租期24小时"
  3. 设备使用:用该IP上网
  4. 租期续租:租期快到,Mac请求续租,路由器同意或分配新IP
  5. 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 showhostname -I
  • Windows:ipconfig

8.2 查看本机公网IP

跨系统通用(终端/Git Bash):

  • curl ifconfig.me
  • curl ip.sb
  • curl 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.comdig 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解析异常处理,都能迎刃而解。

建议收藏本文,遇到问题随时查阅;也可以转发给需要的朋友,一起告别网络基础盲区!长大要当太空人🚀


如果您觉得这篇文章对您有帮助,欢迎点赞和收藏,大家的支持是我继续创作优质内容的动力🌹🌹🌹也希望您能在😉😉😉我的主页 😉😉😉找到更多对您有帮助的内容。

  • 致敬每一位赶路人
相关推荐
JaguarJack1 小时前
别再手写 URL 解析器了:PHP 8.5 URI 扩展让 URL 处理更安全、更干净
后端·php·服务端
坚持学习前端日记1 小时前
认证模块文档
java·服务器·前端·数据库·spring
想摆烂的不会研究的研究生1 小时前
并发场景——实时排行榜设计
数据库·redis·后端·缓存
qq_12498707531 小时前
基于springboot的文化旅游小程序(源码+论文+部署+安装)
java·spring boot·后端·微信小程序·小程序·毕业设计·旅游
AI视觉网奇2 小时前
Uncaught SyntaxError: Failed to construct ‘RTCPeerConnection‘:
前端·javascript·html
行百里er9 小时前
WebSocket 在 Spring Boot 中的实战解析:实时通信的技术利器
spring boot·后端·websocket
再学一点就睡9 小时前
前端网络实战手册:15个高频工作场景全解析
前端·网络协议
C_心欲无痕10 小时前
有限状态机在前端中的应用
前端·状态模式
C_心欲无痕10 小时前
前端基于 IntersectionObserver 更流畅的懒加载实现
前端