是否有一个选项或命令可用于在linux中禁用/卸载/或停止tcp/IP堆栈。需要它在服务器应用程序中实现用户空间tcp吗
我正在开发一个C程序,它使用是否有一个选项或命令可用于在linux中禁用/卸载/或停止tcp/IP堆栈。需要它在服务器应用程序中实现用户空间tcp吗,c,linux,tcp,raw-sockets,C,Linux,Tcp,Raw Sockets,我正在开发一个C程序,它使用sockets在我正在开发的服务器应用程序中实现tcp网络。我想知道是否可以禁用内核的tcp/ip堆栈,这样我的系统就不会干扰传入的连接同步请求和ip数据包 或者我必须编译内核来禁用它,请告诉我是否是这样 关于这个问题 上面说 还请注意,如果您试图发送原始tcp/udp数据包,您将遇到的一个问题是禁用网络堆栈自动处理回复(将其视为已寻址到现有IP地址或尝试转发) 如果是这样,那怎么可能呢 或者Linux中是否有任何工具或程序可以用来实现这一点 当然,有一种违反直觉的方
sockets
在我正在开发的服务器应用程序中实现tcp网络。我想知道是否可以禁用内核的tcp/ip堆栈,这样我的系统就不会干扰传入的连接同步请求和ip数据包
或者我必须编译内核来禁用它,请告诉我是否是这样
关于这个问题
上面说
还请注意,如果您试图发送原始tcp/udp数据包,您将遇到的一个问题是禁用网络堆栈自动处理回复(将其视为已寻址到现有IP地址或尝试转发)
如果是这样,那怎么可能呢
或者Linux中是否有任何工具或程序可以用来实现这一点
当然,有一种违反直觉的方法,即使用额外的网络功能来禁用正常的网络功能:netfilter。有一些iptables匹配/目标可能对您有利(例如,“所有者”匹配可能基于PID或UID拒绝或接受)。这仍然意味着功能在内核中,它只是限制了它
如果有人从上面知道如何做到这一点,那么有任何命令吗?好吧,您可以自己编译一个内核,而无需联网:) 有几个选择
igb_UIO | UIO_pci |通用| vfio pci
。这样就消除了内核堆栈[根据注释编辑]用户空间TCP-IP堆栈具有自定义的sock API,可读取/写入套接字。因此,无论是LD_预加载还是源文件更改,都可以使用相同的应用程序。如果我编译内核时没有联网,那么我仍然可以将套接字api与原始套接字或数据包MMAP一起使用吗?发送和接收数据包?我建议使用netfilter将相关的接收数据包发送到用户空间,从而绕过这些数据包的正常TCP处理@吉米。我可以在netfilter
C
程序中获取以太网帧吗?我不确定。您是否真的需要以太网封装,或者IP数据包是否足够好,这是您可以确定的@好的,我现在想起来了。netfilter操作IP后碎片整理,因此它将为您提供完整的IP数据包,而不是片段。如果您想要以太网帧,除了TCP和netfilter之外,实际上还必须实现IP(包括片段重组)。最简单的方法是使用iptables丢弃目标。但当客户端发送一个SYN时,您必须返回一个SYN,ACK。必须有人来实现TCP。