DukeDuke
主页
项目文档
技术文档
  • 单机版
  • 微服务
  • 代办项目
  • 优鲜项目
项目管理
关于我们
主页
项目文档
技术文档
  • 单机版
  • 微服务
  • 代办项目
  • 优鲜项目
项目管理
关于我们
  • 技术文档

    • 网络原理

      • 交换机
      • 路由器
      • TCP/IP协议
      • HTTP 与 HTTPS
    • 软件架构

      • 什么是软件架构
      • 分层架构
      • 微服务架构
      • 事件驱动架构
      • 领域驱动设计(DDD)
      • 架构图
      • 高并发系统
    • Vue3

      • Vue3简介
      • Vue3响应式系统
      • Vue3组合式API
      • Vue3生命周期
      • Vue3模板语法
      • Vue3组件系统
      • Vue3 路由系统
      • Vue3 状态管理
      • Vue3 性能优化
      • Vue3 TypeScript 支持
      • Vue3 项目实战
      • VUE 面试题大全
      • Node.js 安装
    • JAVA

      • JVM

        • 认识JVM
        • JVM类加载器
        • 运行时数据区
        • 执行引擎
        • 本地方法接口
        • 本地方法库
        • JVM垃圾回收
        • JVM性能监控
        • JVM调优
      • 设计模式
        • 单例模式
        • 工厂模式
        • 策略模式
        • 适配器模式
        • 建造者模式
        • 原型模式
        • 装饰器模式
        • 代理模式
        • 外观模式
        • 享元模式
        • 组合模式
        • 桥接模式
      • Java多线程

        • Java 线程基础详解
        • Java 线程池详解
        • Java ThreadLocal 详解
        • Java volatile 详解
        • Java 线程间通信详解
        • Java 线程安全详解
        • Java 线程调度详解
        • Java 线程优先级详解

        • Java 线程中断详解
        • Java 线程死锁详解
      • Java反射
      • Java 面试题

        • Java 基础概念面试题
        • Java 面向对象编程面试题
        • Java 集合框架面试题
        • Java 多线程与并发面试题
        • JVM 与内存管理面试题
        • Java I/O 与 NIO 面试题
        • Java 异常处理面试题
        • Java 反射与注解面试题
        • Java Spring 框架面试题
        • Java 数据库与 JDBC 面试题
        • Java 性能优化面试题
        • Java 实际项目经验面试题
        • Java 高级特性面试题
        • Java 面试准备建议
    • Python

      • Python简介
      • Python安装
      • Python hello world
      • Python基础语法
      • Python数据类型
      • Python数字
      • Python字符串
      • Python列表
      • Python元组
      • Python字典
      • Python日期时间
      • Python文件操作
      • Python异常处理
      • Python函数
      • Python类
      • Python模块
      • Python包
      • Python多线程
      • Python面向对象
      • Python爬虫
      • Django web框架
      • Python 面试题

        • Python 面试题导航
        • Python 基础概念
        • Python 面向对象编程
        • Python 数据结构
        • Python 高级特性
        • Python 框架
        • Python 性能优化
        • Python 项目经验
    • Spring

      • Spring
      • Springboot
      • Spring Security 安全框架
      • SpringBoot 中的事件详解
      • SpringBoot 中的定时任务详解
      • SpringBoot 自动装配原理与源码解释
    • Mybatis

      • Mybatis
      • Mybatis-Plus
    • 数据库

      • Redis

        • Redis简介
        • Redis(单机)安装
        • Redis配置
        • Redis数据结构
        • RDB、AOF 和混合持久化机制
        • Redis内存管理
        • Redis缓存一致性
        • Redis缓存穿透
        • Redis缓存击穿
        • Redis缓存雪崩
        • Redis Lua脚本
        • Redis主从复制
        • Redis哨兵模式
        • Redis集群
        • Redis数据分片
        • Redis CPU使用率过高
        • Redis面试题
      • MySQL

        • MySQL简介
        • MySQL安装
        • MySQL配置
        • MYSQL日常维护
        • MYSQL优化-慢查询
        • MYSQL优化-索引
        • MYSQL数据库设计规范
    • 消息队列

      • RocketMQ
      • Kafka
      • RabbitMQ
      • 消息队列面试题
    • 微服务

      • SpringCloud 微服务
      • Eureka 注册中心
      • Nacos 注册中心
      • Gateway 网关
      • Feign 服务调用
      • Sentinel 限流 与 熔断
      • Seata 分布式事务
      • CAP 理论
      • Redis 分布式锁
      • 高并发系统设计
    • ELK日志分析系统

      • Elasticsearch 搜索引擎
      • Logstash 数据处理
      • Kibana 可视化
      • ELK 实战
    • 开放API

      • 开放API设计
      • 开放API示例项目
    • 人工智能

      • 人工智能简介
      • 机器学习

      • 深度学习

      • 自然语言处理

      • 计算机视觉

        • CUDA与cuDNN详细安装
        • Conda 安装
        • Pytorch 深度学习框架
        • yolo 目标检测
        • TensorRT 深度学习推理优化引擎
        • TensorFlow 机器学习
        • CVAT 图像标注
        • Windows 下安装 CUDA、cuDNN、TensorRT、TensorRT-YOLO 环境
        • Windows10+CUDA+cuDNN+TensorRT+TensorRT-YOLO 部署高性能YOLO11推理
    • 大数据

      • 大数据简介
      • Hadoop 数据存储
      • Flume 数据采集
      • Sqoop 数据导入导出
      • Hive 数据仓库
      • Spark 数据处理
      • Flink 数据处理
      • Kafka 数据采集
      • HBase 数据存储
      • Elasticsearch 搜索引擎
    • 图像处理

      • 图像处理简介
      • 医学图像web呈现
      • 医学图像处理
      • 切片细胞分离问题
    • 服务器&运维

      • Linux 系统

        • Linux 系统管理
        • Linux 网络管理
        • Linux 文件管理
        • Linux 命令大全
      • Nginx Web 服务器

        • Nginx 安装 与 配置
        • Nginx 负载均衡
        • Nginx SSL证书配置
        • Nginx Keepalived 高可用
      • Docker 容器

        • Docker 简介
        • Docker 安装与配置
        • Docker 命令
        • Docker 部署 Nginx
        • Docker 部署 MySQL
        • Docker 部署 Redis
      • 服务器

        • 塔式服务器
        • 机架式服务器
        • 刀片服务器
      • Git 版本控制
      • Jenkins 持续集成
      • Jmeter 性能测试
      • Let's Encrypt 免费SSL证书
    • 简历

      • 项目经理简历
      • 开发工程师简历

