计算机网络学习指南计算机网络学习指南
首页
基础教程
进阶内容
实战案例
编程指南
首页
基础教程
进阶内容
实战案例
编程指南
  • 基础教程

    • 📚 基础教程
    • 🎯 学习目标
    • 🚀 学习路线
    • 📊 章节概览
  • 💡 学习建议
  • 🎓 学完之后
  • 第1章 - 什么是计算机网络?
  • 第2章 - 网络分层模型
  • 第3章 - IP 地址详解
  • 第4章 - 子网掩码与网络划分
  • 第5章 - TCP 与 UDP 协议
  • 第6章 - HTTP 与 HTTPS
  • 第7章 - DNS 域名解析
  • 第8章 - NAT 与网关

第3章 - IP 地址详解

嗨,朋友!

上一章我们学习了网络分层,知道了网络层负责寻址和路由。那么,**网络层是怎么找到目标设备的呢?**答案就是:IP 地址!

IP 地址就像是互联网上的"门牌号",每台联网的设备都有一个独特的地址。这一章,我会用最通俗的语言,带你彻底搞懂 IP 地址。

🤔 什么是 IP 地址?

生活中的类比 🏠

想象一下,你要给朋友寄快递:

  • 没有地址:快递员不知道往哪送,快递就寄丢了
  • 有了地址:"北京市朝阳区XX街XX号XX室" → 快递员能准确送达

IP 地址就是互联网上的"门牌号",让数据包能够准确地送达目标设备。

定义

IP 地址(Internet Protocol Address)是分配给网络设备的数字标签,用于标识设备在网络中的位置。

📍 IPv4 地址

IPv4 的格式

IPv4 地址由 4 个数字组成,每个数字的范围是 0-255,用点号分隔。

示例: 192.168.1.100

分解:
192  .  168  .  1  .  100
 ↑       ↑      ↑     ↑
第1段   第2段  第3段  第4段

为什么是 0-255?

每一段是 8 位二进制数(8 bit = 1 byte):

十进制    →    二进制
0         →    00000000
255       →    11111111
192       →    11000000
168       →    10101000

计算公式:2^8 = 256,所以范围是 0-255(256个数字)

完整示例

IP地址: 192.168.1.100

转换成二进制:
192.168.1.100
= 11000000.10101000.00000001.01100100

总共 32 位(4个字节)

知识点

IPv4 地址空间 = 2^32 = 约 43 亿个地址

🌐 IPv4 地址的分类

IPv4 地址分为 5 类:A、B、C、D、E 类。

分类详解

类别第一段范围默认子网掩码网络数主机数用途
A类1-126255.0.0.01261600万大型网络
B类128-191255.255.0.01600065000中型网络
C类192-223255.255.255.0200万254小型网络
D类224-239---组播
E类240-255---实验用

A 类地址

格式: N.H.H.H
(N = 网络地址, H = 主机地址)

示例: 10.0.0.1

特点:
- 第一段: 1-126
- 可容纳约 1600 万台主机
- 适合超大型网络(如政府、大型企业)

B 类地址

格式: N.N.H.H

示例: 172.16.0.1

特点:
- 第一段: 128-191
- 可容纳约 65000 台主机
- 适合中型网络(如大学、中型企业)

C 类地址

格式: N.N.N.H

示例: 192.168.1.1

特点:
- 第一段: 192-223
- 可容纳 254 台主机
- 适合小型网络(如家庭、小公司)

🏠 公网 IP vs 私网 IP

公网 IP(Public IP)🌍

定义:可以在互联网上直接访问的 IP 地址

特点:

  • ✅ 全球唯一
  • ✅ 可以从互联网访问
  • ❌ 数量有限,很珍贵
  • ❌ 需要向 ISP(运营商)购买

示例:

百度的公网 IP: 220.181.38.148
阿里云服务器: 47.98.xxx.xxx
你家的公网 IP: 通过访问 https://ip.cn 查看

私网 IP(Private IP)🏠

定义:只能在内部网络使用的 IP 地址

特点:

  • ✅ 免费使用
  • ✅ 可以重复(不同网络可以用相同的私网 IP)
  • ❌ 不能直接访问互联网
  • ❌ 需要通过 NAT 转换

私网 IP 范围:

类别私网 IP 范围用途
A类10.0.0.0 - 10.255.255.255企业内网
B类172.16.0.0 - 172.31.255.255中型网络
C类192.168.0.0 - 192.168.255.255家庭网络

