Docker教程
5分钟阅读

网络基础概念

什么是计算机网络

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

网络的基本功能

1. 资源共享

  • 硬件资源共享:打印机、存储设备、处理器等
  • 软件资源共享:应用程序、数据库、操作系统等
  • 数据资源共享:文件、数据库、信息等
# 示例:Linux下的网络文件共享
# NFS (Network File System) 共享
sudo apt install nfs-kernel-server
echo "/home/shared *(rw,sync,no_subtree_check)" >> /etc/exports
sudo systemctl restart nfs-kernel-server

# 客户端挂载
sudo mount -t nfs server_ip:/home/shared /mnt/shared

2. 数据通信

  • 点对点通信:两个节点之间的直接通信
  • 广播通信:一对多的通信方式
  • 组播通信:一对特定组的通信方式

3. 分布式处理

  • 负载分担:将计算任务分配到多台计算机
  • 并行处理:同时处理多个任务
  • 容错处理:系统故障时的备份和恢复

网络的分类

按地理范围分类

1. 局域网(LAN - Local Area Network)

  • 覆盖范围:几米到几公里
  • 典型应用:办公室、学校、家庭网络
  • 特点:高速率、低延迟、私有管理
# 查看局域网信息
ip addr show  # 查看网络接口
ip route show  # 查看路由表
arp -a  # 查看ARP表(局域网内设备)

局域网拓扑结构:

星型拓扑(最常见):
    [PC1]     [PC2]     [PC3]
      |         |         |
      +----[交换机]----+
              |
          [路由器]
              |
          [互联网]

2. 城域网(MAN - Metropolitan Area Network)

  • 覆盖范围:一个城市或地区
  • 典型应用:城市宽带网络、有线电视网络
  • 特点:中等速率、覆盖面广

3. 广域网(WAN - Wide Area Network)

  • 覆盖范围:跨越国家或大洲
  • 典型应用:互联网、企业专网
  • 特点:覆盖面最广、速率相对较低
# 广域网连接测试
traceroute google.com  # 查看数据包经过的路由
mtr google.com  # 实时网络诊断工具

按网络拓扑分类

1. 总线型拓扑

[PC1]---[PC2]---[PC3]---[PC4]---[PC5]
         |
    [总线/主干线]
  • 优点:布线简单、成本低
  • 缺点:故障影响整个网络、带宽共享

2. 星型拓扑

      [PC1]
        |
[PC4]--[HUB]--[PC2]
        |
      [PC3]
  • 优点:故障隔离好、易于管理
  • 缺点:中心设备故障影响全网

3. 环型拓扑

[PC1]---[PC2]
  |       |
[PC4]---[PC3]
  • 优点:数据传输有序、无冲突
  • 缺点:任一节点故障影响全网

4. 网状拓扑

[PC1]---[PC2]
 | \   / |
 |  \ /  |
 |   X   |
 |  / \  |
 | /   \ |
[PC4]---[PC3]
  • 优点:可靠性高、多路径传输
  • 缺点:布线复杂、成本高

网络协议基础

什么是网络协议

网络协议是计算机网络中进行数据交换而建立的规则、标准或约定。它定义了数据格式、传输方式、错误处理等规范。

协议的三要素

  1. 语法(Syntax):数据与控制信息的结构或格式
  2. 语义(Semantics):需要发出何种控制信息,完成何种动作以及做出何种响应
  3. 时序(Timing):事件实现顺序的详细说明

协议分层的概念

为什么需要分层?

  • 降低复杂性:将复杂的网络通信分解为简单的层次
  • 标准化接口:每层提供标准的服务接口
  • 独立性:各层可以独立开发和维护
  • 互操作性:不同厂商的设备可以互联互通

分层的基本原则

  1. 每层都有明确的功能
  2. 层与层之间通过接口通信
  3. 下层为上层提供服务
  4. 同层之间通过协议通信
# 查看网络协议栈信息
cat /proc/net/protocols  # 查看支持的协议
netstat -s  # 查看协议统计信息
ss -s  # 查看socket统计信息

数据传输基础

数据传输方式

1. 串行传输 vs 并行传输

串行传输:

发送端: [1][0][1][1][0][1][0][1] -----> 接收端
        一位一位按顺序传输

并行传输:

发送端: [1] -----> [1] 接收端
        [0] -----> [0]
        [1] -----> [1]
        [1] -----> [1]
        多位同时传输

2. 同步传输 vs 异步传输

同步传输:

  • 发送方和接收方使用统一的时钟信号
  • 数据连续传输,效率高
  • 适用于大量数据传输

异步传输:

  • 每个字符独立传输
  • 使用起始位和停止位标识
  • 适用于少量、间断的数据传输
# 串口通信示例(异步传输)
# 配置串口参数
stty -F /dev/ttyS0 9600 cs8 -cstopb -parity

# 发送数据
echo "Hello" > /dev/ttyS0

# 接收数据
cat /dev/ttyS0

数据交换方式

1. 电路交换

  • 特点:建立专用的物理连接
  • 优点:传输质量好、延迟固定
  • 缺点:资源利用率低、建立时间长
  • 应用:传统电话网络