路由器详解

什么是路由器?

路由器(Router)是一种网络设备,主要用于连接两个或多个不同的网络,并在这些网络之间转发数据包。它工作在网络层(OSI 模型的第 3 层),主要根据 IP 地址进行数据包的转发决策。可以将路由器想象成交通指挥中心,负责决定数据包从一个网络到另一个网络的最佳路径。

示例

HSV

假如现在 A 给 B 设备发送数据,首先要,如果源 IP 与目的 IP 处于一个子网,直接将包通过交换机发出去。

HSV

但假如 A 给 C 发送数据,A 就需要先转交给路由器,然后再由路由器转交给 C。由于最底层的传输仍然需要依赖以太网,所以数据包是分成两段的。

A -> 路由器这段的包如下:

HSV

路由器 -> C 这段的包如下:

HSV

上面就完成了 A 和 C 的通讯

假如某台机器的子网掩码定为 255.255.255.0

这表示,将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网,就这么简单。

比如:

  • A 电脑:192.168.0.1 & 255.255.255.0 = 192.168.0.0
  • B 电脑:192.168.0.2 & 255.255.255.0 = 192.168.0.0
  • C 电脑:192.168.1.1 & 255.255.255.0 = 192.168.1.0
  • D 电脑:192.168.1.2 & 255.255.255.0 = 192.168.1.0

答案:在 A 上要设置默认网关

上一步 A 通过是否与 C 在同一个子网内,判断出自己应该把包发给路由器,那路由器的 IP 是多少呢?

其实说发给路由器不准确,应该说 A 会把包发给默认网关。

