Sockets linux内核中tcp处理后的数据包处理

Sockets linux内核中tcp处理后的数据包处理,sockets,tcp,queue,packet,Sockets,Tcp,Queue,Packet,我想在完成数据包的tcp处理之后,在将数据包提供给用户空间(或添加到套接字接收队列)之前,调用我的函数来处理用户数据。在linux内核中有没有同样的方法? 谢谢首先,数据包不是通过TCP发送到用户空间的。只发送数据(字节)。如果要截取数据,可以: 编写自己的内核代码并拦截系统调用(以及可能的内部TCP函数,如TCP\u input) 使用允许您截获数据包的Netlink套接字(及其所有头) 如果有转接插座,请使用转接插座(同上) 使用原始套接字(您获得数据包的副本,并且您无法更改它们或阻止它们

我想在完成数据包的tcp处理之后,在将数据包提供给用户空间(或添加到套接字接收队列)之前,调用我的函数来处理用户数据。在linux内核中有没有同样的方法?
谢谢

首先,数据包不是通过
TCP
发送到用户空间的。只发送数据(字节)。如果要截取数据,可以:

  • 编写自己的内核代码并拦截系统调用(以及可能的内部TCP函数,如
    TCP\u input
  • 使用允许您截获数据包的Netlink套接字(及其所有头)
  • 如果有转接插座,请使用转接插座(同上)
  • 使用原始套接字(您获得数据包的副本,并且您无法更改它们或阻止它们传播)