Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller — SKB
Posted 范桂飓
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller — SKB相关的知识,希望对你有一定的参考价值。
目录
文章目录
sk_buff(SKB,Socket Buffer)
Linux 内核中,用 sk_buff 来描述一个数据缓存空间。所谓分配缓存空间,就是建立一定数量的 sk_buff 实例。
sk_buff 是 Linux 内核网络协议栈实现中最重要的 Struct(结构体),定义在 include/linux/skbuff.h 文件中,它是数据报文在 Kernel 中的代码表现形式。
sk_buff 的结构它保存数据报文的结构为一个双向链表,如下所示:
收包
当 NIC 接收到数据帧时,DMA 会自动将数据写入 RAM 并通知 CPU 处理,CPU 通过中断或轮询的方式发现有数据帧接收进来后,再将数据帧保存到 sk_buff 缓冲区中,并通过 Socket 接口读出来。流程图如下所示:
以上是关于Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller — SKB的主要内容,如果未能解决你的问题,请参考以下文章
Linux Kernel TCP/IP Stack — L4 Layer
Linux Kernel TCP/IP Stack — 协议栈发包处理流程
Linux Kernel TCP/IP Stack — Overview
Linux Kernel TCP/IP Stack — Overview