对 A 来说,A 只能直接把包发给同处于一个子网下的某个 IP 上,所以发给路由器还是发给某个电脑,对 A 来说也不关心,只要这个设备有个 IP 地址就行。

核心

路由器如何知道 C 在哪里?

路由器内部维护一张路由表,记录了到达不同网络的最佳路径信息:

目的地址子网掩码下一跳地址端口
192.168.0.0255.255.255.00
192.168.0.254255.255.255.2550
192.168.1.0255.255.255.01
192.168.1.254255.255.255.2551

这就很好理解了,路由表就表示,192.168.0.xxx 这个子网下的,都转发到 0 号端口,192.168.1.xxx 这个子网下的,都转发到 1 号端口。

网络拓扑图

HSV

路由器工作原理

1. 路由表的构建与维护

路由器通过以下方式构建和维护路由表:

  1. 静态路由:由网络管理员手动配置的固定路由
  2. 动态路由:通过路由协议自动学习,如 RIP、OSPF、BGP 等
  3. 默认路由:当没有匹配的路由条目时使用的路由,通常指向互联网

路由表包含以下关键信息:

  • 目标网络/子网
  • 下一跳地址
  • 出口接口
  • 度量值/优先级

2. 数据包转发过程

当数据包到达路由器时:

  1. 接收数据包:路由器从接口接收数据包
  2. 检查目标 IP:提取数据包中的目标 IP 地址
  3. 查询路由表:找到匹配目标网络的最佳路由条目
  4. 转发决策:
    • 若找到匹配路由,则将数据包发送到对应的下一跳
    • 若找到多个匹配,选择最长前缀匹配的路由
    • 若没有匹配,使用默认路由
    • 若无默认路由,丢弃数据包并返回 ICMP 错误消息

3. 路由协议

路由器使用各种路由协议来交换路由信息:

内部网关协议(IGP)

  • RIP(路由信息协议):基于跳数的简单协议,最大跳数为 15
  • OSPF(开放最短路径优先):基于链路状态的协议,计算最短路径树
  • EIGRP(增强型内部网关路由协议):思科专有协议,结合距离矢量和链路状态特性

外部网关协议(EGP)

  • BGP(边界网关协议):互联网核心协议,连接不同自治系统(AS)

路由器与交换机的区别

特性路由器交换机
工作层次网络层(第 3 层)数据链路层(第 2 层)
决策依据IP 地址MAC 地址
主要功能连接不同网络连接同一网络内的设备
维护的表路由表MAC 地址表
广播处理隔离广播域转发广播帧
安全性较高,可提供防火墙功能基本安全功能
配置复杂度复杂相对简单
价格较高相对较低

路由器与交换机在网络中的位置

在典型的企业网络架构中:

  • 交换机主要用于连接同一网段内的终端设备(工作站、服务器等)
  • 路由器负责连接不同网段,以及连接内部网络与外部网络(如互联网)

路由器主要特性

1. NAT(网络地址转换)

NAT 允许多台内网设备共享一个公网 IP 地址,主要功能包括:

  • 地址节约:缓解 IPv4 地址短缺
  • 网络隐藏:隐藏内部网络结构,提高安全性
  • 地址映射:支持端口转发,使外部可以访问内部服务

2. 防火墙功能

现代路由器通常集成防火墙功能:

  • 包过滤:根据 IP 地址、端口号等过滤数据包
  • 状态检测:跟踪连接状态,提供更智能的保护
  • 应用层网关:检查应用层数据,阻止特定类型的攻击

3. QoS(服务质量)

QoS 机制允许路由器优先处理特定类型的流量:

  • 流量分类:识别不同类型的网络流量
  • 带宽分配:为关键应用保证最低带宽
  • 流量整形:平滑流量突发,减少网络拥塞

4. VPN 支持

许多路由器支持虚拟专用网络功能:

  • 站点到站点 VPN:连接不同地点的网络
  • 远程访问 VPN:允许远程用户安全访问内部网络
  • 加密隧道:保护数据在公共网络中的传输安全

路由器类型

1. 按用途分类

  • 家用/小型办公路由器:功能基本,价格低廉,易于设置
  • 企业级路由器:功能丰富,高可靠性,支持复杂配置
  • 核心路由器:超高性能,用于互联网骨干网或大型数据中心
  • 边缘路由器:连接企业网络与外部网络