示例:

家里的设备:
路由器: 192.168.1.1
你的电脑: 192.168.1.100
你的手机: 192.168.1.101
你的平板: 192.168.1.102

→ 都是私网 IP,只能在家里互相访问

对比图解

互联网(使用公网 IP)
       ↓
    路由器
 (公网IP: 123.45.67.89)
       ↓
   NAT 转换
       ↓
    家庭局域网(使用私网 IP)
    ├── 电脑 (192.168.1.100)
    ├── 手机 (192.168.1.101)
    └── 平板 (192.168.1.102)

🔍 特殊的 IP 地址

1. 本地回环地址 🔄

127.0.0.1 (localhost)

作用: 指向本机自己
用途: 测试本地服务

示例:

// Node.js 本地测试
const express = require('express');
const app = express();

app.listen(3000, () => {
  // 访问 http://localhost:3000 或 http://127.0.0.1:3000
  console.log('服务运行在 http://localhost:3000');
});

2. 广播地址 📢

255.255.255.255

作用: 向网络中所有设备发送消息
用途: 网络发现、DHCP

3. 网络地址和广播地址

网络: 192.168.1.0/24

网络地址: 192.168.1.0    ← 表示这个网络本身
广播地址: 192.168.1.255  ← 向所有主机发送消息
可用主机: 192.168.1.1 - 192.168.1.254 (共254个)

4. 默认网关

通常是: 192.168.1.1 或 192.168.0.1

作用: 连接局域网和互联网的"大门"
设备: 通常是路由器

🆕 IPv6 地址

为什么需要 IPv6?

问题:IPv4 地址只有约 43 亿个,已经不够用了!

  • 全球人口: 80 亿
  • 联网设备: 手机、电脑、平板、智能家居、IoT...
  • 43 亿个 IP 地址 → 完全不够用!

解决方案:IPv6 提供了 340万亿万亿万亿个地址!

IPv6 的格式

IPv6 地址由 8 组 4 位十六进制数组成,用冒号分隔:

完整格式:
2001:0db8:85a3:0000:0000:8a2e:0370:7334

简化规则:
1. 前导零可以省略
2001:db8:85a3:0:0:8a2e:370:7334

2. 连续的0可以用 :: 代替(只能用一次)
2001:db8:85a3::8a2e:370:7334

IPv6 特殊地址

::1                  ← 本地回环地址(相当于 IPv4 的 127.0.0.1)
::                   ← 未指定地址
fe80::/10            ← 链路本地地址
fc00::/7             ← 私有地址
ff00::/8             ← 组播地址

IPv4 vs IPv6 对比

特性IPv4IPv6
地址长度32位128位
地址数量43亿340万亿万亿万亿
地址格式点分十进制冒号分十六进制
示例192.168.1.12001:db8::1
地址配置手动或DHCP自动配置
安全性可选内置IPsec

💻 如何查看 IP 地址?

Windows 系统

# 方法1: 使用 ipconfig
ipconfig

# 输出示例:
# IPv4 地址 . . . . . . . . . . . : 192.168.1.100
# 子网掩码 . . . . . . . . . . . : 255.255.255.0
# 默认网关. . . . . . . . . . . . : 192.168.1.1

# 方法2: 查看详细信息
ipconfig /all

Linux/Mac 系统

# 方法1: 使用 ifconfig
ifconfig

# 方法2: 使用 ip 命令(推荐)
ip addr show

# 方法3: 查看公网 IP
curl ifconfig.me

使用程序查看

Node.js 示例:

const os = require('os');

// 获取网络接口信息
const networkInterfaces = os.networkInterfaces();

Object.keys(networkInterfaces).forEach(name => {
  networkInterfaces[name].forEach(info => {
    if (info.family === 'IPv4' && !info.internal) {
      console.log(`接口: ${name}`);
      console.log(`IP地址: ${info.address}`);
      console.log(`子网掩码: ${info.netmask}`);
    }
  });
});

// 输出示例:
// 接口: eth0
// IP地址: 192.168.1.100
// 子网掩码: 255.255.255.0

Python 示例:

import socket

# 获取本机 IP 地址
hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)

print(f"主机名: {hostname}")
print(f"IP地址: {ip_address}")

# 输出示例:
# 主机名: MyComputer
# IP地址: 192.168.1.100

🎯 实际应用场景

前端开发

