Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller — SKB

举报
云物互联 发表于 2021/08/06 01:41:46 2021/08/06
【摘要】 目录 文章目录 目录 sk_buff(SKB,Socket Buffer) 收包 发包 sk_buff(SKB,Socket Buffer) Linux 内核中,用 sk_buff 来描述一个数据缓存空间。所谓分配缓存空间,就是建立一定数量的 sk_buff 实例。 sk_buff 是 Linux 内核网络协议栈实...

目录

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 接口读出来。流程图如下所示:

文章来源: is-cloud.blog.csdn.net,作者:范桂飓,版权归原作者所有,如需转载,请联系作者。

原文链接:is-cloud.blog.csdn.net/article/details/118701186

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。