2. 按连接类型分类

  • 有线路由器:主要通过有线接口连接
  • 无线路由器:集成 Wi-Fi 功能,支持无线连接
  • 3G/4G/5G 路由器:使用移动网络连接互联网

路由器与交换机协同工作

在现代网络中,路由器和交换机通常协同工作:

  1. 分层网络设计:

    • 接入层:主要使用交换机连接终端设备
    • 汇聚层:使用交换机或三层交换机,提供部门间连接
    • 核心层:使用高性能路由器或三层交换机,提供网络间连接
  2. VLAN 间路由:

    • 交换机创建虚拟局域网(VLAN)分隔广播域
    • 路由器(或三层交换机)负责 VLAN 间通信
  3. 网络扩展:

    • 当网络规模扩大时,添加更多交换机可以增加端口数量
    • 添加路由器可以划分更多的网络段,控制广播域大小

路由器选购要点

  1. 端口类型和数量:根据需要连接的网络和设备选择
  2. 性能参数:
    • 处理器和内存:影响路由表大小和处理能力
    • 吞吐量:最大数据处理能力,通常以 Mbps 或 Gbps 为单位
  3. 功能需求:
    • VPN 支持
    • 防火墙功能
    • QoS 能力
    • 无线功能(如 802.11ac/ax)
  4. 可靠性:企业环境需考虑冗余电源、风扇等
  5. 可管理性:配置界面友好性、远程管理支持

常见应用场景

1. 家庭网络

  • 连接家中设备到互联网
  • 提供无线接入
  • 基本的安全保护(NAT、简单防火墙)
  • 家长控制/访问限制

2. 小型办公室

  • 共享互联网连接
  • 建立内部网络
  • 基本 VPN 支持
  • 简单的 QoS 设置(优先业务应用)

3. 大型企业网络

  • 连接多个部门/楼层网络
  • 实施复杂的路由策略
  • 高级安全防护
  • 高可用性配置(如 HSRP、VRRP)
  • 广域网连接(MPLS、SD-WAN 等)

4. 互联网服务提供商(ISP)

  • 高性能骨干路由
  • BGP 路由全表处理
  • 流量工程与优化
  • 大规模 NAT(CGNAT)

常见故障排查

  1. 无法连接互联网

    • 检查 WAN 接口状态和配置
    • 验证 ISP 提供的网关地址
    • 测试 DNS 服务器连通性
  2. 内网设备无法互相访问

    • 检查内网 IP 地址分配
    • 验证子网掩码配置
    • 检查交换机连接状态
  3. 设备可以连接但速度慢

    • 检查带宽使用情况
    • 排查是否存在 QoS 限制
    • 分析路由器 CPU 和内存使用率
  4. VPN 连接问题

    • 验证 VPN 配置参数
    • 检查防火墙规则
    • 测试底层连接性

未来趋势

1. 软件定义网络(SDN)

SDN 将网络控制逻辑与转发功能分离,使网络设备可编程化,提高灵活性和管理效率。

2. 边缘计算

路由器正在演变为边缘计算节点,能够在网络边缘处理数据,减少延迟并降低带宽需求。

3. 智能路由

AI 和机器学习技术的应用使路由器能够智能分析流量模式,自动优化路由决策和安全策略。

4. 5G 集成

新一代路由器将更深入地集成 5G 技术,提供更灵活的连接选项和故障转移能力。

总结

路由器是现代网络基础设施的核心组件,负责在不同网络之间转发数据并做出智能路由决策。与工作在数据链路层的交换机相比,路由器工作在网络层,使用 IP 地址而非 MAC 地址进行决策,能够连接不同的网络并隔离广播域。

在网络设计中,路由器和交换机通常协同工作,各司其职:交换机提供高性能的局部网络连接,路由器则负责跨网络通信和互联网接入。了解这两种设备的特点和工作原理,对于构建高效、安全、可靠的网络至关重要。

最近更新:: 2025/8/14 09:20
Contributors: Duke
Prev
交换机
Next
TCP/IP协议