0

我想获取每个接收到的 TCP 数据包(发往特定程序,即端口)的 TCP 标头,似乎无法使用 recv() 或 recvfrom() 使用常规套接字获取 TCP 标头。

所以,我想使用原始套接字和原始套接字,如果主机接收到很多数据包,我可以使用 recvfrom() 接收所有发往主机的 IP 数据包,我需要检查每个数据包的端口号,看看它是否是需要的。那么它可能是非常耗时和 CPU 消耗?

while()
{
recvfrom();
check_port_number(); 
}

有什么好方法可以获取收到的 tcp 数据包的 tcp 标头?我正在使用 linux c,所以解决方案应该是基于 linux c 的。谢谢!

4

1 回答 1

0

您想使用libpcap API,而不是套接字 API。libpcap 让您可以直接从网络上读取数据包。

另一个可以用来简化数据包解析的库是 libnet。

于 2013-03-14T23:39:33.553 回答