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

新泽西州

我正在将linux内核的流量控制层集成到自定义用户级网络堆栈中。我正在使用原始套接字执行相同的操作。我的问题是,如果我们将原始套接字与AF_PACKETRAW_SOCK和一起使用IPPROTO_RAW,是否会调用dev_queue_xmit(就我所读,该函数是队列层的起点)?还是套接字接口直接调用网卡驱动程序?

  • SOCK_RAW 指示用户空间程序应在消息中接收L2(链路层)头。
  • IPPROTO_RAW 对L3(IP)标头应用相同的内容。

用户空间程序设置SOCK_RAW, IPPROTO_RAW为手动解析或/和组成数据包的协议标头。它保证了内核在去往/离开用户空间的过程中不会修改相应的层头。原始套接字不会改变数据包的接收或传输方式,它们像往常一样排队。从网络驱动程序的角度来看,谁设置头无关紧要-用户空间(原始套接字)还是内核(例如SOCK_DGRAM)。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止内核处理绑定到原始套接字的TCP段

来自分类Dev

无法在具有特定IP和端口的Linux机器上使用Python使原始UDP套接字正常工作

来自分类Dev

使用Linux原始套接字捕获PTP数据包

来自分类Dev

原始套接字多播

来自分类Dev

Perl套接字的工作

来自分类Dev

带有原始套接字的python套接字setsockopt

来自分类Dev

检测Linux内核的AF_ALG套接字是否可用于用户级加密?

来自分类Dev

Linux内核模块:套接字缓冲区(sk_buff-> len)不确定行为

来自分类Dev

如何在Linux内核中找到sk_buff的所有者套接字?

来自分类Dev

在Linux内核中设置套接字出站端口号

来自分类Dev

FIFO,管道和Unix域套接字在Linux内核中是否相同?

来自分类Dev

如何在Linux内核中增加套接字内存分配

来自分类Dev

Linux 内核 IPv4 和 IPv6 套接字创建:EPROTONOSUPPORT 和 ESOCKTNOSUPPORT 错误

来自分类Dev

获取内核中套接字事件的通知

来自分类Dev

在Linux中将过滤器附加到原始套接字

来自分类Dev

Python:在OSX中使用原始套接字

来自分类Dev

原始套接字未收到icmp响应

来自分类Dev

Golang的原始套接字嗅探

来自分类Dev

使用原始套接字的ping请求失败

来自分类Dev

在原始套接字中连接功能?

来自分类Dev

Linux上的套接字可以工作,但不能在osx上工作

来自分类Dev

从Linux套接字读取“ varint”

来自分类Dev

UNIX套接字权限(Linux)

来自分类Dev

Linux命名套接字howto

来自分类Dev

Linux中的套接字连接

来自分类Dev

linux套接字:在C中关闭套接字

来自分类Dev

从电影中原始提取帧

来自分类Dev

套接字工作太慢:: Java / libgdx

来自分类Dev

套接字:点对点聊天如何工作?

Related 相关文章

热门标签

归档