首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux内核中原始套接字的工作

Linux内核中原始套接字的工作
EN

Stack Overflow用户
提问于 2020-02-25 05:40:34
回答 1查看 641关注 0票数 1

我正致力于将linux内核的流量控制层集成到自定义用户级别的网络堆栈中。我使用原始套接字来做同样的事情。我的问题是,如果我们在AF_PACKETRAW_SOCKIPPROTO_RAW中使用原始套接字,是否会调用dev_queue_xmit (据我所知,dev_queue_xmit是排队层的起点)?还是套接字接口直接调用网卡驱动程序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-25 07:16:52

  • SOCK_RAW表示用户空间程序应该接收message.
  • IPPROTO_RAW中的L2 (链路层)报头,对于L3 (IP)报头应用相同。

用户空间程序将SOCK_RAW, IPPROTO_RAW设置为手动解析或/和组合数据包的协议报头。它保证内核在访问/离开用户空间的过程中不会修改相应的层头。原始套接字不会改变数据包接收或传输的方式--这些套接字会像往常一样排队。从网络驱动程序的角度来看,设置头(用户空间(原始套接字)或内核(例如,SOCK_DGRAM)并不重要。

请记住,获取原始数据包需要CAP_NET_RAW功能-通常,程序需要以超级用户权限运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60388148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档