// 调用后端 API
fetch('http://192.168.1.200:3000/api/users')
  .then(res => res.json())
  .then(data => console.log(data));

// 在开发环境中:
// localhost (127.0.0.1) → 访问本地服务
// 192.168.1.x → 访问局域网内其他设备

后端开发

// Express 监听所有网络接口
app.listen(3000, '0.0.0.0', () => {
  console.log('服务运行在 3000 端口');
});

// 0.0.0.0 表示监听所有 IP 地址:
// - 127.0.0.1:3000 (本机访问)
// - 192.168.1.100:3000 (局域网访问)
// - 公网IP:3000 (如果有公网 IP)

运维配置

# 配置静态 IP 地址(Ubuntu)
sudo vim /etc/netplan/01-netcfg.yaml

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.1.100/24  # 静态 IP 地址
      gateway4: 192.168.1.1  # 默认网关
      nameservers:
        addresses:
          - 8.8.8.8         # Google DNS
          - 114.114.114.114  # 国内 DNS

# 应用配置
sudo netplan apply

测试工程师

# 测试网络连通性
ping 192.168.1.1

# 查看路由路径
traceroute www.baidu.com

# 抓包分析(Wireshark)
# 过滤特定 IP 的流量:
# ip.addr == 192.168.1.100

🔢 IP 地址的二进制计算

为什么要学二进制?

因为计算机只认识 0 和 1,理解二进制可以帮你:

  • 理解子网掩码(下一章)
  • 计算网络地址
  • 理解 IP 地址分配

十进制转二进制

示例: 192 转二进制

128 64 32 16 8 4 2 1  ← 二进制位权值
 1  1  0  0  0 0 0 0  ← 192 的二进制

计算: 128 + 64 = 192
结果: 11000000

实用表格(常用数字)

十进制二进制十进制二进制
00000000012810000000
10000000119211000000
2551111111122411100000
2541111111016810101000

💡 长安的学习建议

  1. 记住私网 IP 范围 - 192.168.x.x 是最常见的家庭网络
  2. 理解公网和私网的区别 - 这在实际工作中非常重要
  3. 多动手查看 - 用 ipconfig 或 ifconfig 查看自己的 IP
  4. 了解 IPv6 - 虽然现在还是 IPv4 为主,但 IPv6 是未来趋势

📝 小结

这一章我们学习了:

✅ IP 地址的概念:互联网上的"门牌号"
✅ IPv4 格式:4 个 0-255 的数字,总共 32 位
✅ IPv4 分类:A、B、C、D、E 类
✅ 公网 IP vs 私网 IP:公网 IP 全球唯一,私网 IP 可以重复
✅ 特殊 IP 地址:127.0.0.1(本机)、192.168.x.x(私网)
✅ IPv6:128 位,地址数量几乎无限
✅ 实际应用:前端、后端、运维、测试都需要理解 IP 地址

🎯 下一步

现在你已经理解了 IP 地址,但是子网掩码是什么?为什么要划分子网?下一章我们会详细讲解!

继续学习第4章:子网掩码与网络划分 →

💪 练习题

  1. 判断以下 IP 地址是公网 IP 还是私网 IP?

    • 192.168.1.1
    • 47.98.123.45
    • 10.0.0.1
    • 172.16.0.1
  2. 你的电脑 IP 是 192.168.1.100,你的手机 IP 是 192.168.1.101,它们能互相访问吗?

  3. 为什么需要 IPv6?

答案提示
  1. IP 地址类型:

    • 192.168.1.1 → 私网 IP(C类私网范围)
    • 47.98.123.45 → 公网 IP(不在私网范围内)
    • 10.0.0.1 → 私网 IP(A类私网范围)
    • 172.16.0.1 → 私网 IP(B类私网范围)
  2. 能互相访问吗?

    • ✅ 可以!因为它们在同一个局域网(192.168.1.x)
    • 可以通过文件共享、局域网聊天、远程桌面等方式互访
  3. 为什么需要 IPv6?

    • IPv4 地址只有 43 亿个,已经不够用
    • 全球联网设备数量远超 43 亿(手机、电脑、IoT 设备等)
    • IPv6 提供了几乎无限的地址空间(340万亿万亿万亿个)
    • IPv6 还提供了更好的安全性和自动配置功能
最近更新: 2025/12/26 18:23
Contributors: 王长安
Prev
第2章 - 网络分层模型
Next
第4章 - 子网掩码与网络划分