当前位置:首页>Linux>Linux 网络子系统源码剖析(一):总览与初始化

Linux 网络子系统源码剖析(一):总览与初始化

  • 2026-03-21 01:28:43
Linux 网络子系统源码剖析(一):总览与初始化

从宏观到微观,揭开 Linux 网络子系统的神秘面纱

系列:Linux 网络子系统源码剖析篇号:第 1 篇 内核版本:Linux 5.10 LTS

📋 本篇导读

你将学到

  • Linux 网络子系统的整体架构

  • 核心数据结构及其关系

  • 网络子系统的初始化流程

  • 协议栈的注册机制

  • 网络设备的注册流程

前置知识

  • C 语言基础

  • Linux 内核模块编程基础

  • 基本的网络协议知识(TCP/IP)

阅读时间

约 30-40 分钟


🎯 网络子系统架构总览

分层架构

Linux 网络子系统采用经典的分层设计,与 OSI 七层模型对应:

核心组件


🔑 核心数据结构

1. struct net_device - 网络设备

这是网络子系统中最重要的结构之一,代表一个网络设备(网卡)。

关键字段说明

2. struct sk_buff - 数据包缓冲区

sk_buff(socket buffer)是网络子系统中最核心的数据结构,代表一个网络数据包。

sk_buff 内存布局

3. struct socket - 套接字

socket 是用户空间和内核空间的接口,代表一个套接字。

// include/linux/net.h
struct socket {
socket_state state;                // socket 状态
short type;                        // socket 类型(SOCK_STREAM/SOCK_DGRAM)
unsigned long flags;               // socket 标志
struct file *file;                 // 关联的文件对象
struct sock *sk;                   // 关联的传输层 sock
conststruct proto_ops *ops;       // 协议操作函数集
};

4. struct sock - 传输层套接字

sock 是传输层的核心结构,包含协议相关的信息。

数据结构关系图


🚀 网络子系统初始化流程

初始化时序图

1. net_dev_init() - 网络设备子系统初始化

这是网络子系统初始化的第一步,在 core_initcall 阶段执行。

源码位置net/core/dev.c

/*

 * 网络设备子系统初始化

 * 这个函数在内核启动早期被调用

 */

static int __init net_dev_init(void)

{

    int i, rc = -ENOMEM;

    // ========== 1. 初始化设备索引哈希表 ==========

    /*

     * 设备索引哈希表用于快速查找网络设备

     * 通过设备索引(ifindex)可以快速找到对应的 net_device

     */

    if (dev_proc_init())

        goto out;

    // ========== 2. 初始化 Netlink 接口 ==========

    /*

     * Netlink 是内核与用户空间通信的机制

     * 用于配置网络设备、路由等

     */

    if (netdev_kobject_init())

        goto out;

    // ========== 3. 初始化协议处理器链表 ==========

    /*

     * 每种协议(IP、ARP 等)都有一个处理器

     * 这里初始化协议处理器链表

     */

    INIT_LIST_HEAD(&ptype_all);

    for (i = 0; i < PTYPE_HASH_SIZE; i++)

        INIT_LIST_HEAD(&ptype_base[i]);

    // ========== 4. 初始化 NAPI 相关 ==========

    /*

     * NAPI(New API)是高效的数据包接收机制

     * 为每个 CPU 初始化 NAPI 相关的数据结构

     */

    for_each_possible_cpu(i) {

        struct softnet_data *sd = &per_cpu(softnet_data, i);

        // 初始化输入队列

        skb_queue_head_init(&sd->input_pkt_queue);

        skb_queue_head_init(&sd->process_queue);

        // 初始化 NAPI 链表

        INIT_LIST_HEAD(&sd->poll_list);

        // 初始化输出队列

        sd->output_queue = NULL;

        sd->output_queue_tailp = &sd->output_queue;

        // 初始化 RPS(Receive Packet Steering)

#ifdef CONFIG_RPS

        sd->csd.func = rps_trigger_softirq;

        sd->csd.info = sd;

        sd->cpu = i;

#endif

        // 初始化反压机制

        sd->backlog.poll = process_backlog;

        sd->backlog.weight = weight_p;

    }

    // ========== 5. 注册网络软中断 ==========

    /*

     * 网络数据包的接收和发送通过软中断处理

     * NET_TX_SOFTIRQ: 发送软中断

     * NET_RX_SOFTIRQ: 接收软中断

     */

    open_softirq(NET_TX_SOFTIRQ, net_tx_action);

    open_softirq(NET_RX_SOFTIRQ, net_rx_action);

    // ========== 6. 注册 CPU 热插拔通知 ==========

    /*

     * 当 CPU 热插拔时,需要迁移网络相关的数据结构

     */

    rc = cpuhp_setup_state_nocalls(CPUHP_NET_DEV_DEAD, "net/dev:dead",

                                    NULL, dev_cpu_dead);

    WARN_ON(rc < 0);

    rc = 0;

out:

    return rc;

}

