1、数据从外部到达网卡
    2、网卡把数据DMA到内存
    3、对CPU发出硬中断,通知CPU处理
    4、CPU响应硬中断,发出软中断
    5、kssoftirqd进程处理软中断,调用网卡驱动收包
    6、保存为skb
    7、协议层处理skb
    8、放入socket接收队列
    9、唤醒阻塞的用户程序

    网络通信
    1、创建kssoftirqd进程(数量为CPU核心数,每个CPU一个)
    2、网络子系统初始化,softnet数据结构
    3、协议栈的注册,inet_proto(tcp,udp),ptype(ipv4,ipc6)
    4、网卡驱动初始化和网卡的启动
    5、创建socket套接字
    5.1、和Linux文件系统挂钩,生成fd
    5.2、socket初始化(与协议栈相关,找到相关协议,初始化socket,接收队列,缓冲区)
    6、修改softnet_data,告诉设备有外部数据来了
    7、注册软中断处理函数,将网卡DMA的内存中数据放入到协议栈中处理
    8、协议栈处理完数据后交给socket接收缓冲区