2. 报文交换

  • 特点:以报文为单位进行存储转发
  • 优点:资源利用率高、支持广播
  • 缺点:延迟大、需要大容量存储
  • 应用:早期的数据网络

3. 分组交换

  • 特点:将报文分割成小的分组进行传输
  • 优点:延迟小、资源利用率高、可靠性好
  • 缺点:需要分组重组、可能乱序
  • 应用:现代互联网
# 分组传输示例
# 使用ping观察分组传输
ping -s 1472 google.com  # 发送大包,观察分片
ping -f google.com  # 设置不分片标志

# 使用tcpdump捕获分组
sudo tcpdump -i eth0 -n host google.com

网络性能指标

1. 带宽(Bandwidth)

  • 定义:网络中某通道传送数据的能力
  • 单位:bps(bits per second)
  • 类型
    • 理论带宽:链路的最大传输能力
    • 有效带宽:实际可用的传输能力
# 测试网络带宽
# 使用iperf3测试
iperf3 -s  # 服务器端
iperf3 -c server_ip -t 30  # 客户端测试30秒

# 使用speedtest-cli
pip install speedtest-cli
speedtest-cli

2. 延迟(Latency)

  • 定义:数据从源到目的地所需的时间
  • 组成
    • 传播延迟:信号在介质中传播的时间
    • 传输延迟:将数据推送到链路上的时间
    • 处理延迟:设备处理数据的时间
    • 排队延迟:在缓冲区等待的时间
# 测试网络延迟
ping google.com  # 基本延迟测试
ping -c 10 -i 0.1 google.com  # 快速ping测试

# 详细路径延迟分析
mtr --report --report-cycles 10 google.com

3. 吞吐量(Throughput)

  • 定义:单位时间内成功传输的数据量
  • 影响因素
    • 网络带宽
    • 网络延迟
    • 协议开销
    • 设备处理能力

4. 丢包率(Packet Loss Rate)

  • 定义:传输过程中丢失的数据包占总数据包的比例
  • 原因
    • 网络拥塞
    • 设备故障
    • 信号干扰
    • 缓冲区溢出
# 测试丢包率
ping -c 100 google.com | grep "packet loss"

# 使用hping3进行高级测试
hping3 -c 100 -i u1000 google.com  # 每毫秒发送一个包

网络地址基础

IP地址概念

IP地址是互联网协议地址的简称,是分配给网络中每个设备的唯一标识符。

IPv4地址结构

  • 长度:32位(4字节)
  • 表示:点分十进制记法(如:192.168.1.1)
  • 组成:网络部分 + 主机部分
# 查看IP地址信息
ip addr show  # 查看所有网络接口
hostname -I  # 查看主机IP地址
curl ifconfig.me  # 查看公网IP地址

IP地址分类

A类地址:

  • 范围:1.0.0.0 - 126.255.255.255
  • 网络位:8位
  • 主机位:24位
  • 用途:大型网络

B类地址:

  • 范围:128.0.0.0 - 191.255.255.255
  • 网络位:16位
  • 主机位:16位
  • 用途:中型网络

C类地址:

  • 范围:192.0.0.0 - 223.255.255.255
  • 网络位:24位
  • 主机位:8位
  • 用途:小型网络
# IP地址计算示例
# 计算网络地址和广播地址
ipcalc 192.168.1.100/24

# 子网划分
ipcalc 192.168.1.0/24 -s 50 30 20  # 划分三个子网

特殊IP地址

私有地址:

  • A类:10.0.0.0/8
  • B类:172.16.0.0/12
  • C类:192.168.0.0/16

特殊地址:

  • 127.0.0.1:本地回环地址
  • 0.0.0.0:表示所有地址
  • 255.255.255.255:广播地址
# 测试特殊地址
ping 127.0.0.1  # 本地回环测试
ping 192.168.1.255  # 广播地址(如果允许)

# 查看路由表中的特殊路由
ip route show | grep -E "(127|0\.0\.0\.0)"

子网掩码

子网掩码用于区分IP地址中的网络部分和主机部分。

CIDR表示法

  • 格式:IP地址/网络位数
  • 示例:192.168.1.0/24
  • 含义:前24位是网络位,后8位是主机位
# 子网掩码计算
# /24 = 255.255.255.0
# /16 = 255.255.0.0
# /8 = 255.0.0.0

# 使用sipcalc进行详细计算
sipcalc 192.168.1.100/24

子网划分实例

需求:将192.168.1.0/24网络划分为4个子网

解决方案

原网络:192.168.1.0/24 (256个地址)
划分后:
- 子网1:192.168.1.0/26   (64个地址: .0-.63)
- 子网2:192.168.1.64/26  (64个地址: .64-.127)
- 子网3:192.168.1.128/26 (64个地址: .128-.191)
- 子网4:192.168.1.192/26 (64个地址: .192-.255)
# 配置子网接口
sudo ip addr add 192.168.1.10/26 dev eth0:1
sudo ip addr add 192.168.1.70/26 dev eth0:2

# 验证子网配置
ip addr show eth0

通过理解这些网络基础概念,我们为后续学习更复杂的网络协议和技术打下了坚实的基础。