// 使用 subsys_initcall 宏注册初始化函数

// 这确保它在内核启动的 subsys 阶段被调用

subsys_initcall(net_dev_init);

关键点解析

  1. 协议处理器链表

  1. softnet_data - 每 CPU 的网络数据

// 每个 CPU 都有一个 softnet_data 实例

struct softnet_data {

    struct sk_buff_head input_pkt_queue;   // 输入队列

    struct sk_buff_head process_queue;     // 处理队列

    struct list_head poll_list;            // NAPI 轮询链表

    struct sk_buff *output_queue;          // 输出队列

    struct napi_struct backlog;            // 反压 NAPI

#ifdef CONFIG_RPS

    struct softnet_data *rps_ipi_list;     // RPS IPI 链表

    struct call_single_data csd;           // 跨 CPU 调用

#endif

};

2. inet_init() - TCP/IP 协议栈初始化

这是 TCP/IP 协议栈的初始化函数,在 fs_initcall 阶段执行。

源码位置net/ipv4/af_inet.c

协议注册详解

// TCP 协议定义
struct prototcp_prot = {
    .name="TCP",
    .owner=THIS_MODULE,
    .close=tcp_close,
    .connect=tcp_v4_connect,
    .disconnect=tcp_disconnect,
    .accept=inet_csk_accept,
    .ioctl=tcp_ioctl,
    .init=tcp_v4_init_sock,
    .destroy=tcp_v4_destroy_sock,
    .shutdown=tcp_shutdown,
    .setsockopt=tcp_setsockopt,
    .getsockopt=tcp_getsockopt,
    .sendmsg=tcp_sendmsg,
    .recvmsg=tcp_recvmsg,
    .backlog_rcv=tcp_v4_do_rcv,
    .hash=inet_hash,
    .unhash=inet_unhash,
    .get_port=inet_csk_get_port,
// ... 更多操作函数
};
// INET 协议族操作
static const struct net_proto_family inet_family_ops= {
    .family=PF_INET,
    .create=inet_create,  // 创建 socket 的函数
    .owner=THIS_MODULE,
};
// INET 协议切换表
statics truct inet_protos winetsw_array[] = {
    {
        .type=SOCK_STREAM,
        .protocol=IPPROTO_TCP,
        .prot=&tcp_prot,
        .ops=&inet_stream_ops,
        .flags=INET_PROTOSW_PERMANENT|INET_PROTOSW_ICSK,
    },
    {
        .type=SOCK_DGRAM,
        .protocol=IPPROTO_UDP,
        .prot=&udp_prot,
        .ops=&inet_dgram_ops,
        .flags=INET_PROTOSW_PERMANENT,
    },
    {
        .type=SOCK_RAW,
        .protocol=IPPROTO_IP,
        .prot=&raw_prot,
        .ops=&inet_sockraw_ops,
        .flags=INET_PROTOSW_REUSE,
    }
};

3. 协议栈注册机制

协议注册流程

协议查找机制

查找流程图

socket(AF_INET, SOCK_STREAM, 0)
        ↓
查找协议族:net_families[AF_INET]
        ↓
    inet_family_ops
        ↓
调用 inet_create()
        ↓
查找协议切换表:inetsw[SOCK_STREAM]
        ↓
找到 TCP 协议:
    • ops = inet_stream_ops
    • prot = tcp_prot
        ↓
分配 sock 并初始化
        ↓
返回 socket 文件描述符

🔧 网络设备注册流程

设备注册时序

设备注册源码分析

设备查找机制

设备哈希表结构


🌍 网络命名空间

命名空间概念

网络命名空间(Network Namespace)提供了网络资源的隔离,是容器技术的基础。

命名空间隔离


📊 实战案例

案例 1:查看网络子系统初始化日志

# 查看内核启动日志中的网络初始化信息
dmesg | grep-E"net|eth|TCP|UDP"
# 输出示例
[    0.123456] NET: Registered protocol family 16
[    0.234567] NET: Registered protocol family 2# AF_INET
[    0.345678] TCP established hash table entries: 32768
[    0.456789] TCP bind hash table entries: 32768
[    0.567890] TCP: Hash tables configured
[    0.678901] UDP hash table entries: 2048
[    1.234567] eth0: registered as netdev

案例 2:查看已注册的协议

案例 3:查看网络设备信息

案例 4:查看软中断统计

案例 5:编写简单的协议处理器


📚 总结

核心要点回顾

  1. 分层架构

    • Linux 网络子系统采用分层设计

    • 从应用层到物理层,职责清晰

    • 各层通过标准接口通信

  2. 核心数据结构

    • net_device:网络设备

    • sk_buff:数据包缓冲区

    • socket:用户空间接口

    • sock:传输层套接字

  3. 初始化流程

    • net_dev_init():设备子系统初始化

    • inet_init():TCP/IP 协议栈初始化

    • 协议注册:建立协议到处理函数的映射

  4. 设备注册

    • alloc_netdev():分配设备

    • register_netdev():注册设备

    • 设备通过哈希表快速查找

  5. 网络命名空间

    • 提供网络资源隔离

    • 容器技术的基础

    • 每个命名空间有独立的网络栈

常见问题 FAQ

Q1:为什么需要 sk_buff?A:sk_buff 提供了统一的数据包表示,支持高效的内存管理、零拷贝、分片等特性。

Q2:NAPI 是什么?A:NAPI(New API)是一种高效的数据包接收机制,通过轮询减少中断开销。

Q3:如何查看网络设备的驱动?A:使用 ethtool -i <interface> 命令。

Q4:网络命名空间有什么用?A:提供网络资源隔离,是 Docker、Kubernetes 等容器技术的基础。

Q5:如何调试网络子系统?A:可以使用 printk、ftrace、eBPF、tcpdump 等工具。

下篇预告

在下一篇《sk_buff 深度解析》中,我们将深入探讨:

  • sk_buff 的内存布局和管理

  • sk_buff 的生命周期

  • 数据操作函数的实现

  • 分片、克隆、线性化等高级特性

  • 性能优化技巧


📖 参考资料

源码位置

内核文档

  • Linux Networking Documentation

  • Network Devices

  • sk_buff

推荐阅读

  • 《Understanding Linux Network Internals》by Christian Benvenuti

  • 《Linux Kernel Networking》by Rami Rosen

  • 《TCP/IP Illustrated, Volume 2》by Gary R. Wright

在线资源

  • LWN.net - Networking

  • Kernel Newbies - Networking

  • Linux Network Stack


作者:肇中系列:Linux 网络子系统源码剖析

网络子系统是 Linux 内核最复杂的子系统之一,但只要掌握了核心概念和数据结构,就能逐步深入理解其实现细节。


💬 读者互动

如果你有任何问题或建议,欢迎在评论区留言讨论!

下期预告:《sk_buff 深度解析》- 揭秘网络数据包的秘密

关注我,获取更多 Linux 内核技术文章!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 11:29:42 HTTP/2.0 GET : https://f.mffb.com.cn/a/480986.html
  2. 运行时间 : 0.164593s [ 吞吐率:6.08req/s ] 内存消耗:4,659.43kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=9c5862bc5a434c51454ce86cfac6e797
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001289s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.002034s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000793s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000731s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001808s ]
  6. SELECT * FROM `set` [ RunTime:0.000648s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.002057s ]
  8. SELECT * FROM `article` WHERE `id` = 480986 LIMIT 1 [ RunTime:0.002404s ]
  9. UPDATE `article` SET `lasttime` = 1774582182 WHERE `id` = 480986 [ RunTime:0.018360s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000709s ]
  11. SELECT * FROM `article` WHERE `id` < 480986 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001309s ]
  12. SELECT * FROM `article` WHERE `id` > 480986 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001153s ]
  13. SELECT * FROM `article` WHERE `id` < 480986 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003267s ]
  14. SELECT * FROM `article` WHERE `id` < 480986 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003336s ]
  15. SELECT * FROM `article` WHERE `id` < 480986 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002801s ]
0.168348s